Compare commits

...

92 Commits

Author SHA1 Message Date
doloro d10b195c7e meow 2026-04-30 11:43:18 +01:00
doloro 119148c764 swapped out flake 2026-04-30 11:35:18 +01:00
doloro ed8f2b4499 bump: nix flake update 2026-04-30 11:33:33 +01:00
doloro ecdf754a3c kernal peram add to laptop 2026-04-28 13:30:21 +01:00
doloro 8b29dff48f add: ai to desktop 2026-04-28 13:30:12 +01:00
doloro 2cdcb0d9e7 add: ai modular 2026-04-27 14:46:45 +01:00
doloro 1ca6b68089 meow 2026-04-27 13:08:11 +01:00
doloro d0fb5e86c3 meow 2026-04-27 13:07:42 +01:00
doloro 75fbc04c65 nix flake update 2026-04-26 00:00:52 +01:00
doloro e759d97779 change 2026-04-24 00:12:21 +01:00
doloro dc2be45e90 change(laptop): disable cpu parking 2026-04-23 09:17:21 +01:00
doloro 495e4752bd test: add: tlp to laptop 2026-04-23 09:06:46 +01:00
doloro 1bc9f0460d nix flake update 2026-04-22 19:17:43 +01:00
doloro 9f11a3974d added(nvim): css lsp 2026-04-21 13:29:20 +01:00
doloro f7bcc0913a nikkuss: Paws 2026-04-19 21:05:37 +01:00
doloro a33720a44f changes 2026-04-19 21:00:02 +01:00
doloro 51ec1e2fef bwa 2026-04-18 18:15:37 +01:00
doloro e5196e4e72 nix flake update 2026-04-18 18:05:57 +01:00
doloro 1cf837cd65 meow 2026-04-11 19:07:55 +01:00
doloro 8a477b4971 locked den to 0.15.0..... 2026-04-11 06:31:32 +01:00
doloro a808aae26a locked den to 0.15.0 2026-04-11 05:50:32 +01:00
doloro b08e092351 meow 2026-04-10 15:10:16 +01:00
doloro 779d9d1562 meow 2026-04-10 13:36:20 +01:00
doloro e3453983be migrate flake lock 2026-04-10 13:18:28 +01:00
doloro ff1ff5fd1c meow 2026-04-10 13:04:45 +01:00
doloro 1972b5d4da added modules back 2026-04-10 12:35:33 +01:00
doloro 3d49015a7c meow 2026-04-10 01:47:33 +01:00
doloro c1ec0f3fcb stuff 2026-04-10 01:43:55 +01:00
doloro 22e089223a comiot 2026-04-10 01:23:46 +01:00
doloro 1466608418 meow 2026-04-10 01:18:19 +01:00
doloro aa9d3a056f surface wip 2026-04-09 21:38:16 +01:00
doloro 8ca46d9edc nix flake update 2026-04-07 08:22:29 +01:00
doloro 13c29bc696 meow 2026-04-06 14:28:16 +01:00
doloro 1c4be3e470 spotify and nix flake update 2026-04-04 10:23:20 +01:00
doloro a01a2bcc47 "fixed" screenshot 2026-04-02 09:19:03 +01:00
doloro 7feacb5179 nix flake update 2026-04-01 01:24:51 +01:00
doloro 08a56d8455 meow 2026-03-30 10:46:17 +01:00
doloro a5820a0b31 mmio added to tdp controller 2026-03-29 02:00:04 +01:00
doloro 600ef66012 change tdp 2026-03-29 00:27:50 +00:00
doloro 5ab17b8357 meow 2026-03-28 22:39:08 +00:00
doloro 602767d3a9 bwa 2026-03-28 22:25:14 +00:00
doloro f9a39d3f7d added podman module 2026-03-28 21:56:36 +00:00
doloro d2f3e70c38 meow 2026-03-28 18:38:16 +00:00
doloro 9d62bcede6 bwa 2026-03-28 12:46:29 +00:00
doloro a20a2d4ef6 huge nix flake update 2026-03-26 18:16:00 +00:00
doloro 21aed28cf7 Fixed sleep service 2026-03-25 20:39:46 +00:00
doloro 05d30742bd bwa 2026-03-25 20:06:05 +00:00
doloro c441fc6165 bwa 2026-03-25 20:05:10 +00:00
doloro 0cf646c9d3 bwa 2026-03-25 19:57:36 +00:00
doloro a381c4886a yuh 2026-03-25 19:47:04 +00:00
doloro 20ffd3307c guh 2026-03-25 18:59:14 +00:00
doloro 9bdcd24b29 laptop 2026-03-25 18:57:06 +00:00
doloro fbf8265a08 changes 2026-03-23 10:06:17 +00:00
doloro 9ef5bb82c6 nix flake update and more 2026-03-23 10:05:06 +00:00
doloro 471478ed6b meow 2026-03-20 01:05:48 +00:00
doloro 5d01659350 added new scx 2026-03-20 00:45:40 +00:00
doloro d202d116c0 cachyos added 2026-03-20 00:36:34 +00:00
doloro 5749c06b20 cachy kernel test 2026-03-20 00:31:05 +00:00
doloro cdaf170f6f added cachyos cache 2026-03-20 00:14:27 +00:00
doloro 4a4283988f quickshell: updated battery update logic 2026-03-19 12:30:34 +00:00
doloro 4a1e5afd79 meow 2026-03-18 12:09:46 +00:00
doloro 6de66cf1cf nix flake update 2026-03-18 11:21:40 +00:00
doloro d37e468ae8 meow ? 2026-03-18 11:04:59 +00:00
doloro 2797bfee0e meow 2026-03-18 07:28:47 +00:00
doloro 3e19edc73a niri init 2026-03-17 08:23:42 +00:00
doloro bc336fd6cf guh 2026-03-16 23:09:47 +00:00
doloro 8e94344e8a meow 2026-03-16 23:07:48 +00:00
doloro 33e497672a meow 2026-03-15 20:21:52 +00:00
doloro 9b3135c378 quickshell: hides widgets if they dont provide useful information 2026-03-15 20:21:08 +00:00
doloro 7a1caeaaa3 added audio to qs && nix flake update 2026-03-14 15:36:48 +00:00
doloro ccd6b38184 meow 2026-03-14 14:49:15 +00:00
doloro 0ceda0b675 battery/ac target fixes (wip, still needs work) 2026-03-14 11:08:36 +00:00
doloro 8229f20975 gihcomit 2026-03-13 10:24:07 +00:00
doloro 6c33f7f53e *explodes* 2026-03-13 01:04:01 +00:00
doloro 64f2e34018 added battery widget on qs 2026-03-13 00:58:44 +00:00
doloro ea47a2ca71 Wip 2026-03-13 00:51:09 +00:00
doloro 824f75f9cb meow 2026-03-12 17:00:21 +00:00
doloro 77d520e944 added: lavd scx scheduler for more powerefficentcy 2026-03-12 16:57:07 +00:00
doloro 963b45ffa2 more 2026-03-12 11:15:52 +00:00
doloro 52b3f2eb5e guh 2026-03-12 11:02:59 +00:00
doloro b0787ecfd6 guh 2026-03-12 10:47:01 +00:00
doloro 73fcd3619e meow 2026-03-12 09:48:24 +00:00
doloro 119a2433b4 check 2026-03-12 09:48:00 +00:00
doloro cbd3c408e1 qol(qs): scaling based on exists, focused and not 2026-03-11 11:32:07 +00:00
doloro eb593db0c0 sche 2026-03-10 16:53:12 +00:00
doloro 961afbbff7 changes like workspace added to qs and zen as browser 2026-03-10 15:11:12 +00:00
doloro 6f25e849f0 hm fix 2026-03-02 04:07:29 +00:00
doloro 71b1e05b2d nix flake update (+etc) 2026-03-02 04:05:35 +00:00
doloro 320cac603d all 2026-02-23 09:26:58 +00:00
doloro a306a8cb9a meow 2026-02-23 09:25:11 +00:00
doloro db22304952 last resort nix flake update 2026-02-22 16:55:32 +00:00
doloro 79c70eea54 d 2026-02-22 16:46:50 +00:00
52 changed files with 1843 additions and 351 deletions
View File
+2
View File
@@ -9,3 +9,5 @@ creation_rules:
- "age1x3lahhkefkap67cdmdjcqaxan9hp62er78akr79v9m73nvgugpeqk0y32a" # laptop-user-doloro
- "age1exzngtk4d9vcsmcq6ap5xx3ca9qacqjkrv86ymged7msx9z6vfyqsf5sjq" # laptop-system
- "age1fw4xnh2q52juce94ffn54js708cr6umfwpv0mykuddkea7kr4f0q7a9h05" # rpi5
- "age1pa8cecxaw4y4zea6zjnt0k0mz38g4qunmp6trwy5fvdvw88ttcgsv2dgrv" # laptop-surface-user-doloro
- "age1kc0xu0ue2nrrr7w4gam7wlzackv8jv243rxwwndgxjqklgtnp5csdtpgzp" # laptop-surface-system
+21 -3
View File
@@ -2,6 +2,7 @@
den,
__findFile,
modules,
inputs,
...
}:
{
@@ -17,13 +18,23 @@
modules.fonts
<modules/hyprland/doloro-settings>
(modules.obs {
virtual_audio_devices = true;
audio = true;
autostart = true;
})
<modules/common/gaming>
modules.helium
# modules.helium
(<modules/helium> {
default = true;
})
# modules.niri # Testing
modules.stylix
modules.quickshell
modules.nix-ld
modules.spotify
modules.easyeffects
modules.lavd
modules.ai
<modules/ai/ollama-cuda>
];
nixos =
{ config, pkgs, ... }:
@@ -54,10 +65,17 @@
};
};
home.packages = with pkgs; [
legcord
equibop
telegram-desktop
obsidian
# pear-desktop
prismlauncher
deadlock-mod-manager
gamescope
android-studio
];
nixpkgs.config.allowUnfree = true;
programs.home-manager.enable = true;
};
};
}
+5 -2
View File
@@ -2,7 +2,9 @@
den,
modules,
pkgs,
inputs,
__findFile,
lib,
...
}:
{
@@ -25,6 +27,7 @@
networking.hostName = "doloroo-main"; # Define your hostname.
boot.kernelPackages = pkgs.linuxPackages_latest;
boot.initrd.verbose = false;
boot.kernelParams = [
"boot.shell_on_fail"
@@ -80,14 +83,14 @@
# supported GPUs is at:
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
# Only available from driver 515.43.04+
open = false;
open = true;
# Enable the Nvidia settings menu,
# accessible via `nvidia-settings`.
nvidiaSettings = true;
# Optionally, you may need to select the appropriate driver version for your specific GPU.
package = config.boot.kernelPackages.nvidiaPackages.latest;
package = config.boot.kernelPackages.nvidiaPackages.stable;
};
};
+1 -1
View File
@@ -35,7 +35,7 @@
};
};
plainSwap = {
size = "48G";
size = "24G";
content = {
type = "swap";
discardPolicy = "both"; # Both "once" and page discard policies
+12 -10
View File
@@ -16,20 +16,22 @@
}:
{
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [
"xhci_pci"
"thunderbolt"
"vmd"
"nvme"
# (modulesPath + "/hardware/cpu/intel-npu.nix")
# (modulesPath + "/installer/scan/not-detected.nix")
];
# boot.initrd.availableKernelModules = [
# "xhci_pci"
# "thunderbolt"
# "vmd"
# "nvme"
# ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
# boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
# hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
# hardware.cpu.intel.npu.enable = true;
};
};
}
+22 -5
View File
@@ -2,6 +2,7 @@
den,
__findFile,
modules,
lib,
...
}:
{
@@ -13,10 +14,15 @@
<modules/hyprland/doloro-settings>
modules.sops
modules.fish
<modules/zen-browser>
(<modules/helium> {
default = true;
})
modules.kitty
modules.stylix
modules.quickshell
modules.lavd
# modules.podman
# modules.openvivo
];
nixos =
{ config, pkgs, ... }:
@@ -31,19 +37,30 @@
{ pkgs, ... }:
{
wayland.windowManager.hyprland.settings = {
monitor = [
"eDP-1, 2880x1800@120, 0x0, 2"
];
# monitor = [
# "eDP-1, 2880x1800@120, 0x0, 2"
# ];
input = {
kb_layout = "gb";
follow_mouse = 2;
sensitivity = 0;
};
decoration = {
blur = lib.mkForce {
enabled = false;
passes = 1;
new_optimizations = true;
ignore_opacity = false;
};
};
};
home.packages = with pkgs; [
telegram-desktop
legcord
equibop
obsidian
# intel-gpu-tools
brightnessctl
surface-control
];
nixpkgs.config.allowUnfree = true;
};
+76 -24
View File
@@ -2,6 +2,8 @@
den,
modules,
__findFile,
inputs,
lib,
...
}:
{
@@ -9,8 +11,34 @@
includes = [
modules.nix
modules.tuigreet
<modules/common/laptop-power-management>
# <modules/common/laptop-power-management>
modules.fonts
modules.surface-patches
modules.nikpkgs
modules.auto-cpufreq
modules.tlp
# (modules.tdp {
# batt = {
# cpu = {
# long-term = 13;
# short-term = 7;
# };
# mmio = {
# long-term = 10;
# short-term = 7;
# };
# };
# ac = {
# cpu = {
# long-term = 120;
# short-term = 120;
# };
# mmio = {
# long-term = 40;
# short-term = 20;
# };
# };
# })
];
nixos =
{ pkgs, config, ... }:
@@ -18,17 +46,31 @@
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
services.upower.enable = true;
# boot.kernelPackages = pkgs.linuxPackages_6_12; # Hibernate works on 6.12 but not on latest
boot.kernelPackages = pkgs.linuxPackages_zen; # Unpinned the linux version for now.. as i am not using hibernate that often
# boot.kernelPackages = pkgs.linuxPackages_latest; # Unpinned the linux version for now.. as i am not using hibernate that often
# boot.kernelPackages =
# inputs.nix-cachyos-kernel.legacyPackages.x86_64-linux.linuxPackages-cachyos-latest-lto-x86_64-v3;
networking.hostName = "doloro-nixos-laptop"; # Define your hostname.
security.rtkit.enable = true;
# security.rtkit.enable = true;
# Configure network connections interactively with nmcli or nmtui.
networking.networkmanager.enable = true;
boot.initrd = {
systemd = {
enable = true;
emergencyAccess = true;
tpm2.enable = false;
};
};
systemd.units."dev-tpm0.device".enable = false;
systemd.units."dev-tpmrm0.device".enable = false;
# Set your time zone.
# time.timeZone = "Europe/London";
services.automatic-timezoned.enable = true;
networking.wireless.iwd.enable = false;
nix.settings = {
substituters = [
@@ -49,25 +91,27 @@
];
};
services.gnome.gnome-keyring.enable = true;
# services.gnome.gnome-keyring.enable = true;
nixpkgs.config.packageOverrides = pkgs: {
intel-vaapi-driver = pkgs.intel-vaapi-driver.override { enableHybridCodec = true; };
};
hardware = {
# firmware = [ pkgs.intel-npu-driver ];
cpu.intel = {
# npu.enable = true;
};
graphics = {
enable = true;
# https://github.com/intel/libvpl?tab=readme-ov-file#dispatcher-behavior-when-targeting-intel-gpus
extraPackages = with pkgs; [
vpl-gpu-rt
intel-media-driver # VA-API (iHD) userspace
intel-vaapi-driver
# vpl-gpu-rt # oneVPL (QSV) runtime
intel-compute-runtime # OpenCL (NEO) + Level Zero for Arc/Xe
];
};
};
environment.sessionVariables = {
LIBVA_DRIVER_NAME = "iHD";
}; # Force intel-media-driver
# services.fwupd = {
# enable = true;
# };
services.openssh = {
enable = true;
settings = {
@@ -97,7 +141,7 @@
services.libinput.enable = true;
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
# boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
# Define a user account. Don't forget to set a password with passwd.
# users.users.doloro = {
# isNormalUser = true;
@@ -116,7 +160,7 @@
password = "meowmeowmeow";
};
users.mutableUsers = false;
services.system76-scheduler.enable = true;
services.system76-scheduler.enable = false;
powerManagement = {
enable = true;
@@ -126,20 +170,28 @@
boot.kernelParams = [
# "mem_sleep_default=deep"
# "i915.fastboot=1"
"ahci.mobile_lpm_policy=1"
"intel_idle.max_cstate=11"
# "i915.modeset=1"
# "ahci.mobile_lpm_policy=1"
# "intel_idle.max_cstate=10"
"processor.max_cstate=10"
"pci=noaer"
# "quiet"
# "splash"
# "idle=halt"
];
boot.binfmt.emulatedSystems = [
"x86_64-linux"
];
services.logind.settings.Login = {
HandleLidSwitch = "suspend";
HandleLidSwitchExternalPower = "suspend";
HandleLidSwitchDocked = "ignore";
# HandleLidSwitch = "suspend";
# HandleLidSwitchExternalPower = "suspend";
# HandleLidSwitchDocked = "ignore";
};
systemd.sleep.extraConfig = ''
HibernateDelaySec=30min
SuspendEstimationSec=120
'';
# systemd.sleep.extraConfig = ''
# HibernateDelaySec=30min
# SuspendEstimationSec=120
# '';
# programs.firefox.enable = true;
+10 -2
View File
@@ -15,14 +15,22 @@
modules.ssh
];
homeManager =
{ pkgs, ... }:
{ pkgs, lib, ... }:
{
home = {
username = "doloro";
homeDirectory = "/home/doloro";
packages = with pkgs; [ wl-clipboard ];
packages = with pkgs; [
wl-clipboard
# home-manager
btop
];
};
programs.home-manager.enable = true;
};
nixos =
{ lib, ... }:
{
};
};
}
+20 -3
View File
@@ -1,23 +1,40 @@
{ den, __findFile, ... }:
{
den,
__findFile,
lib,
...
}:
{
# Homes
den.homes.x86_64-linux.doloro-desktop = {
aspect = "doloro-desktop";
userName = "doloro";
};
# TODO
den.homes.x86_64-linux.doloro-laptop = {
den.homes.aarch64-linux.doloro-laptop = {
userName = "doloro";
};
# Machines
den.hosts.x86_64-linux.desktop = {
users.doloro = {
aspect = "doloro-desktop";
home-manager.enable = true;
};
};
# TODO
den.hosts.x86_64-linux.laptop = {
den.hosts.aarch64-linux.laptop = {
users.doloro = {
aspect = "doloro-laptop";
home-manager.enable = true;
};
};
den.schema.user.classes = lib.mkDefault [ "homeManager" ];
# Fixes 'The option `flake.homeConfigurations' is defined multiple times while it's expected to be unique.'
flake.options.homeConfigurations = lib.mkOption {
type = lib.types.attrs;
description = "Home Manager configurations for users.";
};
}
+1 -1
View File
@@ -5,6 +5,6 @@
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
den.url = "github:vic/den";
den.url = "github:vic/den?ref=8101ec865c0bf4027d40b9fd8951e3e435a86d64";
};
}
+19
View File
@@ -0,0 +1,19 @@
{ den, modules, ... }:
{
modules.ai = {
provides = {
ollama-cuda = {
homeManager =
{ pkgs, ... }:
{
home.packages = [ pkgs.ollama-cuda ];
};
};
};
homeManager =
{ pkgs, ... }:
{
home.packages = [ pkgs.opencode ];
};
};
}
+19
View File
@@ -0,0 +1,19 @@
{
modules,
den,
inputs,
...
}:
{
flake-file.inputs = {
nix-cachyos-kernel.url = "github:xddxdd/nix-cachyos-kernel/release";
};
# inputs.nix-cachyos-kernel.legacyPackages.x86_64-linux.linuxPackages-cachyos-lts-lto;
modules.cachyos-kernel = {
nixos = {
nixpkgs.overlays = [
inputs.nix-cachyos-kernel.overlays.pinned
];
};
};
}
+8
View File
@@ -0,0 +1,8 @@
{ den, modules, ... }:
{
modules.easyeffects = {
homeManager = {
services.easyeffects.enable = true;
};
};
}
+2
View File
@@ -30,6 +30,8 @@
lsof
(gamescope.overrideAttrs {
enableWsi = true;
# Fixes some games being blurry under wayland backend
NIX_CFLAGS_COMPILE = [ "-fno-fast-math" ];
})
];
};
+6 -4
View File
@@ -2,6 +2,8 @@
den,
modules,
inputs,
lib,
stdenv,
...
}:
{
@@ -11,19 +13,19 @@
inputs.nixpkgs.follows = "nixpkgs";
};
};
modules.helium = {
modules.helium = settings: {
homeManager =
{ pkgs, home, ... }:
{ pkgs, ... }:
{
home.packages = [
inputs.heliumFlake.packages.x86_64-linux.helium
inputs.heliumFlake.packages.${pkgs.stdenv.hostPlatform.system}.helium
];
nixpkgs.config.allowUnfree = true;
# Gives me widevine support. yay
xdg.configFile."net.imput.helium/WidevineCdm/latest-component-updated-widevine-cdm" = {
text = ''{"Path":"${pkgs.widevine-cdm}/share/google/chrome/WidevineCdm"}'';
};
wayland.windowManager.hyprland.settings = {
wayland.windowManager.hyprland.settings = lib.mkIf settings.default {
binds = [
"$mainMod, E, exec, helium"
];
+12 -4
View File
@@ -14,6 +14,9 @@
pkgs.wlogout
pkgs.tofi
pkgs.killall
pkgs.grim
pkgs.slurp
pkgs.wayclip
];
home.pointerCursor = {
enable = true;
@@ -26,7 +29,6 @@
"XCURSOR_THEME,BreezeX-RosePine-Linux"
"XCURSOR_SIZE,24"
"HYPRCURSOR_SIZE,24"
"LIBVA_DRIVER_NAME,nvidia"
"__GLX_VENDOR_LIBRARY_NAME,nvidia"
"WEBKIT_DISABLE_DMABUF_RENDERER,1" # maybe disable if nixos fixes alcom
];
@@ -59,6 +61,9 @@
ignore_opacity = false;
};
};
cursor = {
no_hardware_cursors = true;
};
animations = {
enabled = true;
bezier = [
@@ -139,8 +144,12 @@
"$mainMod, down, movefocus, d"
"$mainMod, L, exec, wlogout"
(
"$mainMod, S, exec, "
+ ''wayfreeze --after-freeze-cmd 'grim -g "$(slurp -d)" - | wl-copy -t image/png;killall wayfreeze' --hide-cursor''
let
script = pkgs.writeShellScript "meow" ''
fish -c 'grim -g $(slurp) -t png - &| wl-copy -t image/png; killall wayfreeze'
'';
in
"$mainMod, S, exec, " + "wayfreeze --after-freeze-cmd '${script}'"
)
"$mainMod, F, fullscreen"
"$mainMod, mouse_down, workspace, e+1"
@@ -170,7 +179,6 @@
windowrule = [
"match:class .*, suppress_event maximize"
"match:class ^(gamescope)$, workspace 5"
"match:class ^(gamescope)$, fullscreen true"
"match:class ^(gamescope)$, immediate true"
"match:class ^(steam)$, workspace 6 silent"
"match:class ^(vesktop)$, workspace 8 silent"
+9 -1
View File
@@ -1,6 +1,7 @@
{
modules,
inputs,
lib,
...
}:
{
@@ -17,6 +18,7 @@
grim
slurp
wlogout
ranger
];
programs.xwayland.enable = true;
programs.hyprland = {
@@ -28,9 +30,12 @@
portalPackage =
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
};
# gtk.enable = lib.mkForce false;
xdg.portal = {
enable = true;
# extraPortals = [ pkgs.xdg-desktop-portal-cosmic ];
extraPortals = [
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland
];
};
environment.sessionVariables.NIXOS_OZONE_WL = "1";
hardware.graphics = {
@@ -44,6 +49,9 @@
homeManager =
{ pkgs, ... }:
{
gtk = {
enable = true;
};
wayland.windowManager.hyprland = {
enable = true;
systemd.variables = [ "--all" ];
+14
View File
@@ -0,0 +1,14 @@
{ den, modules, ... }:
{
modules.wlsunset = {
homeManager =
{ pkgs, ... }:
{
systemd.user.services = {
wlsunset = {
};
};
};
};
}
+19
View File
@@ -0,0 +1,19 @@
{
den,
modules,
inputs,
...
}:
{
flake-file.inputs = {
nik-pkgs = {
url = "git+https://git.scug.io/nikkuss/pkgs.git";
inputs.nixpkgs.follows = "nixpkgs";
};
};
modules.nikpkgs = {
nixos = {
nixpkgs.overlays = [ inputs.nik-pkgs.overlays.default ];
};
};
}
+152
View File
@@ -0,0 +1,152 @@
{
modules,
inputs,
lib,
den,
...
}:
{
flake-file.inputs = {
niri-flake = {
url = "github:sodiboo/niri-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
};
modules.niri = {
nixos =
{ pkgs, ... }:
{
imports = [ inputs.niri-flake.nixosModules.niri ];
programs.niri.enable = true;
programs.niri.package = pkgs.niri-unstable;
nixpkgs.overlays = [ inputs.niri-flake.overlays.niri ];
};
homeManager =
{ pkgs, ... }:
{
# The nixos module already imports the hm module
# imports = [ inputs.niri-flake.homeModules.niri ];
gtk.enable = lib.mkForce false;
programs = {
niri = {
# enable = true;
# package = pkgs.niri-unstable;
settings = {
input = {
keyboard = {
xkb = {
layout = "gb";
};
numlock = true;
};
};
cursor = {
size = 16;
};
outputs = {
DP-3 = {
# Philips Consumer Electronics Company PHL 272E1GZ UK02101011104
mode = {
width = 1920;
height = 1080;
refresh = 144.0;
};
focus-at-startup = true;
variable-refresh-rate = false;
};
HDMI-A-1 = {
position = {
x = -1920;
y = 0;
};
scale = 1;
};
};
binds = {
# Navigation
"Mod+Shift+WheelScrollDown" = {
hotkey-overlay.title = "Workspace Down";
cooldown-ms = 150;
action.focus-workspace-down = [ ];
};
"Mod+Shift+WheelScrollUp" = {
hotkey-overlay.title = "Workspace Up";
cooldown-ms = 150;
action.focus-workspace-up = [ ];
};
"Mod+WheelScrollUp" = {
hotkey-overlay.title = "Workspace Left";
action.focus-column-right = [ ];
};
"Mod+WheelScrollDown" = {
hotkey-overlay.title = "Workspace Right";
action.focus-column-left = [ ];
};
"Super+Tab" = {
hotkey-overlay.title = "Overview";
action.toggle-overview = [ ];
};
# --
# Utility
"Super+S" = {
action.screenshot = [ ];
};
"Super+C" = {
action.close-window = [ ];
};
"Super+L" = {
action.spawn = "wlogout";
};
# Program Spawning
"Mod+E".action.spawn = "helium";
"Mod+R".action.spawn =
let
config = pkgs.writeTextFile {
name = "config";
text = ''
width = 100%
height = 100%
border-width = 0
outline-width = 0
padding-left = 35%
padding-top = 35%
result-spacing = 25
num-results = 5
font = monospace
background-color = #000A
'';
};
script = pkgs.writeShellScript "mreow" ''
exec $(tofi-drun -c ${config})
'';
in
"${script}";
"Mod+Q".action.spawn = "kitty";
# --
};
window-rules = [
{
matches = [ ];
geometry-corner-radius = {
bottom-left = 3.0;
bottom-right = 3.0;
top-left = 3.0;
top-right = 3.0;
};
clip-to-geometry = true;
draw-border-with-background = false;
focus-ring.width = 2;
}
];
xwayland-satellite = {
enable = true;
path = lib.getExe pkgs.xwayland-satellite;
};
};
};
};
};
};
}
+156
View File
@@ -0,0 +1,156 @@
{ den, modules, ... }:
{
modules.nix-ld = {
nixos =
{ pkgs, ... }:
{
programs.nix-ld = {
enable = true;
libraries = with pkgs; [
# List by default
zlib
zstd
stdenv.cc.cc
curl
openssl
attr
libssh
bzip2
libxml2
acl
libsodium
util-linux
xz
systemd
# My own additions
xorg.libXcomposite
xorg.libXtst
xorg.libXrandr
xorg.libXext
xorg.libX11
xorg.libXfixes
libGL
libva
pipewire
xorg.libxcb
xorg.libXdamage
xorg.libxshmfence
xorg.libXxf86vm
libelf
# Required
glib
gtk2
# Inspired by steam
# https://github.com/NixOS/nixpkgs/blob/master/pkgs/by-name/st/steam/package.nix#L36-L85
networkmanager
vulkan-loader
libgbm
libdrm
libxcrypt
coreutils
pciutils
zenity
# glibc_multi.bin # Seems to cause issue in ARM
# # Without these it silently fails
xorg.libXinerama
xorg.libXcursor
xorg.libXrender
xorg.libXScrnSaver
xorg.libXi
xorg.libSM
xorg.libICE
gnome2.GConf
nspr
nss
cups
libcap
SDL2
libusb1
dbus-glib
ffmpeg
# Only libraries are needed from those two
libudev0-shim
# needed to run unity
gtk3
icu
libnotify
gsettings-desktop-schemas
# https://github.com/NixOS/nixpkgs/issues/72282
# https://github.com/NixOS/nixpkgs/blob/2e87260fafdd3d18aa1719246fd704b35e55b0f2/pkgs/applications/misc/joplin-desktop/default.nix#L16
# log in /home/leo/.config/unity3d/Editor.log
# it will segfault when opening files if you dont do:
# export XDG_DATA_DIRS=/nix/store/0nfsywbk0qml4faa7sk3sdfmbd85b7ra-gsettings-desktop-schemas-43.0/share/gsettings-schemas/gsettings-desktop-schemas-43.0:/nix/store/rkscn1raa3x850zq7jp9q3j5ghcf6zi2-gtk+3-3.24.35/share/gsettings-schemas/gtk+3-3.24.35/:$XDG_DATA_DIRS
# other issue: (Unity:377230): GLib-GIO-CRITICAL **: 21:09:04.706: g_dbus_proxy_call_sync_internal: assertion 'G_IS_DBUS_PROXY (proxy)' failed
# Verified games requirements
xorg.libXt
xorg.libXmu
libogg
libvorbis
SDL
SDL2_image
glew110
libidn
tbb
# Other things from runtime
flac
freeglut
libjpeg
libpng
libpng12
libsamplerate
libmikmod
libtheora
libtiff
pixman
speex
SDL_image
SDL_ttf
SDL_mixer
SDL2_ttf
SDL2_mixer
libappindicator-gtk2
libdbusmenu-gtk2
libindicator-gtk2
libcaca
libcanberra
libgcrypt
libvpx
librsvg
xorg.libXft
libvdpau
# ...
# Some more libraries that I needed to run programs
pango
cairo
atk
gdk-pixbuf
fontconfig
freetype
dbus
alsa-lib
expat
# for blender
libxkbcommon
libxcrypt-legacy # For natron
libGLU # For natron
fribidi
harfbuzz
libgpg-error
# Appimages need fuse, e.g. https://musescore.org/fr/download/musescore-x86_64.AppImage
fuse
e2fsprogs
];
};
};
};
}
+2
View File
@@ -13,6 +13,7 @@
"https://attic.scug.io/pkgs"
"https://cache.nixos-cuda.org"
"https://niri.cachix.org"
"https://attic.xuyh0120.win/lantian"
];
trusted-public-keys = [
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
@@ -20,6 +21,7 @@
"pkgs:+sRbfiZMMX5R3PuAPtIRz/emowDoGZNpozibrnrAvuc="
"cache.nixos-cuda.org:74DUi4Ye579gUqzH4ziL9IyiJBlDpMRn9MBN8oNan9M="
"niri.cachix.org-1:Wv0OmO7PsuocRKzfDoJ3mulSl7Z6oezYhGhR+3W2964="
"lantian:EeAUQ+W+6r7EtwnmYjeVwx5kOGEBpjlBfPlzGlTNvHc="
];
experimental-features = [
"flakes"
+26 -2
View File
@@ -1,6 +1,7 @@
{
den,
modules,
lib,
inputs,
...
}:
@@ -9,11 +10,15 @@
flake-file.inputs = {
nixvim = {
url = "github:nix-community/nixvim";
inputs.nixpkgs.follows = "nixpkgs";
# inputs.nixpkgs.follows = "nixpkgs";
};
};
modules = {
nixvim = {
nixos =
{ home-manager, ... }:
{
};
homeManager =
{ pkgs, ... }:
{
@@ -23,6 +28,11 @@
programs.nixvim = {
enable = true;
defaultEditor = true;
nixpkgs = {
config = {
allowUnfree = true;
};
};
colorschemes.gruvbox-material.enable = true;
extraPackages = with pkgs; [
# formatters
@@ -32,6 +42,7 @@
ripgrep
# misc
nixd
tree-sitter
];
performance.byteCompileLua = {
enable = true;
@@ -44,6 +55,7 @@
todo-comments.enable = true;
lsp-status.enable = true;
transparent.enable = true;
which-key.enable = true;
conform-nvim = {
enable = true;
settings = {
@@ -62,6 +74,15 @@
};
};
};
# efmls-configs = {
# enable = true;
# languages = {
# scss = {
# formatter = "prettier";
# linter = "stylelint";
# };
# };
# };
lsp = {
enable = true;
servers = {
@@ -85,6 +106,7 @@
ts_ls = {
enable = true;
};
cssls.enable = true;
svelte.enable = true;
};
};
@@ -174,7 +196,7 @@
tiny-inline-diagnostic.enable = true;
# persisted.enable = true;
auto-session = {
enable = true;
enable = false;
settings = {
enabled = true;
auto_save = true;
@@ -190,6 +212,7 @@
lua
make
markdown
rust
nix
regex
toml
@@ -197,6 +220,7 @@
vimdoc
xml
yaml
svelte
];
settings = {
highlight.enable = true;
+38 -38
View File
@@ -24,47 +24,47 @@
};
};
systemd.user.services =
lib.mkIf settings.virtual_audio_devices {
pw-discordaudio-virtual-device = {
Install = {
WantedBy = [ "hyprland-session.target" ];
let
audio-set = lib.mkIf settings.audio {
pw-discordaudio-virtual-device = {
Unit = {
Description = "OBS daemon";
After = [ "hyprland-session.target" ];
};
Install = {
WantedBy = [ "default.target" ];
};
Service = {
ExecStart = "${pkgs.writeShellScript "discord_audio_virt_device" ''
pw-loopback -m '[ FL FR]' --capture-props='media.class=Audio/Sink node.name=DiscordSink' -n DiscordSink
''}";
Restart = "on-failure";
RestartSec = "5s";
};
};
Service = {
ExecStart = "${pkgs.writeShellScript "discord_audio_virt_device" ''
#!/run/current-system/sw/bin/bash
pw-loopback -m '[ FL FR]' --capture-props='media.class=Audio/Sink node.name=DiscordSink' -n DiscordSink
''}";
pw-gameaudio-virtual-device = {
Unit = {
Description = "OBS daemon";
After = [ "hyprland-session.target" ];
};
Install = {
WantedBy = [ "default.target" ];
};
Service = {
ExecStart = "${pkgs.writeShellScript "game_audio_virt_device" ''
pw-loopback -m '[ FL FR]' --capture-props='media.class=Audio/Sink node.name=GameAudioSink' -n GameAudioSink
''}";
Restart = "on-failure";
RestartSec = "5s";
};
};
};
pw-gameaudio-virtual-device = {
Install = {
WantedBy = [ "hyprland-session.target" ];
};
Service = {
ExecStart = "${pkgs.writeShellScript "game_audio_virt_device" ''
#!/run/current-system/sw/bin/bash
pw-loopback -m '[ FL FR]' --capture-props='media.class=Audio/Sink node.name=GameAudioSink' -n GameAudioSink
''}";
};
};
}
// pkgs.lib.mkIf settings.autostart {
obs-autostart = {
Unit = {
Description = "OBS daemon";
After = [ "hyprland-session.target" ];
};
Install = {
WantedBy = [ "default.target" ];
};
Service = {
# wait for hyprland to start
ExecStart = "${config.programs.obs-studio.finalPackage}/bin/obs --startreplaybuffer";
Restart = "on-failure";
RestartSec = "5s";
};
};
};
in
lib.mergeAttrsList [ audio-set ];
wayland.windowManager.hyprland.settings = {
exec-once = [ "${config.programs.obs-studio.finalPackage}/bin/obs --startreplaybuffer" ];
};
};
};
}
+35
View File
@@ -0,0 +1,35 @@
{
den,
modules,
lib,
...
}:
{
modules.openvivo = {
nixos =
{ pkgs, ... }:
let
llama = pkgs.fetchFromGitHub ({
owner = "ravi9";
repo = "llama.cpp";
rev = "1117e77";
hash = "sha256-7NMhKGxfutZ7i16ra3EA4pYEnLl0S23E6TFY7IhVPXU=";
});
in
{
virtualisation.oci-containers.backend = "podman";
virtualisation.oci-containers.containers = {
openvino = {
image = "openvino:latest";
imageFile = pkgs.dockerTools.buildImage {
name = "openvino";
tag = "latest";
fromImage = "${llama}/.devops/openvino.Dockerfile";
};
autoStart = true;
ports = [ "127.0.0.1:1234:1234" ];
};
};
};
};
}
+22
View File
@@ -0,0 +1,22 @@
{ den, modules, ... }:
{
modules.podman = {
nixos =
{ ... }:
{
virtualisation = {
containers.enable = true;
podman = {
enable = true;
dockerCompat = true;
defaultNetwork.settings = {
dns_enabled = true;
};
};
};
users.users."doloro" = {
extraGroups = [ "podman" ];
};
};
};
}
@@ -8,6 +8,20 @@
SUBSYSTEM=="power_supply",ENV{POWER_SUPPLY_ONLINE}=="0", RUN+="/run/current-system/systemd/bin/systemctl start battery.target"
SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="1", RUN+="/run/current-system/systemd/bin/systemctl start ac.target"
'';
systemd.targets = {
"ac" = {
description = "On AC power";
unitConfig = {
StopWhenUnneeded = "yes";
};
};
"battery" = {
description = "On battery power";
unitConfig = {
StopWhenUnneeded = "yes";
};
};
};
};
};
}
+7 -1
View File
@@ -3,11 +3,17 @@
modules.common.provides = {
laptop-power-management = {
includes = [
modules.auto-cpufreq
# modules.auto-cpufreq
modules.battery-ac-targets
modules.intel-mgm
modules.tlp
modules.rfkill-sleep
# modules.ppd
];
nixos = {
services.upower.enable = true;
services.thermald.enable = true;
};
};
};
}
+22
View File
@@ -0,0 +1,22 @@
{ modules, den, ... }:
{
modules.flash = {
nixos = {
services.scx = {
enable = true;
## Commented out because the service impl is bugged and doesnt actually set these
# scheduler = "scx_lavd";
# extraArgs = [
# "--cpu-pref-order 20-21,12-19,0-11"
# "--autopilot"
# ];
};
# Most energy efficent scheduler setup..
systemd.services.scx.environment = {
SCX_SCHEDULER_OVERRIDE = "scx_flash";
# Flags are from cachyos sched-ext tutorial
SCX_FLAGS_OVERRIDE = "-m powersave -I 10000 -t 1000 -s 10000 -S 1000";
};
};
};
}
@@ -6,18 +6,18 @@
{ pkgs, ... }:
let
batt-gpu = pkgs.writeShellScript "batt-igpu" ''
${pkgs.intel-gpu-tools}/bin/intel_gpu_frequency -e
echo "800" > /sys/class/drm/card1/gt_boost_freq_mhz
${pkgs.intel-gpu-tools}/bin/intel_gpu_frequency -e;
echo '1250' > /sys/class/drm/card1/gt_boost_freq_mhz;
'';
ac-gpu = pkgs.writeShellScript "ac-igpu" ''
${pkgs.intel-gpu-tools}/bin/intel_gpu_frequency -d
echo "2350" > /sys/class/drm/card1/gt_boost_freq_mhz
${pkgs.intel-gpu-tools}/bin/intel_gpu_frequency -d;
echo '2350' > /sys/class/drm/card1/gt_boost_freq_mhz;
'';
in
{
systemd.services.gpu-limit-on-batt = {
enable = true;
description = "Using rfkill; disable all rf devices before sleeping.";
description = "Gpu Limit";
before = [ "battery.target" ];
serviceConfig = {
@@ -30,7 +30,7 @@
};
systemd.services.gpu-limit-on-ac = {
enable = true;
description = "Using rfkill; disable all rf devices before sleeping.";
description = "Gpu Limit";
before = [ "ac.target" ];
serviceConfig = {
+25
View File
@@ -0,0 +1,25 @@
{ modules, den, ... }:
{
modules.lavd = {
nixos =
{ pkgs, ... }:
{
nixpkgs.config.allowUnsupportedSystem = true;
services.scx = {
enable = true;
package = pkgs.scx.rustscheds;
## Commented out because the service impl is bugged and doesnt actually set these
# scheduler = "scx_lavd";
# extraArgs = [
# "--cpu-pref-order 20-21,12-19,0-11"
# "--autopilot"
# ];
};
# Most energy efficent scheduler setup..
systemd.services.scx.environment = {
SCX_SCHEDULER_OVERRIDE = "scx_lavd";
SCX_FLAGS_OVERRIDE = "--powersave --cpu-pref-order=0-4,5-11";
};
};
};
}
+11
View File
@@ -0,0 +1,11 @@
{ den, modules, ... }:
{
modules.ppd = {
nixos = {
services.power-profiles-daemon.enable = true;
powerManagement = {
cpuFreqGovernor = "schedutil";
};
};
};
}
@@ -0,0 +1,26 @@
{ den, modules, ... }:
{
modules.rfkill-sleep = {
nixos =
{ pkgs, ... }:
{
# My laptop doesn't like having connectivity when it goes to sleep, it burns through battery
systemd.services.sleep-rfkill = {
description = "Custom suspend/resume hook";
wantedBy = [ "sleep.target" ];
before = [ "sleep.target" ];
serviceConfig = {
Type = "oneshot";
# Command to run BEFORE system suspends
ExecStart = "${pkgs.util-linux}/bin/rfkill block all";
# Command to run AFTER system resumes
ExecStop = "${pkgs.util-linux}/bin/rfkill unblock all";
RemainAfterExit = true;
};
unitConfig = {
StopWhenUnneeded = true;
};
};
};
};
}
+65
View File
@@ -0,0 +1,65 @@
{ modules, den, ... }:
{
modules.tdp = settings: {
nixos =
{ pkgs, ... }:
let
batt-tdp = pkgs.writeShellScript "batt-cpu-tdp" ''
${pkgs.powercap}/bin/powercap-set intel-rapl -z 0 -c 0 -l ${
toString (settings.batt.cpu.long-term * 1000000)
}
${pkgs.powercap}/bin/powercap-set intel-rapl -z 0 -c 1 -l ${
toString (settings.batt.cpu.short-term * 1000000)
}
${pkgs.powercap}/bin/powercap-set intel-rapl-mmio -z 0 -c 0 -l ${
toString (settings.batt.mmio.long-term * 1000000)
}
${pkgs.powercap}/bin/powercap-set intel-rapl-mmio -z 0 -c 1 -l ${
toString (settings.batt.mmio.short-term * 1000000)
}
'';
ac-tdp = pkgs.writeShellScript "ac-cpu-tdp" ''
${pkgs.powercap}/bin/powercap-set intel-rapl -z 0 -c 0 -l ${
toString (settings.ac.cpu.long-term * 1000000)
}
${pkgs.powercap}/bin/powercap-set intel-rapl -z 0 -c 1 -l ${
toString (settings.ac.cpu.short-term * 1000000)
}
${pkgs.powercap}/bin/powercap-set intel-rapl-mmio -z 0 -c 0 -l ${
toString (settings.batt.mmio.long-term * 1000000)
}
${pkgs.powercap}/bin/powercap-set intel-rapl-mmio -z 0 -c 1 -l ${
toString (settings.batt.mmio.short-term * 1000000)
}
'';
in
{
systemd.services.tdp-on-batt = {
enable = true;
before = [ "battery.target" ];
serviceConfig = {
Type = "oneshot";
ExecStart = "${batt-tdp}";
RemainAfterExit = true;
};
wantedBy = [ "battery.target" ];
partOf = [ "battery.target" ];
};
systemd.services.tdp-on-ac = {
enable = true;
before = [ "ac.target" ];
serviceConfig = {
Type = "oneshot";
ExecStart = "${ac-tdp}";
RemainAfterExit = true;
};
wantedBy = [ "ac.target" ];
partOf = [ "ac.target" ];
};
};
};
}
+15 -12
View File
@@ -5,6 +5,7 @@
nixos = {
services.tlp = {
enable = true;
pd.enable = true;
settings = {
# Wireless power saving
WIFI_PWR_ON_BAT = "on";
@@ -15,9 +16,6 @@
# SATA drive power management
SATA_LINKPWR_ON_BAT = "min_power";
# PCI Express Active-State Power Management (ASPM)
PCIE_ASPM_ON_BAT = "powersupersave";
RUNTIME_PM_ON_AC = "auto";
RUNTIME_PM_ON_BAT = "auto";
@@ -26,21 +24,23 @@
# Restore brightness on battery
RESTORE_BRIGHTNESS_ON_BAT = "1";
PCIE_ASPM_ON_AC = "balanced";
PCIE_ASPM_ON_AC = "default";
PCIE_ASPM_ON_BAT = "powersave";
DEVICES_TO_DISABLE_ON_BAT_NOT_IN_USE = "bluetooth";
INTEL_GPU_MAX_FREQ_ON_AC = 0;
INTEL_GPU_MAX_FREQ_ON_BAT = 800;
INTEL_GPU_BOOST_FREQ_ON_AC = 0;
INTEL_GPU_BOOST_FREQ_ON_BAT = 800;
INTEL_GPU_BOOST_FREQ_ON_BAT = 1250;
INTEL_GPU_POWER_PROFILE_ON_BAT = "power_saving";
CPU_MAX_PERF_ON_BAT = 30;
# CPU_MAX_PERF_ON_BAT = 30;
CPU_SCALING_GOVERNOR_ON_AC = "performance";
CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
CPU_HWP_DYN_BOOST_ON_AC = "1";
CPU_HWP_DYN_BOOST_ON_BAT = "0";
CPU_ENERGY_PERF_POLICY_ON_BAT = "power";
CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
# CPU_SCALING_GOVERNOR_ON_AC = "performance";
CPU_SCALING_GOVERNOR_ON_BAT = "schedutil";
# CPU_HWP_DYN_BOOST_ON_AC = "1";
# CPU_HWP_DYN_BOOST_ON_BAT = "0";
# CPU_ENERGY_PERF_POLICY_ON_BAT = "power";
# CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
MAX_LOST_WORK_SECS_ON_BAT = "60";
MAX_LOST_WORK_SECS_ON_AC = "15";
DISK_IDLE_SECS_ON_AC = "0";
@@ -49,6 +49,9 @@
DISK_IDLE_SECS_ON_BAT = "2";
SOUND_POWER_SAVE_ON_BAT = "1";
SOUND_POWER_SAVE_ON_AC = "1";
SCHED_POWERSAVE_ON_AC = 0;
SCHED_POWERSAVE_ON_BAT = 1;
NMI_WATCHDOG = 0;
PLATFORM_PROFILE_ON_AC = "balanced";
PLATFORM_PROFILE_ON_BAT = "quiet";
@@ -0,0 +1,36 @@
import QtQuick
import QtQuick.Layouts
import Quickshell
import Quickshell.Services.UPower
import Quickshell.Services.Pipewire
Rectangle {
id: root
property PwNode defaultSpeaker: Pipewire.preferredDefaultAudioSink
property PwNode defaultMic: Pipewire.defaultAudioSource
PwObjectTracker {
objects: [root.defaultSpeaker, root.defaultMic]
}
visible: root.defaultSpeaker.audio.muted || root.defaultMic.audio.muted
implicitHeight: 20
implicitWidth: content.width
color: Colors.backgroundAlt
Layout.alignment: Qt.AlignCenter
radius: 3.5
RowLayout {
id: content
height: 20
anchors.centerIn: parent
Text {
id: speaker
text: root.defaultSpeaker.audio.muted ? "muted" : "unmuted"
color: Colors.textPrimary
}
Text {
id: mic
text: root.defaultMic.audio.muted ? "muted" : "unmuted"
color: Colors.textPrimary
}
}
}
+19 -8
View File
@@ -28,31 +28,42 @@ Scope {
left: parent.left
right: parent.right
// bottomMargin: 2
leftMargin: 5
rightMargin: 5
leftMargin: 0
rightMargin: 0
}
RowLayout {
// Left
Layout.alignment: Qt.AlignLeft
// To make sure no children mess with the height of all the other children.
// because if one widget is too height, it'll ofset all the other children in the bar
Layout.preferredHeight: 20
Workspaces {}
}
RowLayout {
// Center
Layout.alignment: Qt.AlignCenter
Layout.preferredHeight: 20
}
RowLayout {
// Right
Layout.alignment: Qt.AlignRight
Layout.preferredHeight: 20
// spacing: 100
spacing: 10
Audio {}
BatteryWidget {}
Rectangle {
width: meow.width
height: meow.height
implicitWidth: clockText.width
implicitHeight: clockText.height
radius: 3.5
color: "white"
color: Colors.backgroundAlt
anchors.centerIn: parent
Layout.alignment: Qt.AlignCenter
Text {
id: meow
// font.pointSize: 24
id: clockText
color: Colors.textPrimary
font: "CaskaydiaCove NFM"
text: Clock.time
}
}
@@ -0,0 +1,26 @@
import QtQuick
import QtQuick.Layouts
import Quickshell
import Quickshell.Services.UPower
RowLayout {
id: content
height: 20
anchors.centerIn: root
visible: UPower.displayDevice.percentage != 0
property string charging: UPower.displayDevice.state == UPowerDeviceState.Charging ? "Charging.." : ""
Rectangle {
implicitHeight: text.height
implicitWidth: text.width
color: Colors.backgroundAlt
Layout.alignment: Qt.AlignCenter
radius: 3.5
Text {
id: text
property int power: UPower.displayDevice.percentage * 100
anchors.centerIn: parent
text: charging + " " + power + "%"
color: Colors.textPrimary
}
}
}
@@ -0,0 +1,109 @@
pragma Singleton
import QtQuick 2.15
// Gruvbox Dark — base24 QML singleton
// Notes:
// - This is a template for a "base24" palette. Replace the baseNN hex values
// with your exact base24 values if you have them.
// - Semantic aliases (background, textPrimary, accentBlue, etc.) map to the
// palette entries and make QML usage easier.
// "Thanks CoPilot" - Doloro
QtObject {
id: gruvbox
// ---- Base24 palette (base00 .. base23) ----
// Replace these hex values with exact ones from the base24 palette if needed.
property color base00: "#1d2021" // darkest background
property color base01: "#282828"
property color base02: "#32302f"
property color base03: "#3c3836"
property color base04: "#504945"
property color base05: "#665c54"
property color base06: "#7c6f64"
property color base07: "#928374"
property color base08: "#bdae93"
property color base09: "#d5c4a1"
property color base10: "#ebdbb2" // main foreground
property color base11: "#fbf1c7"
property color base12: "#cc241d" // red
property color base13: "#d65d0e" // orange
property color base14: "#d79921" // yellow
property color base15: "#98971a" // green
property color base16: "#689d6a" // aqua/green
property color base17: "#8ec07c" // light aqua
property color base18: "#458588" // blue
property color base19: "#b16286" // purple
property color base20: "#a89984" // muted
property color base21: "#7c6f64" // subtle
property color base22: "#504945"
property color base23: "#282828" // repeat or very dark
// ---- Semantic aliases (use these in your QML components) ----
property color background: base00
property color backgroundAlt: base01
property color surface: base02
property color surfaceAlt: base03
property color textPrimary: base10
property color textSecondary: base06
property color textDisabled: base04
property color border: base05
property color muted: base20
// accents
property color accentRed: base12
property color accentOrange: base13
property color accentYellow: base14
property color accentGreen: base15
property color accentAqua: base16
property color accentLightAqua: base17
property color accentBlue: base18
property color accentPurple: base19
// Example semantic levels for UI elements
property color windowBackground: background
property color panelBackground: surface
property color cardBackground: surfaceAlt
property color primaryText: textPrimary
property color secondaryText: textSecondary
property color highlight: accentBlue
property color danger: accentRed
property color success: accentGreen
property color warning: accentYellow
// ---- Helper function ----
// Returns a color by semantic name (string). Useful for dynamic lookups.
function colorFor(name) {
switch (name) {
case "background":
return gruvbox.background;
case "panelBackground":
return gruvbox.panelBackground;
case "cardBackground":
return gruvbox.cardBackground;
case "primaryText":
return gruvbox.primaryText;
case "secondaryText":
return gruvbox.secondaryText;
case "highlight":
return gruvbox.highlight;
case "danger":
return gruvbox.danger;
case "success":
return gruvbox.success;
case "warning":
return gruvbox.warning;
case "accentBlue":
return gruvbox.accentBlue;
case "accentRed":
return gruvbox.accentRed;
case "accentGreen":
return gruvbox.accentGreen;
default:
// fallback to primary text if unknown
return gruvbox.textPrimary;
}
}
}
@@ -0,0 +1,19 @@
// Time.qml
pragma Singleton
import Quickshell
import QtQuick
import Quickshell.Hyprland
Singleton {
id: root
function getHyprlandWorkspaceById(id) {
for (var x of Hyprland.workspaces.values) {
if (x.id == id) {
return x;
}
}
return null;
}
}
@@ -0,0 +1,69 @@
// Bar.qml
import Quickshell
import Quickshell.Io
import QtQuick
import QtQuick.Layouts
import Quickshell.Hyprland
Item {
id: root
width: row.width
height: row.height
RowLayout {
id: row
height: 15
Repeater {
id: repeater
model: 10
delegate: Item {
id: content
required property int index
property bool focused: HyprlandHelpers.getHyprlandWorkspaceById(index + 1).focused
property bool exists: HyprlandHelpers.getHyprlandWorkspaceById(index + 1) ? true : false
state: focused ? "FOCUSED" : (exists ? "EXISTS" : "NOT")
states: [
State {
name: "FOCUSED"
PropertyChanges {
target: content
implicitWidth: 10
scale: 1
}
},
State {
name: "EXISTS"
PropertyChanges {
target: content
implicitWidth: 10
scale: 0.85
}
},
State {
name: "NOT"
PropertyChanges {
target: content
implicitWidth: 10
scale: 0.75
}
}
]
height: 15
Rectangle {
implicitWidth: parent.width
implicitHeight: parent.height
radius: 2.5
color: {
if (HyprlandHelpers.getHyprlandWorkspaceById(index + 1) != null) {
if (HyprlandHelpers.getHyprlandWorkspaceById(index + 1).focused) {
return Colors.primaryText;
}
return Colors.textSecondary;
} else {
return Colors.textDisabled;
}
}
}
}
}
}
}
+43 -25
View File
@@ -8,47 +8,65 @@ sops:
- recipient: age1ykcy2r4kk729e7adqxu8s24ujc60z5eux7ma0ca4ruzydwgm5p6qmdp838
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAzdGQ5ZHUxUHE4YXF0bllY
dTRsYWc4cllmWEgveGVTLzUvRzJuc0FtUEdvCkNURmxmMnhkaExZcVVNRmRNU1p6
UitMYUxNMXgzZC84S3J0SHR4aFV5TGcKLS0tIFB3Skx6UlFDcVJFSlhTd1NRbUl2
VGQ3OUpDY0JVaEUyYStHQU83Q1hDYTAKeRgXVA8iWGO8cMMlvBFWGMVIZnaLCpsZ
hBjWlxG6oUlCNnO+cyckU3jSTecc+z+EIuseFt710nN5uRJeKs2MlA==
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBiZC9ZVlY2T0tXdy90b2hV
dDUxUjNyMjllQStaa0tKRy9YVkNIdFJyWTI4CitYNnhxN3JHQ3lsWXp2Tmgwek9n
Qzk1RUExZk5WcnlvUWptcmFQTFJNbWMKLS0tIFBtSkJOZUovTUxYeFZ3cnJ2Ukw0
MkVQY3h2OGhGaGNnYkVJUU1kK3F3VWMKs9B74KovGxx8KL5q/lGA/imVRM/i3mo/
a6Rbxufscp3WWGMbo70w8tWuRsAnIpUGh3EvWCekZ9nOzeMiVA8I2Q==
-----END AGE ENCRYPTED FILE-----
- recipient: age1e6vws55p0g23qzthm4qa93hpt6lqmck6670gkygph0sc0j7my4uq5wqjfh
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtM0wvV3pHTUZYdlhPWnU0
VElBbDI2bUJhQUVCMlBPNjNzOE9tTXJGelI0CjBEdmhWTGlyc2VhODRnbHE3ZGdC
WUoyWU0zcU5BbXhGdm5sVEZHdS80bkkKLS0tIHhpcFZQdkl6eHRUTGhZYmVOSCtz
RE8zeFl2ZVgyWVBsRmhlUElybXEwSEEKEhvMUClOOoN3RdzVOFBIPt7rMrukla1t
bVWGKX5e3p/EtK7aYzdBxYYvml+TNUD1n5TpTFhcnH2Jwpey8thz2Q==
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB0dXJzYndvSC92aElvTVpz
SUtTOWFzcUJxOHVrTk5scm5tcGkzRmEvK1hVClNVbmp3ZjBRTW5ZNXVNNGh3dSti
RzdCcTFlVlBld1kwNnR6dVhtcllVMFkKLS0tIG1YK2dLcWdVU3dLUFFlOUtzb3Ex
Tk5Zd0h3OHRpQzZjazJKUStPUVdERzQKGnoKYKq7pPJUrcAWJ4/tm8mSxuthjssz
7IsjH4t6VCyug2c7XnLJpcE64yPD+GrXHYixP0r2qj80WMjpv7N7qA==
-----END AGE ENCRYPTED FILE-----
- recipient: age1x3lahhkefkap67cdmdjcqaxan9hp62er78akr79v9m73nvgugpeqk0y32a
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA0ODRGRkE3a09MS3Z0QXNm
OTBlb2JEV28vTmxhcjM5aFpYbVhYM0wyZkd3CmszblZWVEFkVlMwQ1FMZitBd0Rp
MkZpZGViSHlHSko4Tk9rZGNHaWpGWncKLS0tIC9xY1dBSncvQnhHTlhhaEpUK3ZI
Tjgwd0VuVGtjaTdaSE5ERmRIa1dVNEkKkN0vp7xDWCnu4aq8VQu5y8Q/6xsFKhCQ
ivMqQsqoOBvXSynu7hbNpcGvAsmDHDGcC2b/C9Mkt42OclSYM077bw==
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLbGQ3MkVCUldqa3dYRTg0
NjVoUDdIc0RvSU02R0o0ZVk4KzVQMkZmeXpjClJaUUU3WTJVQmJkRzV4UTc3bXFI
dmJsV0VhNmdvdVNaaUFTNWcwd1l3eGsKLS0tIG1Gc3FlNVduaXUybUFnSGF4T3lu
QzhtM3V3VGFzdk9UenV6akxGNDh5d3cKdIKNPvM0GRJamiS4AXRNU+TbuZUnM6K7
FtC1dmHlyU/tXlFHv6TNlMZQtDgIVnE72Jvk48maq3oKiJAXWk11fg==
-----END AGE ENCRYPTED FILE-----
- recipient: age1exzngtk4d9vcsmcq6ap5xx3ca9qacqjkrv86ymged7msx9z6vfyqsf5sjq
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYTmhiUmFWaDFzcnRXcWFp
VjJ1b3VRSk8xN0FQMk13UDY1a2FEV3ZQY2l3Cnd0SmMvM0JDOFhZdmtOL3g0dmNj
UGZleDV1MU1DMXFiYUNmR2htWXZXQnMKLS0tIFBLa3lPL0VieG9ZWFBOU25vZTJ1
VVVDclBGZTRSVDZOanRwOGNaK3VVUW8KCvt/rcP0rJD5aCNdGaJeABuGZ7huRbGw
7FBvo6TvIRh0MCyvfbzfUon2m9d4yU8ddFejpSEK1vucxbXgV7KD8g==
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBoOHlRcnRwWUYwUGRSVW9s
cmdDZjN1RGFRVWtlODBudGpaemd3UDBZcnhRCksyWlk3VW91a3pnOGNQQVppM09z
Wmd3c09LK25OVGpJYWxvcm9XME03RG8KLS0tIEZkdERHZjhFWXkzZWNsM01nQmRs
bWFTMlhCL2IrZjlEOUFydmE4cHBzSmMKhIk8TZtRsIFKzopZCyp27SWYeHmf6jKn
VoIXQ6/VRRQjCYBsseZE5N+ycnr4ZC/RpXJ577G4TfGMCcixX67AfA==
-----END AGE ENCRYPTED FILE-----
- recipient: age1fw4xnh2q52juce94ffn54js708cr6umfwpv0mykuddkea7kr4f0q7a9h05
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLU21oQnlTQ3RQWmNzR3Y4
aWhhdFZ6RFEwVm5ITWluS2xZM0QyUHI5SEdvCmFjdDU2YlhlYTJ6Y2pPaGJkNW01
WUVVN0xIRXZ3djdVVkYzRThLSzlCVzAKLS0tIFhISmlJcXB2UHNsb2VQS2tnYVUy
aW5ERENRS2JWbGZhaGhNSGtqNVRNTncK0uI8n2L5uP3to/sByeO7y17h3ZrcmnOf
e3CwdzP4/WcSwbFk0CRnS6Cq8J0esUqweSJxvpt2eNBEYvDZ77SSMw==
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBuTG9LKzVvUjZEZ1lkMVJN
eldHSkRXQ241bnZmbHBmSXFNMU1seGcyaVNRCjNPaS9ITEJtdGRwOENDRytEMFk1
L3cvVnRsa2lYUk1hOWZCdDNqT3F3TU0KLS0tIFQ3cU5YNEszQm03ZXFxWkJ2VVVW
WTR2RU9GUVdsZHdleW1Gd2lyRENzSm8KznMUQ6Ah8O03AzZcCXgUIjjrV1cdkAnq
Pbr2BwdLzJvlF5lzmymIZEt35euv/HzhJGWDLWGpYJmYj/N8qZgBuA==
-----END AGE ENCRYPTED FILE-----
- recipient: age1pa8cecxaw4y4zea6zjnt0k0mz38g4qunmp6trwy5fvdvw88ttcgsv2dgrv
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAxSDNMRlNaMXB2ZXBPTlNu
eG5BWE5xRTNnVUFtN2psUFVHejZVbFVCQTBFCkRXQitoL0VJaXZmMlI3Q0JHVWk1
Zk1wR0loMVZLbytDdTE2Ky94eGljS0EKLS0tIHFxVGYrZlVVS3FsWENUdzRaVzVY
Q0x4bDFBTzV2L0E3UXQxMUdubVJZRTgKcPQZ9zHQAFwP/Odnh5INleUsHSN06U+x
X98535uapyJR/Wswxj6ukdciMOou8cLfOInLwJgWOf6mZklEhecVXA==
-----END AGE ENCRYPTED FILE-----
- recipient: age1kc0xu0ue2nrrr7w4gam7wlzackv8jv243rxwwndgxjqklgtnp5csdtpgzp
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBTaE1mUUlyVUxKQmhPMnlT
eS81cE5TeE1WWFVIRkdWT3c0ckhNMnFYZGxrCnp4My9nK20zcGVxUFZ0cnVVTDBS
QWtIQmVnM1lRV1ZtVXNGQ0dGdXNyOWsKLS0tIGIwM0JMM0JlZjBNaUQycEdudGlU
bzJvaUg2VkFrazBoWmlIY2hKeUdhTjQKbgW+ysm3TWBKfVoKAeqvaPio29SyzjJP
61QsSqCuJyEwSPpOzeWa5NChcCjitOUG1jEMsSHlpIslKA1P7g/P9g==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2026-02-14T00:08:39Z"
mac: ENC[AES256_GCM,data:lp9ZeDxt5gkOkDmYk+F0VQrVhkR0tQiQlYXbygoA8Dcq+gV0IIKKLwRqr5CVfgfRlo3239IwmKLsGaS6zYC1xX4toZ8oqw3Ic2UvP2CiWt6M7HTrlL+3Y2+PKOUvGl7RAqQxQAw7QaoxB4esqdIiWnMDueVHk5BTKrkay+afhno=,iv:NAMaZ9SMBAtROTBSQtU0RJDB60MAuE82AFoPtDqVHVM=,tag:RGBUTQC1pM+LcBweSJbc6w==,type:str]
+43 -25
View File
@@ -5,47 +5,65 @@ sops:
- recipient: age1ykcy2r4kk729e7adqxu8s24ujc60z5eux7ma0ca4ruzydwgm5p6qmdp838
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBSYm92cVo0Ykg2R3hTUWpW
UlNOTXF2cFI4Y29uRTh2aXIySFNSTFhZZ0RFCnR4YmRrQTVrY0hkUloxMGgzdFFa
ejFST0FESytnN3NIZW45blhmWDRMSlkKLS0tIE1MNWlHWWd1WEhNUGtiUm5GZ2pn
QUR3aGtVczZYV1FSUFdMRGw4a2lGU2MKh/56SL7neNFXN70dzwtwTHBaECoMvArR
TicJhSPV5S/vUrC9oDmSE3MMYtdzXSZkcRHYPI8fy5LcPOxXVPRARQ==
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBaU0s5VEszVDU4UlE2MDRi
eXBGNXU1Si9TZng4U1lrSjMvajQ2WmhIQkgwCitjM2owU0kwTXlGNy90ZHM3TEhY
ZmlnSUtZcXFCUkdCNmxsL0lDWHIwQXMKLS0tIEtaWGVCbWJKOHl0SW5EUWVqRWgz
bUI2bFdONHBIMTA4Rks4dytIK0NSZmsK6gzcg+iYzt01tnptnuSGXHqBt+T9o9hP
0gqLXgsfB+4OxRoMJVMEyecz9SX5+j6sWNQoRVQY1CGJoIucrpFrpg==
-----END AGE ENCRYPTED FILE-----
- recipient: age1e6vws55p0g23qzthm4qa93hpt6lqmck6670gkygph0sc0j7my4uq5wqjfh
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3K3ZxKzdvdVFMYnZLS0Nv
bDBkRWRNMkRMS09UWlZlcFYvZ1pEd09VVmlJCk9uMGJyNzd5QnZtWkdxOE40TVdG
YkJiaGZMaEFlNXljcnFvODVSL3Q2d3cKLS0tIFg5UFFPVElyR0xlbXEvMDNDQmpW
TGo3cUJVQ2NETkhWdmNCazNYSVpyUWcKr4EUvbK28WCiymL1BgYk6N6J27ZnadK8
kQ8tzwVS7iI1frBoHOVzXhCRt2CEg+O3EnXMRJDrahhxwmpqlx6cRA==
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBmTlN4YlBnTS93ZTh2STFr
Nng0YTNmeEw2N0ZXV0N0VVJaQjh4bldNS2xjCnYyMWxOb2hiR0Vwb1FXNmh6eitE
N1BMWFpXNElyNkJQNGJ6NUFzT3VOOVEKLS0tIG5MUXgzMEpMWGVGVnBubmRVM0hr
QjdQUkoyWHE2M05nSkZXNWpBTXdnN2cKEB3JndFHK/bFMx7zf3y/wfEALJIDO85u
RCKs6jIAztc3ElNDaKsIYRoF1VmrQSOvpk5ZJ1NytFcetNXvOR1KXw==
-----END AGE ENCRYPTED FILE-----
- recipient: age1x3lahhkefkap67cdmdjcqaxan9hp62er78akr79v9m73nvgugpeqk0y32a
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBRWGVsRmkwZGxId0hXQlEv
czdmclRXYWNrL0t4bGpEQ0lmNE0vb1RuZEhjCkhEaGlxY3JKS3l4WGxHS0Uya2tM
Zm1Lb3RpY2h0K2lKaHR1bjdFL25yQ0UKLS0tIFYvNmkrUWNFekVoMFVLck81bXhl
WHNSbHpCTTZSS3lkUiszeEE0RGw4QncKTr1ZzIHtkv8aJNKT1v0m+QMJyht43+XJ
0CRxdoZ/HXoymMQ7oZvT8vf6Ehz41aLe1gZHl8ZJPexDHrSl28NCtg==
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB6dDVCcHlKT1hVYUh5bXVk
cGtZWExJWlQxOVNDWkwrWU9hTi9iT2RLVW5RCjEveHczRDVsWkIyRWIvMTEzRyt6
ZWkzUDhqMVZjT1VKM0tvWjlEdy9DZGsKLS0tIDB0T1gyaTZ6a1JIaGF3dVhEcmdZ
Yzl6QnAyU3l0QkhJQVpTN1ovY1hEUXMKiEPWh4isOmF2MdU6ENPNmwQgAOV7PleP
88PLtUx2K6VKjWPIHknIZ5esoXPVjJXeawDAdSj4gz91A1DrcrYXWA==
-----END AGE ENCRYPTED FILE-----
- recipient: age1exzngtk4d9vcsmcq6ap5xx3ca9qacqjkrv86ymged7msx9z6vfyqsf5sjq
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBlc0tUVjVGVS85YUZOSmJq
a0pvcGV4UDBEc0N0Zk0xVEhUc1l1ZUFFTGxnClNocURmTE5ZaUorSVdWcE1kbW81
U3doQm9ZbHVrdVlsSVhFaEFoSHo5NU0KLS0tIGgvd05PY2tlbnRwbTRrdXpsT0ho
Zm1jbTlSMnA1WDUrZUVCOHNDWWJ2RFUK+cvqFK49rIVj3FITF/4HtCELvZhvkCZ9
8Ss77uE6qtGyhuGWXB0HwnO3fsCpXA62uUt/zv08o9LmIgRi7o7adg==
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwdXcwejJSejkwT3BuSURo
MEluK3plUVdmVG8wcmw3SkI2dThBd1FOZDJzCmg2cHRZMEZIWENiTWdvdWtveTY2
TlN3MkhPT0N4enN3RlBJbWNUK1N0QXMKLS0tIEFOT2J6VlpLWmduK2pWalIvOWNo
NFhiM1lWcExhcXBrZm8rMzc5WXJoeDAKSXHnzBymsLhXaxHipZig+xfpBjYaADu/
AqOXpfLbZQD15oIMg8+vNR2OOzqRRSq8oY2yI1rhkjZtlTxGiuzANw==
-----END AGE ENCRYPTED FILE-----
- recipient: age1fw4xnh2q52juce94ffn54js708cr6umfwpv0mykuddkea7kr4f0q7a9h05
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBuN0dkcExkR2pyaUxhbUlz
NkR2WTNWRUpHSWdRTFdUY05jcm4ybDdEbW4wCmR1TTV5VlFudHN1cC8yRG5Nd2ts
K3duNEE1dit0Ym9PdmNaM1pEWjlZZU0KLS0tIHBXaXhzQ0VuTWFxdDQrczQ4YTBM
VlhpZ0N2ZmVkSC90NlowUkNuYWZUclEKzQUfWDETV5lPgrtCxYTLtVP8y7R8RFJj
4J1bei0nJHlsap8V88u+QiYRgFsEthd++hzkYmUDvYPsA48PnzMupw==
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBUMUhGMURUdzh4MFgzNDlC
Nzh0UW5WNUh1MDhEQnBod2E5OEVqMmhiTVVrCitmbk1uWkY5Q09COGZRZ2xhNXBl
bnlVUmxDb2FQT0xPN0F3SkgyTVRpWjgKLS0tIGdWN1ptVTlhNUZtTU11VDFMSFlM
djVyTzMyRHA1QnlvdEtaNE5URXVDS00KH+9tHTwQqI7uLubVWfU1IZ19WWDPA9Br
HrnX4nn0AITQCWUkAqWVyGVP5pk5YmlmazLE6xyBz+i2ETT11DHVMw==
-----END AGE ENCRYPTED FILE-----
- recipient: age1pa8cecxaw4y4zea6zjnt0k0mz38g4qunmp6trwy5fvdvw88ttcgsv2dgrv
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2ZGJ4bWNsR0tOa0g5Ym1M
UTJlRS9XRnNaOVBOd3dkS0tmaVJlZU5yd2xVClR0WU1nTnZud0RzeHZERUFRYzRE
bmp1OXorQ09LRzZyUEs1SXlvenZIOVkKLS0tIHBvakxTSTkxZXdBQmpVRWF5YUtF
QnBNcU1ibytoNDZCU1lldzczV0xjUzgK6gIlN6PYv8+ZGhdMuOSVHIkzZ9sU5kvI
ZpB+JirAJzFpYEz2IyT21XKNq9phqyj9lzzinvJQQ7wxsI6ixaiBDQ==
-----END AGE ENCRYPTED FILE-----
- recipient: age1kc0xu0ue2nrrr7w4gam7wlzackv8jv243rxwwndgxjqklgtnp5csdtpgzp
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB6NVU4dUR2Y3hXbWdrdXNN
Rjh4VEE2M1NiTTZiWmpjVXQzSGxSS0l3a1I4Ci95ZUVhbTFtTHNLa3BvRnJRUjda
aVIyREZiL1phNU16OERZSDBvRGovVVUKLS0tIHpGdkh1L280TVp1MnE0L1Q1Z3FV
QnNTaHVsSVh2UmNRVzZ3a082ZjRRbmcKgjnhtWweNUAbmxpb+nN3iL9FOsaXCatu
NyS4pTov3WR9c7SLhDLlbqxeeqd7mBDKLhWiuqiW05J5NQ+g5lXf7g==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2026-02-14T00:09:32Z"
mac: ENC[AES256_GCM,data:nYWQYK5QOA0u3DYGTozSGFMYhx2uMqkAWoqhthgagRFRnKA/j852fVKqRFcwn+fPSQ4e8i4WpcvoM7FVwuFDC+ixNp7xtz16pnswiNS4N/mNEYXfajkon7wIoUYNtrHahUeYlAnID0vYSQFA3XKgV7ZDD9b4V8X5N+yMlVXex4c=,iv:IW7276v0nnmFBe9Z7HIn6Tl9vX4sDoqWdDfJ1uwKoAY=,tag:YC8OiTcoL+nYV4x8rkivbg==,type:str]
+34
View File
@@ -0,0 +1,34 @@
{
den,
modules,
inputs,
...
}:
{
flake-file.inputs = {
spicetify-nix.url = "github:Gerg-L/spicetify-nix";
};
modules.spotify = {
homeManager =
{ pkgs, ... }:
let
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.system};
in
{
imports = [
# Example for NixOS
inputs.spicetify-nix.homeManagerModules.spicetify
];
programs.spicetify = {
enable = true;
enabledExtensions = with spicePkgs.extensions; [
adblockify
hidePodcasts
shuffle # shuffle+ (special characters are sanitized out of extension names)
];
theme = spicePkgs.themes.onepunch;
colorScheme = "dark";
};
};
};
}
+2 -1
View File
@@ -16,6 +16,7 @@
{ pkgs, ... }:
{
imports = [ inputs.stylix.homeModules.stylix ];
gtk.gtk4.theme = null;
stylix = {
enable = true;
autoEnable = false;
@@ -35,7 +36,7 @@
{ pkgs, ... }:
{
imports = [ inputs.stylix.nixosModules.stylix ];
stylix.enable = true;
stylix.enable = false;
stylix.autoEnable = false;
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-hard.yaml";
};
+38
View File
@@ -0,0 +1,38 @@
{
den,
modules,
inputs,
...
}:
{
flake-file.inputs = {
x1e-kernel.url = "git+https://git.scug.io/doloro/x1e-nixos.git?ref=bump-7.1-rc1";
};
modules.surface-patches = {
nixos =
{ pkgs, lib, ... }:
{
imports = with inputs; [
x1e-kernel.nixosModules.default
];
x1e.model = "15"; # "13" (default) or "15" — selects the correct DTB
x1e.cpuParking = false; # loads cpu_parking at boot
x1e.ecReboot = true; # loads ec_reboot at boot, exposes /sys/kernel/ec_reboot/reboot
# Prevent reboot hang - qcom_smd_qrtr workers stuck in D-state
systemd.settings.Manager.DefaultTimeoutStopSec = "15s";
systemd.settings.Manager.DefaultDeviceTimeoutSec = "15s";
# Hardware watchdog (SBSA Generic Watchdog) as safety net
systemd.settings.Manager = {
KExecWatchdogSec = "30s";
RebootWatchdogSec = "30s";
RuntimeWatchdogSec = "30s";
};
# Override udevd stop timeout (D-state workers can't be killed)
systemd.services.systemd-udevd.serviceConfig.TimeoutStopSec = lib.mkForce "10s";
};
};
}
+11 -1
View File
@@ -8,11 +8,21 @@
enable = true;
settings = {
default_session = {
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --sessions ${config.services.xserver.displayManager.sessionData.desktops}/share/xsessions:${config.services.xserver.displayManager.sessionData.desktops}/share/wayland-sessions --remember --remember-user-session";
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --sessions ${config.services.xserver.displayManager.sessionData.desktops}/share/xsessions:${config.services.xserver.displayManager.sessionData.desktops}/share/wayland-sessions --remember --remember-user-session --greeting 'meow meow meow' --time";
user = "greeter";
};
};
};
systemd.services.greetd.serviceConfig = {
Type = "idle";
StandardInput = "tty";
StandardOutput = "tty";
StandardError = "journal"; # Without this errors will spam on screen
# Without these bootlogs will spam on screen
TTYReset = true;
TTYVHangup = true;
TTYVTDisallocate = true;
};
};
};
}
+6 -1
View File
@@ -9,7 +9,7 @@
zen-browser.url = "github:youwen5/zen-browser-flake";
zen-browser.inputs.nixpkgs.follows = "nixpkgs";
};
modules.zen-browser = {
modules.zen-browser = settings: {
homeManager =
{
home,
@@ -42,6 +42,11 @@
];
in
{
wayland.windowManager.hyprland.settings = lib.mkIf settings.default {
bind = [
"$mainMod, E, exec, zen"
];
};
home.packages = [
(pkgs.wrapFirefox
inputs.zen-browser.packages.${pkgs.stdenv.hostPlatform.system}.zen-browser-unwrapped
Generated
+464 -155
View File
File diff suppressed because it is too large Load Diff
+19 -16
View File
@@ -1,48 +1,51 @@
# You FAGGOT; Do NOT edit this file !!!!, run 'nix run .#write-flake'
{
outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } (inputs.import-tree ./config);
inputs = {
den.url = "github:vic/den";
den.url = "github:vic/den?ref=8101ec865c0bf4027d40b9fd8951e3e435a86d64";
disko.url = "github:nix-community/disko";
flake-aspects.url = "github:vic/flake-aspects";
flake-file.url = "github:vic/flake-file";
flake-parts = {
inputs.nixpkgs-lib.follows = "nixpkgs-lib";
url = "github:hercules-ci/flake-parts";
inputs.nixpkgs-lib.follows = "nixpkgs";
};
font-patcher.url = "github:Doloro1978/nix-nerd-fonts-patcher";
heliumFlake = {
inputs.nixpkgs.follows = "nixpkgs";
url = "github:vikingnope/helium-browser-nix-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = {
inputs.nixpkgs.follows = "nixpkgs";
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
hyprland.url = "github:hyprwm/Hyprland";
import-tree.url = "github:vic/import-tree";
nixpkgs.url = "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz";
nixpkgs-lib.follows = "nixpkgs";
nixvim = {
nik-pkgs = {
url = "git+https://git.scug.io/nikkuss/pkgs.git";
inputs.nixpkgs.follows = "nixpkgs";
url = "github:nix-community/nixvim";
};
niri-flake = {
url = "github:sodiboo/niri-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-cachyos-kernel.url = "github:xddxdd/nix-cachyos-kernel/release";
nixpkgs.url = "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz";
nixvim.url = "github:nix-community/nixvim";
raspberry-pi-nix.url = "github:nix-community/raspberry-pi-nix";
sops-nix = {
inputs.nixpkgs.follows = "nixpkgs";
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
spicetify-nix.url = "github:Gerg-L/spicetify-nix";
stylix = {
inputs.nixpkgs.follows = "nixpkgs";
url = "github:nix-community/stylix";
};
systems.url = "github:nix-systems/default";
zen-browser = {
inputs.nixpkgs.follows = "nixpkgs";
};
x1e-kernel.url = "git+https://git.scug.io/doloro/x1e-nixos.git?ref=bump-7.1-rc1";
zen-browser = {
url = "github:youwen5/zen-browser-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
};
}
+5
View File
@@ -0,0 +1,5 @@
██████ █████ ██ ██ ███████
██ ██ ██ ██ ██ ██ ██
██████ ███████ ██ █ ██ ███████
██ ██ ██ ██ ███ ██ ██
██ ██ ██ ███ ███ ███████