Compare commits

..

98 Commits

Author SHA1 Message Date
5911da7f99 various fixes 2026-01-28 10:05:29 +00:00
d1949310c5 change(server): traefik rules 2026-01-28 10:05:29 +00:00
f83a201895 qol(laptop): huge battery optimisations 2026-01-28 00:12:26 +00:00
4ce282f378 add(nixvim): added svelte lsp 2026-01-27 19:23:35 +00:00
d2a8db4d57 rpi5 2026-01-26 12:10:24 +00:00
a4282dd9aa add: systemd resolved 2026-01-26 10:18:01 +00:00
9e4fc8ee21 clean: deleted random files 2026-01-26 10:18:01 +00:00
a31ac455cb update(laptop): using latest linux ver 2026-01-25 15:40:01 +00:00
e5230def14 changes 2026-01-25 15:37:17 +00:00
c08192ac34 qol(hyprland): added some recomeaned stuff from nixos wiki 2026-01-25 12:18:43 +00:00
05de5f2063 nix flake update 2026-01-25 12:15:05 +00:00
9ad81bb8e4 paws 2026-01-25 12:12:29 +00:00
88995ff8f5 added: niri 2026-01-25 12:12:19 +00:00
d492955c8e added.. something 2026-01-22 07:19:22 +00:00
540a0e32e4 rpi-5: awesome, it works 2026-01-22 06:38:24 +00:00
dfbc1ea5a2 bwaaa 2026-01-21 16:54:09 +00:00
d294038801 change(laptop): more batt changes... 2026-01-21 00:51:10 +00:00
f5bc2ef54f change(laptop): more batt changes 2026-01-21 00:48:51 +00:00
a7c6dc133e bwa 2026-01-20 23:52:47 +00:00
a0ba7ce382 wip(server(rpi-5)): more work.. 2026-01-20 22:47:33 +00:00
a0d8a1b0e3 wip(rpi-5): working on rpi-5 server support 2026-01-20 21:36:23 +00:00
92010eedb7 deleted: doloro-wsl 2026-01-20 13:17:48 +00:00
e35ad8eece change(quickshell): replace quickshell with nixpkgs alternative for the time being 2026-01-17 22:05:42 +00:00
2c39488719 fix(wivrn): flake update fixes 2026-01-17 22:05:19 +00:00
cf706f5d3b nix flake update 2026-01-17 21:49:51 +00:00
4440228098 change(hyprland): changes 2026-01-17 21:49:00 +00:00
99e4da91af added(fish): nos and hms with pretty output 2026-01-17 21:49:00 +00:00
6c8e15dc23 clean up(laptop/tuned) 2026-01-16 21:50:14 +00:00
ecec4b8739 did some stuff 2026-01-16 21:20:00 +00:00
4aaa0684c3 a 2026-01-15 02:35:38 +00:00
9fc9742912 mreow 2026-01-15 02:35:19 +00:00
06f32a0d38 fix(tuned/laptop): auto profile swap 2026-01-15 02:27:21 +00:00
175fd9e2d4 rework(tuned/laptop): auto profile swapping. 2026-01-15 01:40:49 +00:00
9e64a358d9 added: hytale launcher to desktop host 2026-01-14 00:11:42 +00:00
57dfdc2cab qol(base16): hex to rgb possible 2026-01-11 01:54:56 +01:00
9151cb04eb change(hyprland): active border uses base 6 2026-01-10 23:21:57 +01:00
353f449f80 added(mods): base16 mod, currently has gruvbox 2026-01-10 23:21:14 +01:00
c7f7a8f078 added(laptop): intel-gpu-tools 2026-01-07 13:24:06 +00:00
cf6cb08e8c change(laptop): changed tlp for tuneD 2026-01-07 13:23:54 +00:00
da91fdfd6d change(nixvim): changed theme 2026-01-07 13:23:40 +00:00
648245a0d8 clean(overlay): remove unused ytm overlay 2026-01-07 13:23:26 +00:00
e247eded74 fix(ytm): renamed 2026-01-07 13:23:08 +00:00
47072e20e9 added(laptop): more util program 2026-01-07 08:59:03 +00:00
dc10d3b55d qol(laptop): attempted more battery optimisations 2026-01-07 08:57:46 +00:00
d98fe007f1 added: result/ to git ignore 2026-01-07 08:57:19 +00:00
3f30db6fac mreo 2026-01-07 08:56:57 +00:00
eb0e26d456 blender shouldnt be compiled from source now 2026-01-06 20:29:51 +00:00
2b0eefad9f added: more laptop changes 2026-01-06 20:29:38 +00:00
e8d1306e02 nix flake update 2026-01-06 20:29:22 +00:00
66c6332023 fix: vesktop compile 2026-01-06 20:29:07 +00:00
07d63e38b0 laptop: power profiles 2026-01-06 16:14:04 +00:00
562513fcd6 reenabled: helium and fixed it 2026-01-05 17:53:30 +00:00
f942349dca meow 2026-01-04 20:13:33 +00:00
821f6b16da qol: changes 2026-01-04 20:13:18 +00:00
d64b22e394 laptop(npu): added support 2026-01-04 11:18:45 +00:00
95178cab63 added: hyfetch 2026-01-03 17:01:36 +00:00
28e7c64262 laptop(battery): more optimizations 2026-01-03 13:55:11 +00:00
017fc7105e laptop(battery): rfkills the wifi and bluetooth apon sleep 2026-01-03 11:59:22 +00:00
8a3c5e155a laptop(battery): power saving is more aggresive now 2026-01-02 01:33:48 +00:00
f0360d6bdb qol(hyprland): no more quickshell blur 2026-01-01 20:18:43 +00:00
9326350125 added(nixvim): typescript lsp 2025-12-31 10:11:14 +00:00
f978a84650 !qol: replaced helium with zed-browser 2025-12-30 20:34:55 +00:00
f029d5fedd a lot of work 2025-12-30 16:35:44 +00:00
a1b117c408 mod(hyprland): added wlogout layout 2025-12-29 11:29:58 +00:00
294fc0a229 mod(remoteBuilder): works 2025-12-29 11:23:55 +00:00
33b2854c19 ssh: made root able to use id file 2025-12-29 10:50:48 +00:00
db287b22eb mod(remoteBuilder): added laptop pub key to remotebuild 2025-12-29 10:28:28 +00:00
12365b3815 mod(remoteBuilder): initial passwd 2025-12-29 10:20:22 +00:00
8998dfe127 laptop: fixed something 2025-12-29 10:18:49 +00:00
4c227f6f3a secrets/sops: added laptop system 2025-12-29 10:13:32 +00:00
2204ed7e89 mod(remoteBuilder): fixed it lol 2025-12-29 09:53:16 +00:00
6c298aee35 modules: added builders 2025-12-28 23:07:51 +00:00
73e7fb50c7 secrets: reencrypted 2025-12-28 23:07:37 +00:00
19c65f7f11 sops: system key pc added 2025-12-28 23:07:24 +00:00
51ca720683 more nix flake update? 2025-12-28 23:07:07 +00:00
f55324846a nix flake update.. 2025-12-28 19:57:13 +00:00
e7a1f7a13c secrets(doloro): fixed sops not decrypting 2025-12-28 19:40:32 +00:00
1e73d7a66e sops updates 2025-12-28 17:18:45 +00:00
dad4788bef modules: added wakatime module stub 2025-12-28 17:18:25 +00:00
8ea99dc660 laptop: default sops key file 2025-12-28 16:50:53 +00:00
163dd16ad7 secrets: re-encrypted with new pubkeys 2025-12-28 16:49:59 +00:00
68d3d74540 sops: Updated Laptop pubkey 2025-12-28 16:48:00 +00:00
06f539823b qol: charging indicater should be more acurate 2025-12-28 15:10:35 +00:00
faed33b0cc bye random results file 2025-12-28 15:10:00 +00:00
faeaa62edf qol: bar has blur now 2025-12-28 05:01:18 +00:00
88be74cf74 Squash merge modularization into main 2025-12-28 00:14:33 +00:00
8a3678428b Squash merge bar-rework into main 2025-12-28 00:14:00 +00:00
976e7ef271 wip: laptop work 2025-12-24 16:28:55 +00:00
7b5bd4542c a 2025-12-23 23:38:11 +01:00
2bbb8229c0 wip: wip 2025-12-23 21:33:00 +00:00
da85b5cd0c qol(nixvim): added qml lsp 2025-12-21 23:55:31 +00:00
38f1375768 wip: adding plymouth (?) 2025-12-21 23:55:05 +00:00
b99614fddf added: google sans code font (nerds font) 2025-12-15 23:45:04 +00:00
a49d1e27bd added: fonts 2025-12-15 22:36:55 +00:00
ba87100421 added: custom discord rpc 2025-12-13 15:02:29 +00:00
dcbc756ac5 qol(hyprland): no notifications on screenshare 2025-12-12 20:58:05 +00:00
1482bb0088 qol(nixvim): file browser preview 2025-12-11 10:31:09 +00:00
b5153f6125 qol(greetd): updated hyprland start cmd 2025-12-11 10:22:59 +00:00
104 changed files with 3380 additions and 632 deletions

2
.gitignore vendored
View File

@@ -3,3 +3,5 @@ nix/nixos.qcow2
nix_file.tar.gz nix_file.tar.gz
nvim nvim
tmux/plugins tmux/plugins
modules/quickshell/quickshell/.qmlls.ini
result

10
.sops.yaml Normal file
View File

@@ -0,0 +1,10 @@
---
creation_rules:
# Rule to encrypt YAML secret files in a specific directory
- encrypted_regex: '^(data|stringData)$' # Encrypt data and stringData by default (useful for Kubernetes secrets)
path_regex: secrets/.*\.yaml$ # Applies to all files in the secrets/ directory
age:
- "age1ykcy2r4kk729e7adqxu8s24ujc60z5eux7ma0ca4ruzydwgm5p6qmdp838" # pc-user-doloro
- "age1e6vws55p0g23qzthm4qa93hpt6lqmck6670gkygph0sc0j7my4uq5wqjfh" # pc-system
- "age1x3lahhkefkap67cdmdjcqaxan9hp62er78akr79v9m73nvgugpeqk0y32a" # laptop-user-doloro
- "age1exzngtk4d9vcsmcq6ap5xx3ca9qacqjkrv86ymged7msx9z6vfyqsf5sjq" # laptop-system

1091
flake.lock generated

File diff suppressed because it is too large Load Diff

103
flake.nix
View File

@@ -3,22 +3,39 @@
inputs = { inputs = {
# Specify the source of Home Manager and Nixpkgs. # Specify the source of Home Manager and Nixpkgs.
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
rpi-nixpkgs.url = "github:nvmd/nixpkgs/modules-with-keys-25.11";
home-manager = { home-manager = {
url = "github:nix-community/home-manager"; url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
nixos-wsl.url = "github:nix-community/NixOS-WSL/main"; nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
nix-meow.url = "git+https://git.scug.io/nikkuss/nix-meow.git"; # config manager, meow'd nix-meow.url = "git+https://git.scug.io/nikkuss/nix-meow.git?ref=paws"; # config manager, meow'd
hyprland.url = "github:hyprwm/Hyprland"; hyprland.url = "github:hyprwm/Hyprland";
rsRPC.url = "github:Doloro1978/rsRPC";
protonhax.url = "github:linusfri/protonhax-nix";
hytale-launcher.url = "github:JPyke3/hytale-launcher-nix";
quickshell = { quickshell = {
url = "git+https://git.outfoxxed.me/outfoxxed/quickshell"; url = "git+https://git.outfoxxed.me/outfoxxed/quickshell";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
heliumFlake = {
url = "github:vikingnope/helium-browser-nix-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
nikkuss-pkgs = { nikkuss-pkgs = {
url = "git+https://git.scug.io/nikkuss/pkgs"; url = "git+https://git.scug.io/nikkuss/pkgs";
# inputs.nixpkgs.follows = "nixpkgs"; # inputs.nixpkgs.follows = "nixpkgs";
}; };
zen-browser = {
url = "github:0xc000022070/zen-browser-flake";
inputs = {
# IMPORTANT: we're using "libgbm" and is only available in unstable so ensure
# to have it up-to-date or simply don't specify the nixpkgs input
nixpkgs.follows = "nixpkgs";
home-manager.follows = "home-manager";
};
};
sops-nix = { sops-nix = {
url = "github:Mic92/sops-nix"; url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@@ -46,6 +63,10 @@
nixpkgs-gamescope = { nixpkgs-gamescope = {
url = "github:Nixos/nixpkgs?rev=8fcb6f1c4948305af52d19f887b89011ee2c080d"; url = "github:Nixos/nixpkgs?rev=8fcb6f1c4948305af52d19f887b89011ee2c080d";
}; };
font-patcher.url = "github:Doloro1978/nix-nerd-fonts-patcher";
nixos-raspberrypi.url = "github:nvmd/nixos-raspberrypi/develop";
raspberry-pi-nix.url = "github:nix-community/raspberry-pi-nix";
niri-flake.url = "github:sodiboo/niri-flake";
}; };
outputs = outputs =
inputs@{ inputs@{
@@ -77,22 +98,50 @@
}; };
}); });
}) })
( # (
final: prev: # final: prev:
let # let
system = prev.stdenv.hostPlatform.system; # system = prev.stdenv.hostPlatform.system;
pkgs_gamescope = import inputs.nixpkgs-gamescope { # pkgs_gamescope = import inputs.nixpkgs-gamescope {
inherit system; # inherit system;
config = { # config = {
allow_unfree = true; # allow_unfree = true;
}; # };
}; # };
packageNix = "${inputs.nixpkgs-gamescope}/pkgs/by-name/ga/gamescope/package.nix"; # packageNix = "${inputs.nixpkgs-gamescope}/pkgs/by-name/ga/gamescope/package.nix";
in # in
{ # {
gamescope = pkgs_gamescope.callPackage packageNix { }; # gamescope = pkgs_gamescope.callPackage packageNix { };
} # }
) # )
# (self: super: {
# intel-npu-driver = super.intel-npu-driver.overrideAttrs (oldAttrs: rec {
# installPhase = ''
# mkdir -p $out/lib/firmware
# ${oldAttrs.installPhase}
# '';
# });
# })
(final: prev: {
vesktop = prev.vesktop.overrideAttrs (old: {
preBuild = ''
cp -r ${prev.electron.dist} electron-dist
chmod -R u+w electron-dist
'';
buildPhase = ''
runHook preBuild
pnpm build
pnpm exec electron-builder \
--dir \
-c.asarUnpack="**/*.node" \
-c.electronDist="electron-dist" \
-c.electronVersion=${prev.electron.version}
runHook postBuild
'';
});
})
]; ];
utils = nix-meow.lib.setup { utils = nix-meow.lib.setup {
inherit (inputs) home-manager nixpkgs; inherit (inputs) home-manager nixpkgs;
@@ -109,6 +158,7 @@
}; };
inherit (utils) mkHost; inherit (utils) mkHost;
configurations = [ configurations = [
# Desktops
(mkHost { (mkHost {
hardware = "doloro"; hardware = "doloro";
host = "doloro"; host = "doloro";
@@ -120,10 +170,21 @@
}; };
}) })
(mkHost { (mkHost {
hardware = "doloro-wsl"; hardware = "doloro-laptop";
host = "doloro-wsl"; host = "doloro-laptop";
system = "x86_64-linux";
stateVersion = "25.11";
nixpkgsConfig = {
rocmSupport = false;
};
})
# Servers
(mkHost {
hardware = "rpi-5";
host = "rpi-5";
system = "aarch64-linux"; system = "aarch64-linux";
stateVersion = "25.05"; # nixpkgs = inputs.rpi-nixpkgs;
stateVersion = "25.11";
nixpkgsConfig = { nixpkgsConfig = {
rocmSupport = false; rocmSupport = false;
}; };

View File

@@ -0,0 +1,62 @@
{inputs, ...}:{imports = [inputs.disko.nixosModules.disko]; disko.devices = {
disk = {
main = {
device = "/dev/nvme0n1";
type = "disk";
content = {
type = "gpt";
partitions = {
boot = {
name = "boot";
size = "1M";
type = "EF02";
};
ESP = {
name = "ESP";
priority = 1;
size = "4G";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
mountOptions = [ "umask=0077" ];
};
};
plainSwap = {
size = "48G";
content = {
type = "swap";
discardPolicy = "both"; # Both "once" and page discard policies
resumeDevice = true; # Use for hibernation resume device
};
};
root = {
size = "100%";
content = {
type = "btrfs";
extraArgs = [ "-f" ]; # Override existing partition
# Subvolumes must set a mountpoint in order to be mounted,
# unless their parent is mounted
subvolumes = {
# Subvolume name is different from mountpoint
"@" = {
mountpoint = "/";
};
# Subvolume name is the same as the mountpoint
"@home" = {
mountpoint = "/home";
};
# Parent is not mounted so the mountpoint must be set
"@nix" = {
mountpoint = "/nix";
};
};
};
};
};
};
};
};
};
}

View File

@@ -0,0 +1,29 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
config,
lib,
pkgs,
modulesPath,
...
}:
{
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [
"xhci_pci"
"thunderbolt"
"vmd"
"nvme"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@@ -0,0 +1 @@
{...}: {}

View File

@@ -0,0 +1 @@
{lib,...}:{imports=[./disks.nix ./hardware-configuration.nix]; }

View File

@@ -1,2 +0,0 @@
{...}: {
}

49
hardwares/rpi-5/disks.nix Normal file
View File

@@ -0,0 +1,49 @@
{ inputs, lib, ... }:
{
imports = [ inputs.disko.nixosModules.disko ];
disko.devices = {
disk = {
main = {
device = "/dev/disk/by-label/NIXOS_SD";
type = "disk";
content = {
type = "gpt";
partitions = {
boot = {
name = "boot";
size = "1M";
type = "EF02";
};
ESP = {
name = "ESP";
priority = 1;
size = "4G";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
mountOptions = [ "umask=0077" ];
};
};
plainSwap = {
size = "8G";
content = {
type = "swap";
discardPolicy = "both"; # Both "once" and page discard policies
};
};
root = {
size = "100%";
content = {
type = "filesystem";
format = "ext4";
mountpoint = "/";
};
};
};
};
};
};
};
}

1
hardwares/rpi-5/home.nix Normal file
View File

@@ -0,0 +1 @@
{...}: {}

35
hardwares/rpi-5/nixos.nix Normal file
View File

@@ -0,0 +1,35 @@
{
lib,
inputs,
modulesPath,
...
}:
{
imports = [
# ./disks.nix
# (modulesPath + "/installer/sd-card/sd-image-aarch64.nix")
];
# fileSystems = {
# "/" = {
# device = "/dev/disk/by-label/NIXOS_SD";
# fsType = "ext4";
# options = [ "noatime" ];
# };
# };
boot.supportedFilesystems = lib.mkForce [
"btrfs"
"reiserfs"
"vfat"
"ext4"
"f2fs"
"xfs"
"ntfs"
"cifs"
];
nixpkgs.overlays = [
# https://github.com/NixOS/nixpkgs/issues/126755#issuecomment-869149243
(final: super: {
makeModulesClosure = x: super.makeModulesClosure (x // { allowMissing = true; });
})
];
}

View File

@@ -1,41 +1,76 @@
{ {
inputs, inputs,
config, config,
system,
pkgs, pkgs,
fetchFromGitHub, fetchFromGitHub,
... ...
}: }:
{ {
imports = [ imports = [
# ./modules/hyprland/home.nix inputs.sops-nix.homeManagerModules.sops
# ./modules/quickshell/home.nix
# ./modules/chromium/home.nix
#./modules/neovim/home.nix
# ./modules/stylix/home.nix
#../../modules/nixvim/home.nix
#../../modules/tmux/home.nix
#../../modules/theme/home.nix
# ./modules/spicetify/home.nix
# ./modules/obs/home.nix
# ./modules/blender/home.nix
#../../modules/fish/home.nix
# ./modules/ytm/home.nix
#../../overlays.nix
]; ];
sops = {
age.keyFile = "/home/doloro/.config/sops/age/key.txt"; # must have no password!
};
modules = { modules = {
Hyprland.enable = true;
quickshell.enable = true;
# chromium.enable = true;
wivrn.enable = false;
helium.enable = true;
sops.enable = true;
wakatime.enable = false;
# remoteBuild.use-remote-builders = true;
nixvim.enable = true; nixvim.enable = true;
tmux.enable = true; zen-browser.enable = false;
fish.enable = true; kitty.enable = true;
helix.enable = false;
stylix.enable = true; stylix.enable = true;
tmux.enable = true;
theme.enable = true;
obs = {
enable = true;
autostart = false;
};
blender.enable = false;
bottles.enable = false;
fish.enable = true;
youtube-music.enable = true;
unityhub.enable = false;
direnv.enable = true; direnv.enable = true;
git.enable = true; git.enable = true;
rsRPC.enable = true;
}; };
# Home Manager needs a bit of information about you and the paths it should # Home Manager needs a bit of information about you and the paths it should
# manage. # manage.
home.username = "doloro"; home.username = "doloro";
home.homeDirectory = "/home/doloro"; home.homeDirectory = "/home/doloro";
services = {
gpg-agent = {
enable = true;
pinentry = {
package = pkgs.pinentry-qt;
program = "pinentry-qt";
};
};
arrpc = {
enable = false;
};
};
xdg.mimeApps.enable = true;
wayland.windowManager.hyprland.settings = {
monitor = [
"eDP-1, 2880x1800@120, 0x0, 2"
];
input = {
kb_layout = "gb";
follow_mouse = 2;
sensitivity = 0;
};
};
# This value determines the Home Manager release that your configuration is # This value determines the Home Manager release that your configuration is
# compatible with. This helps avoid breakage when a new Home Manager release # compatible with. This helps avoid breakage when a new Home Manager release
# introduces backwards incompatible changes. # introduces backwards incompatible changes.
@@ -45,26 +80,23 @@
# release notes. # release notes.
home.stateVersion = "25.05"; # Please read the comment before changing. home.stateVersion = "25.05"; # Please read the comment before changing.
services.gpg-agent = {
enable = true;
pinentry = {
package = pkgs.pinentry-qt;
program = "pinentry-qt";
};
};
# The home.packages option allows you to install Nix packages into your # The home.packages option allows you to install Nix packages into your
# environment. # environment.
home.packages = with pkgs; [ home.packages = with pkgs; [
hello hello
# vim vim
# telegram-desktop telegram-desktop
# vesktop # vesktop
# spotify legcord
# pavucontrol pavucontrol
lazygit lazygit
btop
sops sops
alcom
gcr
qbittorrent
intel-gpu-tools
]; ];
# sops.age.keyFile = "/home/doloro/.config/sops/age/key.txt";
# Home Manager is pretty good at managing dotfiles. The primary way to manage # Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'. # plain files is through 'home.file'.
@@ -100,11 +132,15 @@
home.sessionVariables = { home.sessionVariables = {
EDITOR = "nvim"; EDITOR = "nvim";
}; };
# {{{{{ TODO Put in different file services = {
# }}}}} dunst = {
enable = true;
};
};
xdg.configFile."mimeapps.list".force = true;
# Let Home Manager install and manage itself. # Let Home Manager install and manage itself.
programs = { programs = {
home-manager.enable = true;
ssh = { ssh = {
enable = true; enable = true;
enableDefaultConfig = false; enableDefaultConfig = false;
@@ -112,12 +148,12 @@
"*" = { "*" = {
addKeysToAgent = "yes"; addKeysToAgent = "yes";
identityFile = [ identityFile = [
"~/.ssh/id_github"
"~/.ssh/id_gitea_scug_io"
"~/.ssh/id_ed25519" "~/.ssh/id_ed25519"
"~/.ssh/id_gitea_scug"
]; ];
}; };
}; };
}; };
home-manager.enable = true;
}; };
} }

View File

@@ -0,0 +1,149 @@
{ pkgs, lib, ... }:
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
'';
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
'';
in
{
services.tlp = {
enable = true;
settings = {
# Wireless power saving
WIFI_PWR_ON_BAT = "1";
# USB autosuspend
USB_AUTOSUSPEND = "1";
# 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 = "on";
RUNTIME_PM_ON_BAT = "auto";
# Disable Bluetooth on battery
# DEVICES_TO_DISABLE_ON_BAT = "bluetooth";
# Restore brightness on battery
RESTORE_BRIGHTNESS_ON_BAT = "1";
PCIE_ASPM_ON_AC = "balanced";
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;
CPU_MAX_PERF_ON_BAT = 50;
PLATFORM_PROFILE_ON_AC = "balanced";
PLATFORM_PROFILE_ON_BAT = "quiet";
START_CHARGE_THRESH_BAT0 = 40; # 40 and below it starts to charge
STOP_CHARGE_THRESH_BAT0 = 80; # 80 and above it stops charging
};
};
services.thermald.enable = true;
services.upower = {
enable = true;
};
services.auto-cpufreq.enable = true;
systemd.targets = {
"ac" = {
description = "On AC power";
unitConfig = {
StopWhenUnneeded = "yes";
};
};
"battery" = {
description = "On battery power";
unitConfig = {
StopWhenUnneeded = "yes";
};
};
};
services.udev.extraRules = ''
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"
'';
services.auto-cpufreq.settings = {
battery = {
governor = "powersave";
turbo = "never";
};
charger = {
governor = "performance";
turbo = "auto";
};
};
boot.kernelParams = [
# "mem_sleep_default=deep"
# "i915.fastboot=1"
"pcie_aspm=force"
"ahci.mobile_lpm_policy=1"
];
services.logind.settings.Login = {
HandleLidSwitch = "suspend";
HandleLidSwitchExternalPower = "suspend";
HandleLidSwitchDocked = "ignore";
};
systemd.sleep.extraConfig = ''
HibernateDelaySec=30min
SuspendEstimationSec=120
'';
systemd.services.gpu-limit-on-batt = {
enable = true;
description = "Using rfkill; disable all rf devices before sleeping.";
before = [ "battery.target" ];
serviceConfig = {
Type = "oneshot";
ExecStart = "${batt-gpu}";
RemainAfterExit = true;
};
wantedBy = [ "battery.target" ];
partOf = [ "battery.target" ];
};
systemd.services.gpu-limit-on-ac = {
enable = true;
description = "Using rfkill; disable all rf devices before sleeping.";
before = [ "ac.target" ];
serviceConfig = {
Type = "oneshot";
ExecStart = "${ac-gpu}";
RemainAfterExit = true;
};
wantedBy = [ "ac.target" ];
partOf = [ "ac.target" ];
};
systemd.services.rfkill-sleep-wake = {
enable = true;
description = "Using rfkill; disable all rf devices before sleeping.";
before = [ "sleep.target" ];
serviceConfig = {
Type = "oneshot";
ExecStop = "${pkgs.utillinux}/bin/rfkill unblock all";
ExecStart = "${pkgs.utillinux}/bin/rfkill block all";
RemainAfterExit = true;
};
wantedBy = [ "sleep.target" ];
partOf = [ "sleep.target" ];
};
# one of "ignore", "poweroff", "reboot", "halt", "kexec", "suspend", "hibernate", "hybrid-sleep", "suspend-then-hibernate", "lock"
powerManagement = {
enable = true;
# powertop.enable = true;
};
}

View File

@@ -0,0 +1,197 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page, on
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
{
config,
lib,
inputs,
pkgs,
nix-meow,
...
}:
let
sops = inputs.sops-nix;
in
{
imports = [
inputs.sops-nix.nixosModules.sops
./laptop.nix
];
modules = {
fish.enable = true;
greetd.enable = true;
stylix.enable = true;
steam.enable = true;
Hyprland.enable = true;
# remoteBuild.use-remote-builders = true;
wivrn.enable = false;
fonts.enable = true;
};
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# boot.kernelPackages = pkgs.linuxPackages_6_12; # Hibernate works on 6.12 but not on latest
boot.kernelPackages = pkgs.linuxPackages_latest; # Unpinned the linux version for now.. as i am not using hibernate that often
networking.hostName = "doloro-nixos-laptop"; # Define your hostname.
security.rtkit.enable = true;
# Configure network connections interactively with nmcli or nmtui.
networking.networkmanager.enable = true;
# Set your time zone.
# time.timeZone = "Europe/London";
services.automatic-timezoned.enable = true;
nix.settings = {
substituters = [
"https://nix-community.cachix.org"
"https://cache.nixos.org/"
"https://attic.scug.io/pkgs"
];
trusted-public-keys = [
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"pkgs:+sRbfiZMMX5R3PuAPtIRz/emowDoGZNpozibrnrAvuc="
];
experimental-features = [
"flakes"
"nix-command"
];
trusted-users = [
"doloro"
];
};
services.gnome.gnome-keyring.enable = 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
];
};
};
services.openssh = {
enable = true;
settings = {
PasswordAuthentication = true;
PermitRootLogin = "prohibit-password";
};
};
users.users.root.openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBaa6Z5qtBSLEz+A4fQGYPfkOISsRQlmKkVbcx2zxML7"
];
# Select internationalisation properties.
# i18n.defaultLocale = "en_US.UTF-8";
# console = {
# font = "Lat2-Terminus16";
# keyMap = "us";
# useXkbConfig = true; # use xkb.options in tty.
# };
# Enable the X11 windowing system.
services.xserver.enable = true;
# sops.age.keyFile = "/etc/ssh/ssh_host_ed25519_key";
sops = {
defaultSopsFile = builtins.toPath "${nix-meow.flakeRoot}/secrets/users.yaml";
secrets = {
root-hashed_password = {
neededForUsers = true;
};
doloro-hashed_password = {
neededForUsers = true;
};
};
};
services.pipewire = {
enable = true;
pulse.enable = true;
};
services.libinput.enable = true;
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
# Define a user account. Don't forget to set a password with passwd.
users.users.doloro = {
isNormalUser = true;
shell = pkgs.fish;
extraGroups = [ "wheel" ]; # Enable sudo for the user.
packages = with pkgs; [
tree
];
hashedPasswordFile = config.sops.secrets."doloro-hashed_password".path;
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBaa6Z5qtBSLEz+A4fQGYPfkOISsRQlmKkVbcx2zxML7" # pc public key
];
# initialPassword = "sex";
};
users.mutableUsers = false;
services.system76-scheduler.enable = true;
# programs.firefox.enable = true;
# List packages installed in system profile.
# You can use https://search.nixos.org/ to find more packages (and options).
environment.systemPackages = with pkgs; [
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
git
wget
# tlp-pd
brightnessctl
nvtopPackages.intel
seahorse
];
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# Copy the NixOS configuration file and link it from the resulting system
# (/run/current-system/configuration.nix). This is useful in case you
# accidentally delete configuration.nix.
# This option defines the first version of NixOS you have installed on this particular machine,
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
#
# Most users should NEVER change this value after the initial install, for any reason,
# even if you've upgraded your system to a new NixOS release.
#
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
# to actually do that.
#
# This value being lower than the current NixOS release does NOT mean your system is
# out of date, out of support, or vulnerable.
#
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
# and migrated your data accordingly.
#
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
system.stateVersion = "25.11"; # Did you read the comment?
}

View File

@@ -1,41 +0,0 @@
{
inputs,
pkgs,
lib,
user,
...
}:
{
modules = {
fish.enable = true;
stylix.enable = true;
};
imports = [
inputs.nixos-wsl.nixosModules.default
];
# rocmSupport = false;
programs = {
dconf.enable = true;
ssh = {
startAgent = true;
};
};
networking.dhcpcd.enable = lib.mkOverride 0 false;
boot.loader.grub.enable = lib.mkOverride 0 false;
wsl = {
enable = true;
defaultUser = user;
docker-desktop.enable = false;
useWindowsDriver = true;
startMenuLaunchers = true;
usbip.enable = true;
};
nix.settings = {
experimental-features = "nix-command flakes";
};
nixpkgs.config.allowUnsupportedSystem = true;
systemd.services."user-runtime-dir@" = {
overrideStrategy = "asDropin";
unitConfig.ConditionPathExists = "!/run/user/%i";
};
}

View File

@@ -6,47 +6,61 @@
... ...
}: }:
{ {
# imports = [
# ../../modules/hyprland/home.nix
# ../../modules/quickshell/home.nix
# ../../modules/chromium/home.nix
# #./modules/neovim/home.nix
# ../../modules/stylix/home.nix
# ../../modules/nixvim/home.nix
# ../../modules/tmux/home.nix
# ../../modules/theme/home.nix
# # ./modules/spicetify/home.nix
# ../../modules/obs/home.nix
# ../../modules/blender/home.nix
# ../../modules/fish/home.nix
# ../../modules/ytm/home.nix
# ../../overlays.nix
# ];
modules = { modules = {
Hyprland.enable = true; hyfetch.enable = true;
Hyprland = {
enable = true;
suspend-on-hibernate = true;
};
niri.enable = false;
quickshell.enable = true; quickshell.enable = true;
# chromium.enable = true; # chromium.enable = true;
wivrn.enable = true; wivrn.enable = true;
sops.enable = true;
helium.enable = true; helium.enable = true;
nixvim.enable = true; nixvim.enable = true;
helix.enable = false; helix.enable = false;
stylix.enable = true; stylix.enable = true;
kitty.enable = true;
tmux.enable = true; tmux.enable = true;
theme.enable = true; theme.enable = true;
obs.enable = true; obs = {
enable = true;
autostart = true;
};
blender.enable = true; blender.enable = true;
zen-browser.enable = false;
bottles.enable = true; bottles.enable = true;
fish.enable = true; fish.enable = true;
youtube-music.enable = true; youtube-music.enable = true;
unityhub.enable = true; unityhub.enable = true;
direnv.enable = true; direnv.enable = true;
git.enable = true; git.enable = true;
rsRPC.enable = true;
}; };
# Home Manager needs a bit of information about you and the paths it should # Home Manager needs a bit of information about you and the paths it should
# manage. # manage.
home.username = "doloro"; home.username = "doloro";
home.homeDirectory = "/home/doloro"; home.homeDirectory = "/home/doloro";
wayland.windowManager.hyprland.settings = {
monitor = [
"HDMI-A-1, 1920x1080@60, 0x0, 1"
"DP-3, 1920x1080@144, 1920x0, 1"
];
exec-once = [
"hyprctl dispatch workspace 2" # shit solution to get quickshell on the right monitor
];
workspace = [
"name:2, monitor:DP-3"
];
input = {
kb_layout = "gb";
follow_mouse = 2;
sensitivity = -0.5;
};
};
services = { services = {
gpg-agent = { gpg-agent = {
enable = true; enable = true;
@@ -76,50 +90,18 @@
hello hello
vim vim
telegram-desktop telegram-desktop
# vesktop vesktop
(pkgs.discord.override { withVencord = true; }) (inputs.protonhax.packages.x86_64-linux.default)
# spotify
pavucontrol pavucontrol
lazygit lazygit
btop btop
sops sops
protontricks
alcom alcom
gcr gcr
qbittorrent qbittorrent
(inputs.hytale-launcher.packages.x86_64-linux.default)
]; ];
# sops.age.keyFile = "/home/doloro/.config/sops/age/key.txt";
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
home.file = {
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
# # symlink to the Nix store copy.
# ".screenrc".source = dotfiles/screenrc;
# # You can also set the file content immediately.
# ".gradle/gradle.properties".text = ''
# org.gradle.console=verbose
# org.gradle.daemon.idletimeout=3600000
# '';
};
# Home Manager can also manage your environment variables through
# 'home.sessionVariables'. These will be explicitly sourced when using a
# shell provided by Home Manager. If you don't want to manage your shell
# through Home Manager then you have to manually source 'hm-session-vars.sh'
# located at either
#
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# /etc/profiles/per-user/doloro/etc/profile.d/hm-session-vars.sh
#
home.sessionVariables = { home.sessionVariables = {
EDITOR = "nvim"; EDITOR = "nvim";
}; };
@@ -128,8 +110,8 @@
enable = true; enable = true;
}; };
}; };
xdg.configFile."mimeapps.list".force = true; xdg.configFile."mimeapps.list".force = true;
# Let Home Manager install and manage itself.
programs = { programs = {
ssh = { ssh = {

View File

@@ -23,9 +23,16 @@ in
stylix.enable = true; stylix.enable = true;
steam.enable = true; steam.enable = true;
Hyprland.enable = true; Hyprland.enable = true;
niri.enable = false;
wivrn.enable = true; wivrn.enable = true;
remoteBuild.become-remote-builder = true;
fonts.enable = true;
}; };
services.resolved.enable = true;
services.gnome.gnome-keyring.enable = true;
# Use the systemd-boot EFI boot loader. # Use the systemd-boot EFI boot loader.
boot.loader.grub.enable = true; boot.loader.grub.enable = true;
boot.loader.grub.device = "nodev"; boot.loader.grub.device = "nodev";
@@ -42,10 +49,14 @@ in
"https://nix-community.cachix.org" "https://nix-community.cachix.org"
"https://cache.nixos.org/" "https://cache.nixos.org/"
"https://attic.scug.io/pkgs" "https://attic.scug.io/pkgs"
"https://cache.nixos-cuda.org"
"https://niri.cachix.org"
]; ];
trusted-public-keys = [ trusted-public-keys = [
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"pkgs:+sRbfiZMMX5R3PuAPtIRz/emowDoGZNpozibrnrAvuc=" "pkgs:+sRbfiZMMX5R3PuAPtIRz/emowDoGZNpozibrnrAvuc="
"cache.nixos-cuda.org:74DUi4Ye579gUqzH4ziL9IyiJBlDpMRn9MBN8oNan9M="
"niri.cachix.org-1:Wv0OmO7PsuocRKzfDoJ3mulSl7Z6oezYhGhR+3W2964="
]; ];
experimental-features = [ experimental-features = [
"flakes" "flakes"
@@ -57,6 +68,21 @@ in
}; };
networking.hostName = "doloroo-main"; # Define your hostname. networking.hostName = "doloroo-main"; # Define your hostname.
boot.kernelPackages = pkgs.linuxPackages_latest;
# Enable "Silent boot"
boot.consoleLogLevel = 3;
boot.initrd.verbose = false;
boot.kernelParams = [
"quiet"
"splash"
"boot.shell_on_fail"
"udev.log_priority=3"
"rd.systemd.show_status=auto"
];
# Hide the OS choice for bootloaders.
# It's still possible to open the bootloader list by pressing any key
# It will just not appear on screen unless a key is pressed
boot.loader.timeout = 0;
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
@@ -67,6 +93,7 @@ in
security.rtkit.enable = true; security.rtkit.enable = true;
sops = { sops = {
# age.keyFile = "/etc/ssh/ssh_host_ed25519_key";
defaultSopsFile = builtins.toPath "${nix-meow.flakeRoot}/secrets/users.yaml"; defaultSopsFile = builtins.toPath "${nix-meow.flakeRoot}/secrets/users.yaml";
secrets = { secrets = {
root-hashed_password = { root-hashed_password = {
@@ -116,6 +143,16 @@ in
"exec" "exec"
]; ];
}; };
boot.plymouth = {
enable = true;
theme = "rings";
themePackages = with pkgs; [
# By default we would install all themes
(adi1090x-plymouth-themes.override {
selected_themes = [ "rings" ];
})
];
};
hardware.nvidia = { hardware.nvidia = {
@@ -149,19 +186,37 @@ in
package = config.boot.kernelPackages.nvidiaPackages.latest; package = config.boot.kernelPackages.nvidiaPackages.latest;
}; };
fonts = { # fonts = {
enableDefaultPackages = true; # enableDefaultPackages = true;
packages = with pkgs; [ # packages =
nerd-fonts.jetbrains-mono # with pkgs;
material-design-icons # [
material-symbols # nerd-fonts.jetbrains-mono
nerd-fonts.caskaydia-cove # material-design-icons
nerd-fonts.noto # material-symbols
noto-fonts-cjk-sans # googlesans-code
noto-fonts-cjk-serif # nerd-fonts.caskaydia-cove
# nerd-fonts.noto
# noto-fonts-cjk-sans
# noto-fonts-cjk-serif
# ]
# ++ [
# (inputs.font-patcher.lib.patchFont {
# font = "${pkgs.googlesans-code}/share/fonts/googlesans-code/GoogleSansCode[wght].ttf";
# name = "Google Sans Code Nerd Font";
# inherit system;
# })
# ];
# fontDir.enable = true;
# };
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
programs.nix-ld.enable = true;
programs.nix-ld.libraries = with pkgs; [
fuse
libusb1
libGL
harfbuzz
]; ];
fontDir.enable = true;
};
# Configure keymap in X11 # Configure keymap in X11
# services.xserver.xkb.layout = "us"; # services.xserver.xkb.layout = "us";
@@ -181,8 +236,8 @@ in
programs = { programs = {
ssh = { ssh = {
# enable = true; # enable = true;
extraConfig = "AddKeysToAgent yes"; # startAgent = true;
startAgent = true;
}; };
fish.enable = true; fish.enable = true;
}; };
@@ -200,6 +255,7 @@ in
extraGroups = [ extraGroups = [
"wheel" "wheel"
"dialout" "dialout"
"networkmanager"
]; # Enable sudo for the user. ]; # Enable sudo for the user.
packages = with pkgs; [ packages = with pkgs; [
tree tree
@@ -218,6 +274,7 @@ in
wget wget
killall killall
sops sops
seahorse
]; ];
# Some programs need SUID wrappers, can be configured further or are # Some programs need SUID wrappers, can be configured further or are

View File

@@ -1,3 +1,7 @@
{ ... }: { ... }:
let
in
{ {
} }

54
hosts/rpi-5/home.nix Normal file
View File

@@ -0,0 +1,54 @@
{
inputs,
config,
pkgs,
fetchFromGitHub,
...
}:
{
modules = {
hyfetch.enable = true;
sops.enable = true;
nixvim.enable = true;
tmux.enable = true;
# theme.enable = true;
fish.enable = true;
direnv.enable = true;
git.enable = true;
};
# Home Manager needs a bit of information about you and the paths it should
# manage.
home.username = "doloro";
home.homeDirectory = "/home/doloro";
# services = {
# };
# This value determines the Home Manager release that your configuration is
# compatible with. This helps avoid breakage when a new Home Manager release
# introduces backwards incompatible changes.
#
# You should not change this value, even if you update Home Manager. If you do
# want to update the value, then make sure to first check the Home Manager
# release notes.
home.stateVersion = "25.11"; # Please read the comment before changing.
# The home.packages option allows you to install Nix packages into your
# environment.
home.packages = with pkgs; [
hello
vim
lazygit
btop
sops
];
home.sessionVariables = {
EDITOR = "nvim";
};
xdg.configFile."mimeapps.list".force = true;
programs = {
home-manager.enable = true;
};
}

99
hosts/rpi-5/nixos.nix Normal file
View File

@@ -0,0 +1,99 @@
{
lib,
pkgs,
inputs,
config,
...
}:
let
rpi-pi = inputs.raspberry-pi-nix;
in
{
# To build an sd-card image
# $ nix build .#nixosConfigurations.rpi-5-rpi-5-aarch64-linux.config.system.build.sdImage --json &| nom
# $ sudo dd if=./result/sd-image/nixos-sd-image-26.05.20260120.80e4adb-aarch64-linux.img of=/dev/sdc conv=fsync status=progress
imports = [
rpi-pi.nixosModules.raspberry-pi
rpi-pi.nixosModules.sd-image
./containers.nix
];
nix.settings = {
substituters = [ "https://nix-community.cachix.org" ];
trusted-public-keys = [ "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" ];
};
services.traefik = {
enable = true;
staticConfigOptions = {
entryPoints = {
web = {
address = ":80";
http.redirections.entrypoint = {
to = "websecure";
scheme = "https";
};
asDefault = true;
};
websecure = {
address = ":443";
asDefault = true;
http.tls.certResolver = "letsencrypt";
};
traefik = {
address = ":8081";
};
};
certificatesResolvers.letsencrypt.acme = {
email = "doloroo@proton.me";
storage = "${config.services.traefik.dataDir}/acme.json";
httpChallenge.entryPoint = "web";
};
api.dashboard = true;
api.insecure = true;
};
};
# TEMP
networking.firewall.enable = false;
users = {
mutableUsers = false;
users.doloro = {
isNormalUser = true;
extraGroups = [ "wheel" ];
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE/4h+WCBBW82puv8SMdUbkWymF4amEMuZitgFztB6oZ" # laptop pub key
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBaa6Z5qtBSLEz+A4fQGYPfkOISsRQlmKkVbcx2zxML7" # pc pub key
];
initialPassword = "meowmeowmeow";
};
users.root = {
initialPassword = "rootmeow";
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE/4h+WCBBW82puv8SMdUbkWymF4amEMuZitgFztB6oZ" # laptop pub key
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBaa6Z5qtBSLEz+A4fQGYPfkOISsRQlmKkVbcx2zxML7" # pc pub key
];
};
};
networking.hostName = "nixos-001-rp5";
services.openssh.enable = true;
environment.systemPackages = with pkgs; [
libraspberrypi
];
sdImage.compressImage = false;
raspberry-pi-nix.board = "bcm2712"; # Rpi 5 - 64bit
# We need to rebuild kernel for 6.12
# raspberry-pi-nix.kernel-version = "v6_12_17";
raspberry-pi-nix.uboot.enable = false;
hardware.enableRedistributableFirmware = true;
system.stateVersion = "25.11";
nixpkgs.hostPlatform = "aarch64-linux";
}

View File

@@ -1 +0,0 @@
age1e6vws55p0g23qzthm4qa93hpt6lqmck6670gkygph0sc0j7my4uq5wqjfh

View File

@@ -0,0 +1,4 @@
_: {
home = ./home.nix;
# nixos: ./nixos.nix;
}

View File

@@ -0,0 +1,34 @@
{
inputs,
config,
lib,
pkgs,
...
}:
let
cfg = config.modules.alecaframe;
in
{
# You gotta install it into prefix yourself. this just makes a desktop file
options.modules.alecaframe = {
enable = lib.mkEnableOption "";
};
config = lib.mkIf cfg.enable {
xdg.desktopEntries = {
alecaframe = {
name = "Alecaframe";
comment = "launches alecaframe";
exec = ''
protonhax run 230410 "
/home/branden/.local/share/Steam/steamapps/compatdata/230410/pfx/drive_c/users/steamuser/AppData/Roaming/Microsoft/Windows/Start
Menu/Programs/Overwolf/AlecaFrame.lnk
"
'';
# icon = "system-reboot";
terminal = false;
type = "Application";
categories = [ "System" ];
};
};
};
}

View File

@@ -0,0 +1,4 @@
_: {
home = ./home.nix;
# nixos: ./nixos.nix;
}

View File

@@ -0,0 +1,62 @@
{
config,
lib,
inputs,
pkgs,
home,
system,
...
}:
# system: "base16"
# name: "Gruvbox dark, hard"
# author: "Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox)"
# variant: "dark"
let
hexToInt = hex: fromTOML "value = 0x${hex}";
hexToRgb =
hex:
let
red = hexToInt (builtins.substring 1 2 hex);
green = hexToInt (builtins.substring 3 2 hex);
blue = hexToInt (builtins.substring 5 2 hex);
in
{
r = red.value;
g = green.value;
b = blue.value;
};
theme =
let
importYaml =
file:
builtins.fromJSON (
builtins.readFile (
pkgs.runCommandNoCC "converted-yaml.json" { } ''
${pkgs.yj}/bin/yj < ${file} > $out
''
)
);
# EDIT THEME HERE
themeFile = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-hard.yaml";
in
importYaml themeFile;
in
{
options.modules.base16 = {
hex = lib.mkOption {
type = lib.types.attrs;
description = ''
Hexadecimal color configuration for Gruvbox dark, hard Base16 theme.
'';
};
rgb = lib.mkOption {
type = lib.types.attrs;
description = ''
Hexadecimal color configuration for Gruvbox dark, hard Base16 theme.
'';
};
};
config.modules.base16.hex = theme.palette;
config.modules.base16.rgb = builtins.mapAttrs (_name: hex: hexToRgb hex) theme.palette;
}

View File

@@ -30,7 +30,7 @@ in
# whole blender config including addons is too fat to include here # whole blender config including addons is too fat to include here
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
home.packages = [ home.packages = [
blender_4_5 blenderPkgs.blender_4_5
]; ];
}; };
# nix'ing a blender config is most likely not possible # nix'ing a blender config is most likely not possible

View File

@@ -0,0 +1,4 @@
_: {
home = ./home.nix;
nixos = ./nixos.nix;
}

39
modules/builder/home.nix Normal file
View File

@@ -0,0 +1,39 @@
{
config,
lib,
pkgs,
fetchFromGitHub,
...
}:
let
cfg = config.modules.remoteBuild;
in
{
options.modules.remoteBuild = {
use-remote-builders = lib.mkEnableOption "remoteBuild";
};
config = lib.mkIf cfg.use-remote-builders {
nix.package = pkgs.nix;
nix.distributedBuilds = true;
nix.settings.builders-use-substitutes = true;
# Define every build machine here..
nix.buildMachines = [
{
# Main desktop pc
# ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKqsFEgtcTDw89GaZJg8P/FE1xngIXmiUZl8j0b+V7n+ root@doloroo-main
hostName = "doloroo-main";
sshUser = "remotebuild";
sshKey = "/root/.ssh/remotebuild";
# protocol = "ssh-ng";
maxJobs = 8;
speedFactor = 2;
supportedFeatures = [
"nixos-test"
"big-parallel"
"kvm"
];
}
];
};
}

62
modules/builder/nixos.nix Normal file
View File

@@ -0,0 +1,62 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.modules.remoteBuild;
remoteBuilder = lib.mkIf cfg.become-remote-builder {
users.users.remotebuild = {
isSystemUser = true;
shell = pkgs.bashInteractive;
group = "remotebuild";
# useDefaultShell = true;
# ssh-keygen -f /root/.ssh/remotebuild
openssh.authorizedKeys.keyFiles = [ ./remotebuild.pub ];
openssh.authorizedKeys.keys = [
# Laptop-system
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE/4h+WCBBW82puv8SMdUbkWymF4amEMuZitgFztB6oZ doloroo@proton.me"
# Laptop-user-doloro
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOuNlm8vq6MvWsVU/RW4oq7npQngjIxNFpjEWbAS/8H2 root@doloro-nixos-laptop"
];
initialPassword = "remotebuilder";
};
users.groups.remotebuild = { };
nix.settings.trusted-users = [ "remotebuild" ];
};
useBulders = lib.mkIf cfg.use-remote-builders {
nix.distributedBuilds = true;
nix.settings.builders-use-substitutes = true;
# Define every build machine here..
# also define in home manager (TODO make a single file with all builders)
nix.buildMachines = [
{
# Main desktop pc
# ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKqsFEgtcTDw89GaZJg8P/FE1xngIXmiUZl8j0b+V7n+ root@doloroo-main
hostName = "doloroo-main";
sshUser = "remotebuild";
sshKey = "/root/.ssh/remotebuild";
system = "x86_64-linux";
maxJobs = 8;
speedFactor = 2;
supportedFeatures = [
"nixos-test"
"big-parallel"
"kvm"
];
}
];
};
in
{
options.modules.remoteBuild = {
use-remote-builders = lib.mkEnableOption "remoteBuild";
become-remote-builder = lib.mkEnableOption "remoteBuild";
};
config = lib.attrsets.recursiveUpdate useBulders remoteBuilder;
}

View File

@@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKqsFEgtcTDw89GaZJg8P/FE1xngIXmiUZl8j0b+V7n+ root@doloroo-main

View File

@@ -2,7 +2,10 @@
config, config,
lib, lib,
pkgs, pkgs,
hostname,
nix-meow,
fetchFromGitHub, fetchFromGitHub,
system,
... ...
}: }:
let let
@@ -14,6 +17,7 @@ in
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
home.shell.enableFishIntegration = true; home.shell.enableFishIntegration = true;
home.packages = [ pkgs.nix-output-monitor ];
programs = { programs = {
fish = { fish = {
enable = true; enable = true;
@@ -23,6 +27,8 @@ in
set -g theme_display_user yes set -g theme_display_user yes
set -g fish_color_autosuggestion 6F6578 set -g fish_color_autosuggestion 6F6578
alias nik 'nix' alias nik 'nix'
alias nos 'sudo echo; sudo nixos-rebuild switch --flake .#${hostname}-${system} --log-format internal-json -v &| nom --json'
alias hms 'home-manager switch --flake .#${hostname}-${system} --log-format internal-json -v &| nom --json'
''; '';
plugins = [ plugins = [
{ {

View File

@@ -0,0 +1,4 @@
_: {
# home = ./home.nix;
nixos = ./nixos.nix;
}

38
modules/fonts/nixos.nix Normal file
View File

@@ -0,0 +1,38 @@
{
inputs,
pkgs,
lib,
config,
...
}:
let
cfg = config.modules.fonts;
in
{
options.modules.fonts = {
enable = lib.mkEnableOption "fonts";
};
config.fonts = lib.mkIf cfg.enable {
enableDefaultPackages = true;
packages =
with pkgs;
[
nerd-fonts.jetbrains-mono
material-design-icons
material-symbols
googlesans-code
nerd-fonts.caskaydia-cove
nerd-fonts.noto
noto-fonts-cjk-sans
noto-fonts-cjk-serif
]
++ [
(inputs.font-patcher.lib.patchFont {
font = "${pkgs.googlesans-code}/share/fonts/googlesans-code/GoogleSansCode[wght].ttf";
name = "Google Sans Code Nerd Font";
inherit system;
})
];
fontDir.enable = true;
};
}

View File

@@ -17,7 +17,7 @@ in
enable = true; enable = true;
settings = { settings = {
default_session = { default_session = {
command = "${tuigreet} --time --remember --cmd Hyprland"; command = "${tuigreet} --time --remember --cmd start-hyprland";
user = "greeter"; user = "greeter";
}; };
}; };

View File

@@ -9,7 +9,6 @@
let let
cfg = config.modules.helium; cfg = config.modules.helium;
# packageNix = "${inputs.nixpkgs-gamescope}/pkgs/by-name/he/helium-browser/package.nix"; # packageNix = "${inputs.nixpkgs-gamescope}/pkgs/by-name/he/helium-browser/package.nix";
# helium = inputs.nikkuss-pkgs.callPackage packageNix { };
in in
{ {
options.modules.helium = { options.modules.helium = {
@@ -17,14 +16,11 @@ in
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
home.packages = [ home.packages = [
inputs.nikkuss-pkgs.packages.x86_64-linux.helium-browser inputs.heliumFlake.packages.x86_64-linux.helium
]; ];
# xdg.mimeApps.defaultApplications = { # Gives me widevine support. yay
# "text/html" = "chromium.desktop"; xdg.configFile."net.imput.helium/WidevineCdm/latest-component-updated-widevine-cdm" = {
# "x-scheme-handler/http" = "chromium.desktop"; text = ''{"Path":"${pkgs.widevine-cdm}/share/google/chrome/WidevineCdm"}'';
# "x-scheme-handler/https" = "chromium.desktop"; };
# "x-scheme-handler/about" = "chromium.desktop";
# "x-scheme-handler/unknown" = "chromium.desktop";
# };
}; };
} }

View File

@@ -0,0 +1,4 @@
_: {
home = ./home.nix;
# nixos = ./nixos.nix;
}

40
modules/hyfetch/home.nix Normal file
View File

@@ -0,0 +1,40 @@
{
config,
lib,
pkgs,
fetchFromGitHub,
...
}:
let
cfg = config.modules.hyfetch;
in
{
options.modules.hyfetch = {
enable = lib.mkEnableOption "hyfetch";
};
config = lib.mkIf cfg.enable {
home.packages = [ pkgs.fastfetch ];
programs.hyfetch = {
enable = true;
settings = {
"preset" = "bisexual";
"mode" = "rgb";
"auto_detect_light_dark" = true;
"light_dark" = "dark";
"lightness" = 0.5;
"color_align" = {
"mode" = "custom";
"custom_colors" = {
"1" = 1;
"2" = 0;
};
};
"backend" = "fastfetch";
"args" = null;
"distro" = null;
"pride_month_disable" = false;
"custom_ascii_path" = null;
};
};
};
}

20
modules/hyfetch/nixos.nix Normal file
View File

@@ -0,0 +1,20 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.modules.fish;
in
{
options.modules.fish = {
enable = lib.mkEnableOption "Fish";
};
config = lib.mkIf cfg.enable {
users.defaultUserShell = pkgs.fish;
programs.fish = {
enable = true;
};
};
}

View File

@@ -28,6 +28,7 @@ in
]; ];
options.modules.Hyprland = { options.modules.Hyprland = {
enable = lib.mkEnableOption "Hyprland"; enable = lib.mkEnableOption "Hyprland";
suspend-on-hibernate = lib.mkEnableOption "soh";
}; };
# TODO, split this into its own module; # TODO, split this into its own module;
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
@@ -41,25 +42,53 @@ in
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland; inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
}; };
programs = { programs = {
hyprlock = {
enable = true;
};
wlogout = { wlogout = {
enable = true; enable = true;
}; layout = [
foot = { {
enable = true; "label" = "lock";
settings = { "action" = "hyprlock";
main = { "text" = "Lock";
term = "xterm-256color"; "keybind" = "l";
}
font = "CaskaydiaCove Nerd Font Mono:size=12"; {
}; "label" = "hibernate";
"action" = "systemctl hibernate";
mouse = { "text" = "Hibernate";
hide-when-typing = "yes"; "keybind" = "h";
}
{
"label" = "logout";
"action" = "uwsm stop";
"text" = "Logout";
"keybind" = "e";
}
{
# TODO add hypr shutdown
"label" = "shutdown";
"action" = "systemctl poweroff";
"text" = "Shutdown";
"keybind" = "s";
}
{
"label" = "suspend";
"action" = "systemctl suspend";
"text" = "Suspend";
"keybind" = "u";
}
{
"label" = "reboot";
"action" = "systemctl reboot";
"text" = "Reboot";
"keybind" = "r";
}
];
}; };
}; };
}; systemd.user.services."hyprland_suspend" = lib.mkIf cfg.suspend-on-hibernate {
};
systemd.user.services."hyprland_suspend" = {
Unit = { Unit = {
Description = "Suspend hyprland"; Description = "Suspend hyprland";
Before = [ Before = [

View File

@@ -7,6 +7,7 @@
}: }:
let let
cfg = config.modules.Hyprland; cfg = config.modules.Hyprland;
pkgs-unstable = inputs.hyprland.inputs.nixpkgs.legacyPackages.${pkgs.stdenv.hostPlatform.system};
in in
{ {
options.modules.Hyprland = { options.modules.Hyprland = {
@@ -14,21 +15,9 @@ in
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
programs.xwayland.enable = true; programs.xwayland.enable = true;
boot.kernelParams = [
"resume=UUID=d9b81619-5772-4ac4-bcd5-552e1e784f9e"
"resume_offset=141042944"
];
boot.resumeDevice = "/dev/disk/by-uuid/d9b81619-5772-4ac4-bcd5-552e1e784f9e";
powerManagement.enable = true;
swapDevices = [
# [[ Hibernate ]]
{
device = "/var/lib/swapfile";
size = 48 * 1024; # 48GB in MB
}
];
programs.hyprland = { programs.hyprland = {
enable = true; enable = true;
withUWSM = true;
# set the flake package # set the flake package
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
# make sure to also set the portal package, so that they are in sync # make sure to also set the portal package, so that they are in sync
@@ -44,5 +33,12 @@ in
substituters = [ "https://hyprland.cachix.org" ]; substituters = [ "https://hyprland.cachix.org" ];
trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ]; trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ];
}; };
hardware.graphics = {
package = pkgs-unstable.mesa;
# if you also want 32-bit support (e.g for Steam)
# enable32Bit = true;
# package32 = pkgs-unstable.pkgsi686Linux.mesa;
};
}; };
} }

View File

@@ -1,16 +1,41 @@
{ inputs, pkgs, ... }: { inputs, pkgs, ... }:
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
{ {
home.packages = [ home.packages = [
pkgs.walker pkgs.tofi
];
wayland.windowManager.hyprland.settings = {
bind = [
"$mainMod, R, exec, ${script}"
]; ];
systemd.user.services.walker-deamon = {
Install = {
WantedBy = [ "hyprland-session.target" ];
};
Service = {
ExecStart = "${pkgs.writeShellScript "watch-store" ''
walker --gapplication-service
''}";
};
}; };
# systemd.user.services.hyprlauncher-deamon = {
# Install = {
# WantedBy = [ "hyprland-session.target" ];
# };
# Service = {
# ExecStart = "${pkgs.writeShellScript "watch-store" ''
# hyprlauncher -d
# ''}";
# };
# };
} }

View File

@@ -8,5 +8,6 @@ in
wayfreeze wayfreeze
grim grim
slurp slurp
killall
]; ];
} }

View File

@@ -1,4 +1,12 @@
{ inputs, pkgs, ... }: {
inputs,
pkgs,
config,
...
}:
let
base16 = config.modules.base16;
in
{ {
home.packages = [ home.packages = [
pkgs.hyprcursor pkgs.hyprcursor
@@ -11,13 +19,6 @@
hyprcursor.enable = true; hyprcursor.enable = true;
}; };
wayland.windowManager.hyprland.settings = { wayland.windowManager.hyprland.settings = {
monitor = [
"HDMI-A-1, 1920x1080@60, 0x0, 1"
"DP-3, 1920x1080@144, 1920x0, 1"
];
exec-once = [
"hyprctl dispatch workspace 2" # shit solution to get quickshell on the right monitor
];
env = [ env = [
"XCURSOR_THEME,BreezeX-RosePine-Linux" "XCURSOR_THEME,BreezeX-RosePine-Linux"
"XCURSOR_SIZE,24" "XCURSOR_SIZE,24"
@@ -30,14 +31,16 @@
gaps_in = 1; gaps_in = 1;
gaps_out = 1; gaps_out = 1;
border_size = 1; border_size = 1;
# col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg "col.active_border" =
# col.inactive_border = rgba(595959aa) "rgb(${toString base16.rgb."base06".r},${toString base16.rgb."base06".g},${toString base16.rgb."base06".b})";
"col.inactive_border" =
"rgb(${toString base16.rgb."base03".r},${toString base16.rgb."base03".g},${toString base16.rgb."base03".b})";
resize_on_border = false; resize_on_border = false;
allow_tearing = true; allow_tearing = true;
layout = "dwindle"; layout = "dwindle";
}; };
decoration = { decoration = {
rounding = 0; rounding = 4;
rounding_power = 1; rounding_power = 1;
active_opacity = 1.0; active_opacity = 1.0;
inactive_opacity = 1.0; inactive_opacity = 1.0;
@@ -47,7 +50,10 @@
}; };
blur = { blur = {
enabled = false; enabled = true;
passes = 1;
new_optimizations = true;
ignore_opacity = false;
}; };
}; };
animations = { animations = {
@@ -63,19 +69,20 @@
"global, 1, 10, default" "global, 1, 10, default"
"border, 1, 5.39, easeOutQuint" "border, 1, 5.39, easeOutQuint"
"windows, 1, 2.79, easeOutQuint" "windows, 1, 2.79, easeOutQuint"
"windowsIn, 1, 1.1, easeOutQuint, popin 87%" "windowsIn, 1, 1, easeOutQuint, popin 87%"
"windowsOut, 1, 1.49, linear, popin 87%" "windowsOut, 1, 1, linear, popin 87%"
"fadeIn, 1, 1.73, almostLinear" "windowsMove, 1, 1, easeInOutCubic"
"fadeOut, 1, 1.46, almostLinear" "fadeIn, 1, 0.5, almostLinear"
"fade, 1, 2.03, quick" "fadeOut, 1, 0.5, almostLinear"
"fade, 1, 1, quick"
"layers, 1, 3.81, easeOutQuint" "layers, 1, 3.81, easeOutQuint"
"layersIn, 1, 4, easeOutQuint, fade" "layersIn, 1, 4, easeOutQuint, fade"
"layersOut, 1, 1.5, linear, fade" "layersOut, 1, 1.5, linear, fade"
"fadeLayersIn, 1, 1.79, almostLinear" "fadeLayersIn, 1, 1.79, almostLinear"
"fadeLayersOut, 1, 1.39, almostLinear" "fadeLayersOut, 1, 1.39, almostLinear"
"workspaces, 1, 1.94, almostLinear, fade" "workspaces, 1, 1, almostLinear, slide"
"workspacesIn, 1, 1.21, almostLinear, fade" "workspacesIn, 1, 1, easeInOutCubic, slide"
"workspacesOut, 1, 1.94, almostLinear, fade" "workspacesOut, 1, 1, easeInOutCubic, slide"
"zoomFactor, 1, 7, quick" "zoomFactor, 1, 7, quick"
]; ];
}; };
@@ -92,19 +99,12 @@
enable_anr_dialog = false; enable_anr_dialog = false;
vfr = true; vfr = true;
}; };
input = {
kb_layout = "gb";
follow_mouse = 2;
sensitivity = -0.5;
};
"$mainMod" = "SUPER"; "$mainMod" = "SUPER";
bind = [ bind = [
"$mainMod, Q, exec, foot"
"$mainMod, C, killactive" "$mainMod, C, killactive"
"$mainMod, M, exit" "$mainMod, M, exec, uwsm stop"
"$mainMod, E, exec, $fileManager" "$mainMod, E, exec, $fileManager"
"$mainMod, V, togglefloating," "$mainMod, V, togglefloating,"
"$mainMod, R, exec, walker"
"$mainMod, P, pseudo, # dwindle" "$mainMod, P, pseudo, # dwindle"
"$mainMod, J, togglesplit, # dwindle" "$mainMod, J, togglesplit, # dwindle"
"$mainMod, left, movefocus, l" "$mainMod, left, movefocus, l"
@@ -141,14 +141,11 @@
"$mainMod, mouse:272, movewindow" "$mainMod, mouse:272, movewindow"
"$mainMod, mouse:273, resizewindow" "$mainMod, mouse:273, resizewindow"
]; ];
workspace = [
"name:2, monitor:DP-3"
];
windowrule = [ windowrule = [
"match:class .*, suppress_event maximize" "match:class .*, suppress_event maximize"
"match:class ^(gamescope)$, workspace 5" "match:class gamescope, workspace 5"
"match:class ^(gamescope)$, fullscreen true" "match:class gamescope, fullscreen true"
"match:class ^(gamescope)$, immediate true" "match:class gamescope, immediate true"
"match:class ^(steam)$, workspace 6 silent" "match:class ^(steam)$, workspace 6 silent"
"match:class ^(vesktop)$, workspace 8 silent" "match:class ^(vesktop)$, workspace 8 silent"
"match:class ^(org.telegram.desktop)$, workspace 8 silent" "match:class ^(org.telegram.desktop)$, workspace 8 silent"
@@ -156,6 +153,10 @@
"match:initial_title ^(OBS Studio Crash Detected)$, pin true" "match:initial_title ^(OBS Studio Crash Detected)$, pin true"
"match:initial_title ^(Discord Popout)$, workspace 1 silent" "match:initial_title ^(Discord Popout)$, workspace 1 silent"
]; ];
layerrule = [
"match:namespace ^(notifications)$, no_screen_share true"
# "match:namespace ^(quickshell)$, blur true"
];
# exec-once = [ # exec-once = [
# ]; # ];
# we need to auto launch: quickshell, steam, ar_rpc (maybe), vesktop, telegram, qbit, and obs # we need to auto launch: quickshell, steam, ar_rpc (maybe), vesktop, telegram, qbit, and obs

View File

@@ -0,0 +1,4 @@
_: {
nixos = ./nixos.nix;
home = ./home.nix;
}

46
modules/kitty/home.nix Normal file
View File

@@ -0,0 +1,46 @@
{
config,
lib,
inputs,
pkgs,
home,
system,
...
}:
let
cfg = config.modules.kitty;
in
{
options.modules.kitty = {
enable = lib.mkEnableOption "kitty configuration module";
};
config = lib.mkIf cfg.enable {
programs.kitty = {
enable = true;
font = {
name = "Google Sans Code Nerd Font";
size = 11;
};
settings = {
sync_to_monitor = "yes";
background_opacity = 0.6;
cursor_trail = 1;
### Blur is handled in hyprland config ###
# enable_background_blur = "true";
# background_blur = 1;
};
};
## i could use picom but i just used hyprland blur lol
# services.picom = {
# # for cool gpu accelerated kitty effiect like blurred bg
# enable = true;
# backend = "glx";
# activeOpacity = 0.5;
# };
wayland.windowManager.hyprland.settings = {
bind = [
"$mainMod, q, exec, kitty"
];
};
};
}

19
modules/kitty/nixos.nix Normal file
View File

@@ -0,0 +1,19 @@
{
config,
lib,
inputs,
pkgs,
home,
system,
...
}:
let
cfg = config.modules.kitty;
in
{
options.modules.kitty = {
enable = lib.mkEnableOption "kitty configuration module";
};
config = lib.mkIf cfg.enable {
};
}

4
modules/niri/default.nix Normal file
View File

@@ -0,0 +1,4 @@
_: {
nixos = ./nixos.nix;
home = ./home.nix;
}

158
modules/niri/home.nix Normal file
View File

@@ -0,0 +1,158 @@
{
config,
lib,
inputs,
pkgs,
home,
system,
...
}:
let
cfg = config.modules.niri;
in
{
imports = [ inputs.niri-flake.homeModules.niri ];
options.modules.niri = {
enable = lib.mkEnableOption "niri configuration module";
};
config = lib.mkIf cfg.enable {
# nixpkgs.overlays = [ inputs.niri-flake.overlays.niri ];
gtk.enable = lib.mkForce false;
home.packages = with pkgs; [ kickoff ];
programs = {
niri = {
enable = true;
# package = pkgs.niri-unstable;
settings = {
input = {
keyboard = {
xkb = {
layout = "gb";
};
numlock = true;
};
};
outputs = {
DP-3 = {
# Philips Consumer Electronics Company PHL 272E1GZ UK02101011104
mode = {
width = 1920;
height = 1080;
refresh = 165.0;
};
focus-at-startup = true;
variable-refresh-rate = true;
};
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+T".action.spawn = "helium";
"Mod+R".action.spawn = "kickoff";
"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;
};
};
};
wlogout = {
enable = true;
layout = [
{
"label" = "lock";
"action" = "hyprlock";
"text" = "Lock";
"keybind" = "l";
}
{
"label" = "hibernate";
"action" = "systemctl hibernate";
"text" = "Hibernate";
"keybind" = "h";
}
{
"label" = "logout";
"action" = "loginctl terminate-user $USER";
"text" = "Logout";
"keybind" = "e";
}
{
# TODO add hypr shutdown
"label" = "shutdown";
"action" = "systemctl poweroff";
"text" = "Shutdown";
"keybind" = "s";
}
{
"label" = "suspend";
"action" = "systemctl suspend";
"text" = "Suspend";
"keybind" = "u";
}
{
"label" = "reboot";
"action" = "systemctl reboot";
"text" = "Reboot";
"keybind" = "r";
}
];
};
};
};
}

20
modules/niri/nixos.nix Normal file
View File

@@ -0,0 +1,20 @@
{
config,
lib,
inputs,
pkgs,
home,
system,
...
}:
let
cfg = config.modules.niri;
in
{
imports = [ inputs.niri-flake.nixosModules.niri ];
options.modules.niri = {
enable = lib.mkEnableOption "niri configuration module";
};
config = lib.mkIf cfg.enable {
};
}

View File

@@ -28,7 +28,7 @@ in
config.programs.nixvim = lib.mkIf cfg.enable { config.programs.nixvim = lib.mkIf cfg.enable {
enable = true; enable = true;
defaultEditor = true; defaultEditor = true;
colorschemes.tokyonight.enable = true; colorschemes.gruvbox-material.enable = true;
performance.byteCompileLua = { performance.byteCompileLua = {
enable = true; enable = true;
plugins = true; plugins = true;
@@ -37,10 +37,18 @@ in
configs = true; configs = true;
}; };
plugins = { plugins = {
todo-comments.enable = true;
lsp-status.enable = true; lsp-status.enable = true;
transparent.enable = true;
lsp = { lsp = {
enable = true; enable = true;
servers = { servers = {
qmlls = {
enable = true;
config = {
cmd = "-E";
};
};
rust_analyzer = { rust_analyzer = {
enable = true; enable = true;
installCargo = false; installCargo = false;
@@ -52,9 +60,22 @@ in
astro = { astro = {
enable = true; enable = true;
}; };
ts_ls = {
enable = true;
};
svelte.enable = true;
};
};
lsp-format = {
enable = true;
# lspServersToEnable = [ "qmlls" ];
};
notify = {
enable = true;
settings = {
background_color = "#00000000";
}; };
}; };
notify.enable = true;
mini-cursorword.enable = true; mini-cursorword.enable = true;
# mini-statusline.enable = true; # mini-statusline.enable = true;
lualine = { lualine = {
@@ -100,6 +121,11 @@ in
}; };
mini-files = { mini-files = {
enable = true; enable = true;
settings = {
windows = {
preview = true;
};
};
}; };
trouble.enable = true; trouble.enable = true;
cmp = { cmp = {
@@ -123,6 +149,7 @@ in
}; };
}; };
lspkind.enable = true; lspkind.enable = true;
tiny-inline-diagnostic.enable = true;
# persisted.enable = true; # persisted.enable = true;
auto-session = { auto-session = {
enable = true; enable = true;

View File

@@ -11,6 +11,7 @@ in
{ {
options.modules.obs = { options.modules.obs = {
enable = lib.mkEnableOption "obs"; enable = lib.mkEnableOption "obs";
autostart = lib.mkEnableOption "autostart with reply";
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
programs = { programs = {
@@ -49,7 +50,7 @@ in
''}"; ''}";
}; };
}; };
systemd.user.services.obs-autostart = lib.mkIf cfg.enable { systemd.user.services.obs-autostart = lib.mkIf cfg.autostart {
Unit = { Unit = {
Description = "OBS daemon"; Description = "OBS daemon";
After = [ "hyprland-session.target" ]; After = [ "hyprland-session.target" ];

View File

@@ -17,7 +17,7 @@ in
}; };
config.xdg.configFile."quickshell" = lib.mkIf cfg.enable { config.xdg.configFile."quickshell" = lib.mkIf cfg.enable {
recursive = true; recursive = true;
source = config.lib.file.mkOutOfStoreSymlink "${nix-meow.flakeRoot}/modules/quickshell/quickshell"; source = config.lib.file.mkOutOfStoreSymlink /home/doloro/dotfiles/modules/quickshell/quickshell;
}; };
config.systemd.user.services.quickshell = lib.mkIf cfg.enable { config.systemd.user.services.quickshell = lib.mkIf cfg.enable {
Unit = { Unit = {
@@ -28,7 +28,7 @@ in
WantedBy = [ "default.target" ]; WantedBy = [ "default.target" ];
}; };
Service = { Service = {
ExecStart = "${pkg}/bin/quickshell"; ExecStart = "${pkgs.quickshell}/bin/quickshell";
Restart = "on-failure"; Restart = "on-failure";
RestartSec = "5s"; RestartSec = "5s";
}; };

View File

@@ -0,0 +1 @@
/run/user/1000/quickshell/vfs/f9af1311120af20dfed5f1bc1698a66a/.qmlls.ini

View File

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e3e3e3"><path d="M480-420q-41.92 0-70.96-29.04Q380-478.08 380-520v-240q0-41.92 29.04-70.96Q438.08-860 480-860q41.92 0 70.96 29.04Q580-801.92 580-760v240q0 41.92-29.04 70.96Q521.92-420 480-420Zm-30 290v-131.85q-99-11.31-164.5-84.92Q220-420.39 220-520h60q0 83 58.5 141.5T480-320q83 0 141.5-58.5T680-520h60q0 99.61-65.5 173.23Q609-273.16 510-261.85V-130h-60Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#FFFFFF"><path d="M479.93-379q-56.47 0-95.94-40.01-39.47-40.02-39.47-96.47v-232.04q0-56.45 39.53-95.97Q423.59-883 480.07-883q56.47 0 95.94 39.51 39.47 39.52 39.47 95.97v232.04q0 56.45-39.53 96.47Q536.41-379 479.93-379ZM434.02-93.52v-124.76q-111.11-14.13-183.26-99.16-72.15-85.03-72.15-198.04h92.52q0 87.09 61.13 147.98 61.13 60.89 147.85 60.89 86.73 0 147.75-61.09 61.01-61.1 61.01-147.78h92.52q0 113.24-72.15 198.16-72.15 84.91-183.26 99.04v124.76h-91.96Z"/></svg>

Before

Width:  |  Height:  |  Size: 463 B

After

Width:  |  Height:  |  Size: 563 B

View File

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#EA3323"><path d="m710-362-58-58q14-23 21-48t7-52h80q0 44-13 83.5T710-362ZM592-482 360-714v-46q0-50 35-85t85-35q50 0 85 35t35 85v240q0 11-2.5 20t-5.5 18ZM440-120v-124q-104-14-172-92.5T200-520h80q0 83 58.5 141.5T480-320q34 0 64.5-10.5T600-360l57 57q-29 23-63.5 38.5T520-244v124h-80Zm352 64L56-792l56-56 736 736-56 56Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#FFFFFF"><path d="m735.55-357.02-68.57-68.7q11.17-19.04 16.48-41.43 5.3-22.39 5.3-48.33h91.96q0 42.93-11.12 83.44-11.12 40.52-34.05 75.02ZM610.07-482.37 348.93-744v-31.22q7.35-44.11 43.99-75.94Q429.57-883 479.33-883q56.54 0 96.29 39.47 39.75 39.46 39.75 96.01v232.04q0 8.87-1.43 17.87-1.44 9-3.87 15.24ZM433.35-93.52v-124.7q-111.11-14.13-183.26-99.02-72.16-84.9-72.16-198.24h92.53q0 87.09 61.01 147.98 61.01 60.89 147.86 60.89 39.08 0 74.11-13.59 35.02-13.59 62.28-37.58l67 67q-31.89 29.15-71.76 47.9-39.87 18.74-85.66 24.83v124.53h-91.95Zm351.82 20.5-723.5-723.5 57.66-57.65 723 723-57.16 58.15Z"/></svg>

Before

Width:  |  Height:  |  Size: 424 B

After

Width:  |  Height:  |  Size: 703 B

View File

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#EA3323"><path d="M792-56 671-177q-25 16-53 27.5T560-131v-82q14-5 27.5-10t25.5-12L480-368v208L280-360H120v-240h128L56-792l56-56 736 736-56 56Zm-8-232-58-58q17-31 25.5-65t8.5-70q0-94-55-168T560-749v-82q124 28 202 125.5T840-481q0 53-14.5 102T784-288ZM650-422l-90-90v-130q47 22 73.5 66t26.5 96q0 15-2.5 29.5T650-422ZM480-592 376-696l104-104v208Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#FFFFFF"><path d="M790.15-48.91 666.02-174.17q-20.24 12.24-43.19 21.57-22.96 9.34-48.2 14.71v-86.61q7.98-2.8 15.49-5.61 7.51-2.8 15.12-6.54L499.63-343.39v215.17L281.06-346.78h-166.3v-266.44h120.13l-187.61-191 58.65-58.65 743.44 754.74-59.22 59.22Zm-.3-238.87-60.72-61.85q17-29.44 25.75-62.4 8.75-32.97 8.75-68.47 0-88.43-52.56-158.65-52.57-70.22-136.44-97.35v-86.61q119.89 28.57 196.47 123.89 76.58 95.33 76.58 218.72 0 53.76-15.1 102.14t-42.73 90.58ZM669.41-409.91l-94.78-95.92v-137.95q48.76 22.13 79.9 65.79 31.15 43.66 31.15 97.99 0 19.2-4.07 36.61t-12.2 33.48ZM499.63-582.52 376.41-708.57l123.22-123.21v249.26Z"/></svg>

Before

Width:  |  Height:  |  Size: 450 B

After

Width:  |  Height:  |  Size: 721 B

View File

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e3e3e3"><path d="M561.54-155.62v-62q86.54-27.53 139.42-100 52.89-72.46 52.89-163.38t-52.89-163.38q-52.88-72.47-139.42-100v-62q111.69 29.92 182 119.92 70.3 90 70.3 205.46 0 115.46-70.3 205.46-70.31 90-182 119.92ZM146.16-380v-200h148.46l171.53-171.53v543.06L294.62-380H146.16Zm415.38 46.15v-294.3q40.46 22 62.54 61.96 22.07 39.96 22.07 86.19 0 45.61-22.27 84.88-22.27 39.27-62.34 61.27Z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#FFFFFF"><path d="M565.7-158.89v-79.61q80.43-24.13 130.71-90.85 50.29-66.72 50.29-150.15t-50.79-149.15q-50.78-65.72-130.21-92.85v-79.61q111.89 25.57 184.18 115.64 72.3 90.08 72.3 204.97t-71.8 205.47q-71.79 90.57-184.68 116.14ZM137.82-371.78v-218.44h150.31L498.7-800.78v639.56L288.13-371.78H137.82Zm427.88 44.56v-306.56q46.76 20.69 76.62 61.07 29.86 40.38 29.86 91.71 0 51.83-29.86 92.24t-76.62 61.54Z"/></svg>

Before

Width:  |  Height:  |  Size: 492 B

After

Width:  |  Height:  |  Size: 507 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#FFFFFF"><path d="M479.93-379q-56.47 0-95.94-40.01-39.47-40.02-39.47-96.47v-232.04q0-56.45 39.53-95.97Q423.59-883 480.07-883q56.47 0 95.94 39.51 39.47 39.52 39.47 95.97v232.04q0 56.45-39.53 96.47Q536.41-379 479.93-379ZM434.02-93.52v-124.76q-111.11-14.13-183.26-99.16-72.15-85.03-72.15-198.04h92.52q0 87.09 61.13 147.98 61.13 60.89 147.85 60.89 86.73 0 147.75-61.09 61.01-61.1 61.01-147.78h92.52q0 113.24-72.15 198.16-72.15 84.91-183.26 99.04v124.76h-91.96Z"/></svg>

After

Width:  |  Height:  |  Size: 563 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#FFFFFF"><path d="m735.55-357.02-68.57-68.7q11.17-19.04 16.48-41.43 5.3-22.39 5.3-48.33h91.96q0 42.93-11.12 83.44-11.12 40.52-34.05 75.02ZM610.07-482.37 348.93-744v-31.22q7.35-44.11 43.99-75.94Q429.57-883 479.33-883q56.54 0 96.29 39.47 39.75 39.46 39.75 96.01v232.04q0 8.87-1.43 17.87-1.44 9-3.87 15.24ZM433.35-93.52v-124.7q-111.11-14.13-183.26-99.02-72.16-84.9-72.16-198.24h92.53q0 87.09 61.01 147.98 61.01 60.89 147.86 60.89 39.08 0 74.11-13.59 35.02-13.59 62.28-37.58l67 67q-31.89 29.15-71.76 47.9-39.87 18.74-85.66 24.83v124.53h-91.95Zm351.82 20.5-723.5-723.5 57.66-57.65 723 723-57.16 58.15Z"/></svg>

After

Width:  |  Height:  |  Size: 703 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#FFFFFF"><path d="M565.7-158.89v-79.61q80.43-24.13 130.71-90.85 50.29-66.72 50.29-150.15t-50.79-149.15q-50.78-65.72-130.21-92.85v-79.61q111.89 25.57 184.18 115.64 72.3 90.08 72.3 204.97t-71.8 205.47q-71.79 90.57-184.68 116.14ZM137.82-371.78v-218.44h150.31L498.7-800.78v639.56L288.13-371.78H137.82Zm427.88 44.56v-306.56q46.76 20.69 76.62 61.07 29.86 40.38 29.86 91.71 0 51.83-29.86 92.24t-76.62 61.54Z"/></svg>

After

Width:  |  Height:  |  Size: 507 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#FFFFFF"><path d="M790.15-48.91 666.02-174.17q-20.24 12.24-43.19 21.57-22.96 9.34-48.2 14.71v-86.61q7.98-2.8 15.49-5.61 7.51-2.8 15.12-6.54L499.63-343.39v215.17L281.06-346.78h-166.3v-266.44h120.13l-187.61-191 58.65-58.65 743.44 754.74-59.22 59.22Zm-.3-238.87-60.72-61.85q17-29.44 25.75-62.4 8.75-32.97 8.75-68.47 0-88.43-52.56-158.65-52.57-70.22-136.44-97.35v-86.61q119.89 28.57 196.47 123.89 76.58 95.33 76.58 218.72 0 53.76-15.1 102.14t-42.73 90.58ZM669.41-409.91l-94.78-95.92v-137.95q48.76 22.13 79.9 65.79 31.15 43.66 31.15 97.99 0 19.2-4.07 36.61t-12.2 33.48ZM499.63-582.52 376.41-708.57l123.22-123.21v249.26Z"/></svg>

After

Width:  |  Height:  |  Size: 721 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#000000"><path d="M159.28-231.87q-53.58 0-91.21-37.63-37.64-37.63-37.64-91.22v-238.8q0-53.59 37.64-91.1 37.63-37.51 91.21-37.51h530.68q53.58 0 91.09 37.51 37.52 37.51 37.52 91.1v238.8q0 53.59-37.52 91.22-37.51 37.63-91.09 37.63H159.28Zm.24-91h530.2q16.04 0 26.94-11.02 10.9-11.02 10.9-27.07v-238.32q0-16.05-10.9-26.95-10.9-10.9-26.94-10.9h-530.2q-16.04 0-27.06 10.9-11.03 10.9-11.03 26.95v238.32q0 16.05 11.03 27.07 11.02 11.02 27.06 11.02Zm699.05-53.06v-208.14h25.5q19.15 0 32.32 13.18 13.18 13.17 13.18 32.32v117.14q0 19.15-13.18 32.32-13.17 13.18-32.32 13.18h-25.5Zm-697.14 13.06v-234.26h86.22v234.26h-86.22Z"/></svg>

After

Width:  |  Height:  |  Size: 718 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#000000"><path d="M159.28-231.87q-53.58 0-91.21-37.63-37.64-37.63-37.64-91.22v-238.8q0-53.59 37.64-91.1 37.63-37.51 91.21-37.51h530.68q53.58 0 91.09 37.51 37.52 37.51 37.52 91.1v238.8q0 53.59-37.52 91.22-37.51 37.63-91.09 37.63H159.28Zm.24-91h530.2q16.04 0 26.94-11.02 10.9-11.02 10.9-27.07v-238.32q0-16.05-10.9-26.95-10.9-10.9-26.94-10.9h-530.2q-16.04 0-27.06 10.9-11.03 10.9-11.03 26.95v238.32q0 16.05 11.03 27.07 11.02 11.02 27.06 11.02Zm699.05-53.06v-208.14h25.5q19.15 0 32.32 13.18 13.18 13.17 13.18 32.32v117.14q0 19.15-13.18 32.32-13.17 13.18-32.32 13.18h-25.5Zm-697.14 13.06v-234.26h163.83v234.26H161.43Z"/></svg>

After

Width:  |  Height:  |  Size: 719 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#000000"><path d="M159.28-231.87q-53.58 0-91.21-37.63-37.64-37.63-37.64-91.22v-238.8q0-53.59 37.64-91.1 37.63-37.51 91.21-37.51h530.68q53.58 0 91.09 37.51 37.52 37.51 37.52 91.1v238.8q0 53.59-37.52 91.22-37.51 37.63-91.09 37.63H159.28Zm.24-91h530.2q16.04 0 26.94-11.02 10.9-11.02 10.9-27.07v-238.32q0-16.05-11.02-26.95-11.02-10.9-27.06-10.9h-530.2q-16.04 0-26.94 11.02-10.91 11.02-10.91 27.07v238.32q0 16.05 11.03 26.95 11.02 10.9 27.06 10.9Zm699.05-53.06v-208.14h25.5q19.15 0 32.32 13.18 13.18 13.17 13.18 32.32v117.14q0 19.15-13.18 32.32-13.17 13.18-32.32 13.18h-25.5Zm-697.14 13.06v-234.26h241.44v234.26H161.43Z"/></svg>

After

Width:  |  Height:  |  Size: 721 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#000000"><path d="M159.28-231.87q-53.58 0-91.21-37.63-37.64-37.63-37.64-91.22v-238.8q0-53.59 37.64-91.1 37.63-37.51 91.21-37.51h530.68q53.58 0 91.09 37.51 37.52 37.51 37.52 91.1v238.8q0 53.59-37.52 91.22-37.51 37.63-91.09 37.63H159.28Zm.24-91h530.2q16.04 0 26.94-11.02 10.9-11.02 10.9-27.07v-238.32q0-16.05-10.9-26.95-10.9-10.9-26.94-10.9h-530.2q-16.04 0-27.06 10.9-11.03 10.9-11.03 26.95v238.32q0 16.05 11.03 27.07 11.02 11.02 27.06 11.02Zm699.05-53.06v-208.14h25.5q19.15 0 32.32 13.18 13.18 13.17 13.18 32.32v117.14q0 19.15-13.18 32.32-13.17 13.18-32.32 13.18h-25.5Zm-697.14 13.06v-234.26h321.44v234.26H161.43Z"/></svg>

After

Width:  |  Height:  |  Size: 719 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#000000"><path d="M159.28-231.87q-53.58 0-91.21-37.63-37.64-37.63-37.64-91.22v-238.8q0-53.59 37.64-91.1 37.63-37.51 91.21-37.51h530.68q53.58 0 91.09 37.51 37.52 37.51 37.52 91.1v238.8q0 53.59-37.52 91.22-37.51 37.63-91.09 37.63H159.28Zm.24-91h530.2q16.04 0 26.94-11.02 10.9-11.02 10.9-27.07v-238.32q0-16.05-10.9-26.95-10.9-10.9-26.94-10.9h-530.2q-16.04 0-27.06 10.9-11.03 10.9-11.03 26.95v238.32q0 16.05 11.03 27.07 11.02 11.02 27.06 11.02Zm699.05-53.06v-208.14h25.5q19.15 0 32.32 13.18 13.18 13.17 13.18 32.32v117.14q0 19.15-13.18 32.32-13.17 13.18-32.32 13.18h-25.5Zm-697.14 13.06v-234.26h401.44v234.26H161.43Z"/></svg>

After

Width:  |  Height:  |  Size: 719 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#000000"><path d="M159.28-231.87q-53.58 0-91.21-37.63-37.64-37.63-37.64-91.22v-238.8q0-53.59 37.64-91.1 37.63-37.51 91.21-37.51h530.68q53.58 0 91.09 37.51 37.52 37.51 37.52 91.1v238.8q0 53.59-37.52 91.22-37.51 37.63-91.09 37.63H159.28Zm.24-91h530.2q16.04 0 26.94-11.02 10.9-11.02 10.9-27.07v-238.32q0-16.05-10.9-26.95-10.9-10.9-26.94-10.9h-530.2q-16.04 0-27.06 10.9-11.03 10.9-11.03 26.95v238.32q0 16.05 11.03 27.07 11.02 11.02 27.06 11.02Zm699.05-53.06v-208.14h25.5q19.15 0 32.32 13.18 13.18 13.17 13.18 32.32v117.14q0 19.15-13.18 32.32-13.17 13.18-32.32 13.18h-25.5Zm-697.14 13.06v-234.26h470.68v234.26H161.43Z"/></svg>

After

Width:  |  Height:  |  Size: 719 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#000000"><path d="M159.28-231.87q-53.58 0-91.21-37.63-37.64-37.63-37.64-91.22v-238.8q0-53.59 37.64-91.1 37.63-37.51 91.21-37.51h530.68q53.58 0 91.09 37.51 37.52 37.51 37.52 91.1v238.8q0 53.59-37.52 91.22-37.51 37.63-91.09 37.63H159.28Zm.24-91h530.2q16.04 0 26.94-11.02 10.9-11.02 10.9-27.07v-238.32q0-16.05-10.9-26.95-10.9-10.9-26.94-10.9h-530.2q-16.04 0-27.06 10.9-11.03 10.9-11.03 26.95v238.32q0 16.05 11.03 27.07 11.02 11.02 27.06 11.02Zm699.05-53.06v-208.14h25.5q19.15 0 32.32 13.18 13.18 13.17 13.18 32.32v117.14q0 19.15-13.18 32.32-13.17 13.18-32.32 13.18h-25.5Zm-697.14 13.06v-234.26h526.13v234.26H161.43Z"/></svg>

After

Width:  |  Height:  |  Size: 719 B

View File

@@ -12,65 +12,51 @@ import "widgets/common" as Common
import "widgets/clock" as Clock import "widgets/clock" as Clock
import "widgets/workspace" as Workspace import "widgets/workspace" as Workspace
// Tako kindly threatened you to sort the naming schema and to put all the svg's in an asset folder, so please do that
PanelWindow { PanelWindow {
property var modelData property var modelData
screen: modelData.values[0]; screen: modelData.values[0]
color: '#20ffffff' color: Qt.rgba(0, 0, 0, 0) // Fully transparent via zero alpha
anchors { anchors {
top: true top: true
left: true left: true
right: true right: true
} }
implicitHeight: 32 implicitHeight: 31
RowLayout { RowLayout {
height: 28 visible: true
height: 30
anchors { anchors {
top: parent.top top: parent.top
left: parent.left left: parent.left
right: parent.right right: parent.right
// bottomMargin: 2 // bottomMargin: 2
leftMargin: 10 leftMargin: 5
rightMargin: 10 rightMargin: 5
}
RowLayout { // Left
Layout.alignment: Qt.AlignLeft
Clock.Date {}
Clock.Clock {}
Workspace.WorkspaceWidget {}
}
RowLayout { // Center
// TODO: add icons of the active window per workspace in the workspace tab
anchors.centerIn: parent
}
RowLayout { // Right
Layout.alignment: Qt.AlignRight
Loader {
sourceComponent: Widgets.Audio {}
} }
RowLayout { RowLayout {
Text { // Left
text: HyprlandWindowTracker.HyprlandWindowTracker.aaaa Layout.alignment: Qt.AlignLeft
Widgets.Workspaces {}
} }
visible: Player.activePlayer.isPlaying() RowLayout {
Player.PlayerWidgetV2 { // Center
Layout.alignment: Qt.AlignCenter
}
RowLayout {
// Right
Layout.alignment: Qt.AlignRight
Widgets.Demo {}
} }
} }
Widgets.SystemTray { // Rectangle {
id: systemTray // anchors {
} // bottom: parent.bottom
} // left: parent.left
} // right: parent.right
Rectangle { // }
anchors { // height: 1
bottom: parent.bottom // color: "#8d8d8d"
left: parent.left // }
right: parent.right
}
height: 1
color: "#8d8d8d"
}
} }

View File

@@ -4,56 +4,55 @@ import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
import Quickshell.Widgets import Quickshell.Widgets
import Quickshell.Services.Pipewire import Quickshell.Services.Pipewire
import QtQuick.VectorImage
import QtQuick.Effects
import QtQuick.Shapes 1.10
import QtQuick.Effects
import "common" as Common import "common" as Common
Rectangle {
Item {
id: root id: root
property PwNode speakerNode: Pipewire.defaultAudioSink property PwNode speakerNode: Pipewire.defaultAudioSink
property PwNode microphoneNode: Pipewire.defaultAudioSource property PwNode microphoneNode: Pipewire.defaultAudioSource
PwObjectTracker { objects: [ root.microphoneNode, root.speakerNode ] } PwObjectTracker {
objects: [root.microphoneNode, root.speakerNode]
width: row.width }
height: row.height implicitWidth: itemContent.width + 8
implicitHeight: 24
// console.log("a"); radius: 5.5
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
color: Common.Colors.colors.secondary // Define item color
// color: "#2a2a2a"
RowLayout { RowLayout {
id: row id: itemContent
Item {
implicitWidth: 28
implicitHeight: 28
Rectangle {
width: parent.width
height: parent.height
radius: 7
color: "black"
}
Text {
anchors.centerIn: parent anchors.centerIn: parent
// implicitSize: 25 // spacing: 100
font.pixelSize: 28 Repeater {
color: root.speakerNode.audio.muted ? "#FF474C" : "white" model: [
font.family: "CaskaydiaCove Nerd Font Mono" {
text: root.speakerNode.audio.muted ? Common.Icons.audioIcons.speakerMuted : Common.Icons.audioIcons.speaker on: Common.Icons.audioIcons["speaker"],
} off: Common.Icons.audioIcons["speakerMuted"],
} node: root.speakerNode
},
{
on: Common.Icons.audioIcons["microphone"],
off: Common.Icons.audioIcons["microphoneMuted"],
node: root.microphoneNode
},
]
Item { Item {
implicitWidth: 28 id: meow
implicitHeight: 28 implicitWidth: 24
Rectangle { Layout.alignment: Qt.AlignHCenter
width: parent.width implicitHeight: 24
height: parent.height
radius: 7
color: "black"
}
Text { Text {
anchors.centerIn: parent id: textElement
// implicitSize: 25 anchors.centerIn: parent // Ensure the text fills the parent item
font.pixelSize: 34 text: modelData.node.audio.muted ? modelData.off : modelData.on
color: root.microphoneNode.audio.muted ? "#FF474C" : "white" font.pointSize: 18.25
font.family: "CaskaydiaCove Nerd Font Mono" font.weight: Font.DemiBold
text: root.microphoneNode.audio.muted ? Common.Icons.audioIcons.microphoneMuted : Common.Icons.audioIcons.microphone color: modelData.node.audio.muted ? Common.Colors.colors.critial2 : Common.Colors.colors.primary
}
} }
} }
} }

View File

@@ -0,0 +1,86 @@
import Quickshell
import Quickshell.Io
import QtQuick
import QtQuick.Layouts
import Quickshell.Widgets
import Quickshell.Services.Pipewire
import QtQuick.VectorImage
import QtQuick.Effects
import Quickshell.Services.UPower
import "common" as Common
Rectangle {
// TODO eventually fix the alignment (it isnt centered horizentally)
id: root
property int battPercent: 58
implicitWidth: itemContent.width + 8
implicitHeight: 24
visible: {
if (UPower.displayDevice.ready) {
true;
} else {
false;
}
}
radius: 5.5
Layout.alignment: Qt.AlignVCenter
color: "#2a2a2a" // Define item color
RowLayout {
id: itemContent
implicitWidth: 24
implicitHeight: 24
anchors.centerIn: parent
Text {
// anchors.centerIn: parent
text: Math.round(UPower.displayDevice.percentage * 100) + "%"
color: Common.Colors.colors.primary
font.weight: Font.DemiBold
font.pointSize: 12
}
Item {
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
implicitWidth: icon.width
implicitHeight: icon.height
Text {
id: icon
anchors.centerIn: parent
text: root.getBatteryState(UPower.displayDevice.percentage * 100, ((UPower.displayDevice.timeToFull > 0)))
color: root.getBatteryColor(UPower.displayDevice.percentage * 100)
font.weight: Font.DemiBold
font.pointSize: 24 / 1.4
}
}
}
function getBatteryState(level, isCharging) {
if (level === null || level === 0) {
// Return the battery empty icon
return isCharging ? Common.Icons.battery.charging["1"] : Common.Icons.battery["0"];
}
if (level === 100) {
// Return the battery full icon
return isCharging ? Common.Icons.battery.charging["10"] : Common.Icons.battery["10"];
}
// Calculate step as a value between 1 and 10 (divide level into 10 ranges)
let step = Math.ceil(level / 10); // Range mapping
if (step > 10)
step = 10; // Clamp to 10 if it exceeds bounds
// Return the correct icon based on state
return isCharging ? Common.Icons.battery.charging[String(step)] : Common.Icons.battery[String(step)];
}
function getBatteryColor(level) {
if (level === null || level === 0) {
// Use critical color for empty battery
return Common.Colors.colors.critial2;
}
if (level > 0 && level <= 20) {
// Use critical color for low battery
return Common.Colors.colors.critial2;
}
// Default color if no specific condition is met
return Common.Colors.colors.primary;
}
}

View File

@@ -0,0 +1,41 @@
import Quickshell
import Quickshell.Io
import QtQuick
import QtQuick.Layouts
import Quickshell.Widgets
import Quickshell.Services.Pipewire
import "common" as Common
import "clock" as Clock
Rectangle {
id: backgroundRect
implicitWidth: rowLayout.implicitWidth + 6 // Account for padding (2px left + 2px right)
implicitHeight: rowLayout.implicitHeight + 4 // Account for padding (2px top + 2px bottom)
color: Common.Colors.colors.background
radius: 6.5 // Background rectangle with rounded corners
// border.color: "gray"
// border.width: 1
// Inner Rectangle for padding and layout
Rectangle {
id: content
anchors.fill: parent
anchors.margins: 2 // Create 2px padding on all sides
anchors.leftMargin: 3
anchors.rightMargin: 3
color: "transparent"
RowLayout {
id: rowLayout
anchors.fill: parent
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter // Center content
spacing: 10 // Space between items
Audio {}
Battery {}
Common.VerticalSeprator {}
Clock.Date {}
Clock.Clock {}
}
}
}

View File

@@ -0,0 +1,59 @@
import Quickshell
import Quickshell.Io
import QtQuick
import QtQuick.Layouts
import Quickshell.Widgets
import Quickshell.Services.Pipewire
import "common" as Common
Item {
id: root
property PwNode speakerNode: Pipewire.defaultAudioSink
property PwNode microphoneNode: Pipewire.defaultAudioSource
PwObjectTracker {
objects: [root.microphoneNode, root.speakerNode]
}
width: row.width
height: row.height
// console.log("a");
RowLayout {
id: row
Item {
implicitWidth: 28
implicitHeight: 28
Rectangle {
width: parent.width
height: parent.height
radius: 7
color: "black"
}
Text {
anchors.centerIn: parent
font.pixelSize: 28
color: root.speakerNode.audio.muted ? "#B1B2B5" : "white"
font.family: "CaskaydiaCove Nerd Font Mono"
text: root.speakerNode.audio.muted ? Common.Icons.audioIcons.speakerMuted : Common.Icons.audioIcons.speaker
}
}
Item {
implicitWidth: 28
implicitHeight: 28
Rectangle {
width: parent.width
height: parent.height
radius: 7
color: "black"
}
Text {
anchors.centerIn: parent
font.pixelSize: 34
color: root.microphoneNode.audio.muted ? "#B1B2B5" : "white"
font.family: "CaskaydiaCove Nerd Font Mono"
text: root.microphoneNode.audio.muted ? Common.Icons.audioIcons.microphoneMuted : Common.Icons.audioIcons.microphone
}
}
}
}

View File

@@ -0,0 +1,58 @@
import Quickshell
import Quickshell.Io
import QtQuick
import QtQuick.Layouts
import Quickshell.Widgets
import Quickshell.Services.Pipewire
import QtQuick.VectorImage
import QtQuick.Effects
import "common" as Common
Rectangle {
id: root
implicitWidth: itemContent.width + 4
implicitHeight: 24
radius: 5.5
Layout.alignment: Qt.AlignVCenter
color: "#2a2a2a" // Define item color
RowLayout {
id: itemContent
Repeater {
model: [
{
on: "../../assets/bar/V2/speaker.svg",
off: "../../assets/bar/V2/speakerOff.svg",
node: root.speakerNode
},
{
on: "../../assets/bar/V2/mic.svg",
off: "../../assets/bar/V2/micOff.svg",
node: root.microphoneNode
},
]
Item {
implicitWidth: 24
implicitHeight: 24
// anchors.centerIn: parent
VectorImage {
id: svgImage
width: parent.width
height: parent.height
source: modelData.node.audio.muted ? modelData.off : modelData.on
visible: false
fillMode: Image.PreserveAspectFit // Adjusts the SVG while keeping the aspect ratio
}
MultiEffect {
source: svgImage
width: parent.width
height: parent.height
// anchors.centerIn: parent
Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter
colorization: 1
brightness: 1
colorizationColor: modelData.node.audio.muted ? "#e53b3c" : "#b1b2b5"
}
}
}
}
}

View File

@@ -36,7 +36,7 @@ RowLayout {
Hyprland.dispatch('workspace ' + index_workspace.id); Hyprland.dispatch('workspace ' + index_workspace.id);
} }
for (x in index_workspace.toplevels.values) { for (x in index_workspace.toplevels.values) {
console.log(index_workspace.toplevels.values[x].title) console.log(index_workspace.toplevels.values[x].title);
} }
} }
} }

View File

@@ -1,19 +1,28 @@
import Quickshell import Quickshell
import Quickshell.Io import Quickshell.Io
import QtQuick import QtQuick
import QtQuick.Layouts
import Quickshell.Widgets
import Quickshell.Services.Pipewire
import QtQuick.VectorImage
import QtQuick.Effects
import "common" as Common
import "../common" as Common Rectangle {
Item {
id: root id: root
width: text.width + 15 implicitWidth: clock.width + 4
height: text.height implicitHeight: clock.height
Common.Container {} radius: 5.5
color: "#2a2a2a" // Define item color
Text { Text {
id: clock
// width: parent.width - 4
height: 24
anchors.centerIn: parent anchors.centerIn: parent
id: text verticalAlignment: Qt.AlignVCenter
text: ClockData.time text: ClockData.time
font.pointSize: 10.25 font.pixelSize: 16
color: "white" lineHeight: 1
color: "#cacaca"
} }
} }

View File

@@ -4,16 +4,21 @@ import QtQuick
import "../common" as Common import "../common" as Common
Item { Rectangle {
id: root id: root
width: text.width + 15 implicitWidth: clock.width + 4
height: text.height implicitHeight: clock.height
Common.Container {} radius: 5.5
color: "#2a2a2a" // Define item color
Text { Text {
id: clock
// width: parent.width - 4
height: 24
anchors.centerIn: parent anchors.centerIn: parent
id: text verticalAlignment: Qt.AlignVCenter
text: ClockData.date text: ClockData.date
font.pointSize: 10.25 font.pixelSize: 16
color: "white" lineHeight: 1
color: "#cacaca"
} }
} }

View File

@@ -0,0 +1,14 @@
import Quickshell
import QtQuick
Rectangle {
z: 1
color: "#2a2a2a"
opacity: 20
anchors {
verticalCenter: parent.verticalCenter
}
height: 24
width: parent.width
radius: 5.5
}

View File

@@ -6,7 +6,22 @@ import Quickshell.Io
Singleton { Singleton {
id: root id: root
// XX (alpha) XXXXXX (color)
// For oled screen that risk burn in, set up these colors as semi-transparent and have a rotating wallpaper (!!)
readonly property var colors: ({ readonly property var colors: ({
"primary": "", primary: "#59b1b2b5" // Icons & Text colors
,
secondary: "#BF2a2a2a" // Pill container colors
,
background: "#BF000000" // Background of containers
,
mainBackground: "#20ffffff" // Color of the main bar
,
warning: "#E9D502" // (i.e battery nearing low)
,
critial: "#e53b3c" // (i.e battery is low)
,
critial2: "#e53b3c" // (Speaker and Mic being off)
}) })
} }

View File

@@ -6,11 +6,44 @@ import Quickshell.Io
Singleton { Singleton {
id: root id: root
// readonly property var svgs: ({
// micOff: "../../../assets/bar/V2/micOff.svg",
// mic: "../../../assets/bar/V2/mic.svg",
// speaker: "../../../assets/bar/V2/speaker.svg",
// speakerOff: "../../../assets/bar/V2/speakerOff.svg"
// })
// TODO replace all these icons with svg's
readonly property var battery: ({
"0": "󰂎",
"1": "󰁺",
"2": "󰁻",
"3": "󰁼",
"4": "󰁾",
"5": "󰁾",
"6": "󰁿",
"7": "󰂀",
"8": "󰂁",
"9": "󰂂",
"10": "󰁹",
charging: ({
"1": "󰢜",
"2": "󰂆",
"3": "󰂇",
"4": "󰂈",
"5": "󰢝",
"6": "󰂉",
"7": "󰢞",
"8": "󰂊",
"9": "󰂋",
"10": "󰂅"
})
})
readonly property var audioIcons: ({ readonly property var audioIcons: ({
microphone: "", microphone: "󰍬",
microphoneMuted: "", microphoneMuted: "󰍭",
speaker: "󰕾", speaker: "󰕾",
speakerMuted: "󰖁", speakerMuted: "󰖁"
}) })
// {class}: {icon} // {class}: {icon}

View File

@@ -0,0 +1,30 @@
// ColorOverlayShader.qml
import QtQuick 2.15
Rectangle {
id: mainContent
anchors.fill: parent
color: "blue"
// Clip the rectangle to a shape
clip: true
Shape {
anchors.fill: parent
// Custom Path defined as a vector
Path {
PathSvg {
path: "M10,80 C40,10 65,10 95,80 S150,150 180,80" // Vector path
}
}
ShapePath {
strokeColor: "transparent" // No stroke, act only as the mask
fillColor: "blue"
fillGradient: Gradient {
GradientStop { position: 0.0; color: "yellow" }
GradientStop { position: 1.0; color: "orange" }
}
}
}
}

View File

@@ -0,0 +1,17 @@
import Quickshell
import QtQuick
import QtQuick.Layouts
Item {
RowLayout {
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
}
Rectangle {
z: -1
color: "black"
// anchors: parent.anchors
height: 28
width: parent.width
radius: 6.5
}
}

View File

@@ -2,12 +2,16 @@ import Quickshell
import QtQml import QtQml
import QtQuick import QtQuick
Rectangle { Item {
id: a id: root
anchors { anchors {
top: parent.top top: parent.top
bottom: parent.bottom bottom: parent.bottom
} }
width: 2 Rectangle {
anchors.centerIn: root
implicitHeight: root.height - 4
width: 1
color: "#8d8d8d" color: "#8d8d8d"
} }
}

View File

@@ -0,0 +1,4 @@
_: {
home = ./home.nix;
# nixos: ./nixos.nix;
}

43
modules/rsRPC/home.nix Normal file
View File

@@ -0,0 +1,43 @@
{
inputs,
nix-meow,
rsRPC,
config,
lib,
pkgs,
system,
...
}:
let
# rsRPC = pkgs.fetchFromGitHub {
# owner = "Doloro1978";
# repo = "rsRPC";
# rev = "main";
# hash = "sha256-cE9iWVYclynDGAt24Hgjd2kbSOlTraq8czTfesAQl4M=";
# };
rsRPC = inputs.rsRPC.packages.${system}.app;
detectable = pkgs.fetchurl {
url = "https://raw.githubusercontent.com/Doloro1978/arrpc/refs/heads/main/src/process/detectable.json";
hash = "sha256-RglaVHAIVXHnFL9j55r8t5S8tS7LXWZ82A2RvW1mtno=";
};
cfg = config.modules.rsRPC;
in
{
options.modules.rsRPC = {
enable = lib.mkEnableOption "quickshell configuration module";
};
config.systemd.user.services.rsRPC = lib.mkIf cfg.enable {
Unit = {
Description = "discord rpc daemon";
After = [ "hyprland-session.target" ];
};
Install = {
WantedBy = [ "default.target" ];
};
Service = {
ExecStart = "${rsRPC}/bin/rsrpc-cli -d ${detectable}";
Restart = "on-failure";
RestartSec = "5s";
};
};
}

4
modules/sops/default.nix Normal file
View File

@@ -0,0 +1,4 @@
_: {
nixos = ./nixos.nix;
home = ./home.nix;
}

30
modules/sops/home.nix Normal file
View File

@@ -0,0 +1,30 @@
{
config,
lib,
inputs,
pkgs,
home,
system,
nix-meow,
...
}:
let
cfg = config.modules.sops;
in
{
imports = [
inputs.sops-nix.homeManagerModules.sops
];
options.modules.sops = {
enable = lib.mkEnableOption "sops configuration module";
};
config = lib.mkIf cfg.enable {
sops = {
age.keyFile = "/home/doloro/.config/sops/age/key.txt"; # must have no password!
defaultSopsFile = "${nix-meow.flakeRoot}/secrets/users.yaml";
secrets."wakatime-scug-io-api-key" = {
};
};
};
}

19
modules/sops/nixos.nix Normal file
View File

@@ -0,0 +1,19 @@
{
config,
lib,
inputs,
pkgs,
home,
system,
...
}:
let
cfg = config.modules.sops;
in
{
options.modules.sops = {
enable = lib.mkEnableOption "sops configuration module";
};
config = lib.mkIf cfg.enable {
};
}

View File

@@ -0,0 +1,4 @@
_: {
home = ./home.nix;
# nixos: ./nixos.nix;
}

16
modules/wakatime/home.nix Normal file
View File

@@ -0,0 +1,16 @@
{
inputs,
config,
lib,
pkgs,
fetchFromGitHub,
...
}:
let
cfg = config.modules.wakatime;
in
{
options.modules.wakatime = {
enable = lib.mkEnableOption "wakatime";
};
}

View File

@@ -17,7 +17,7 @@ in
# whole blender config including addons is too fat to include here # whole blender config including addons is too fat to include here
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
home.packages = with pkgs; [ home.packages = with pkgs; [
wlx-overlay-s wayvr
]; ];
}; };
# nix'ing a blender config is most likely not possible # nix'ing a blender config is most likely not possible

View File

@@ -54,6 +54,7 @@ in
publish.userServices = true; publish.userServices = true;
}; };
}; };
programs.adb.enable = true; environment.systemPackages = [ pkgs.android-tools ];
# programs.adb.enable = true;
}; };
} }

View File

@@ -12,6 +12,6 @@ in
enable = lib.mkEnableOption "youtube music"; enable = lib.mkEnableOption "youtube music";
}; };
config.home.packages = with pkgs; [ config.home.packages = with pkgs; [
youtube-music pear-desktop
]; ];
} }

View File

@@ -0,0 +1,4 @@
_: {
home = ./home.nix;
# nixos = ./nixos.nix;
}

View File

@@ -0,0 +1,81 @@
{
config,
inputs,
lib,
system,
pkgs,
fetchFromGitHub,
...
}:
let
cfg = config.modules.zen-browser;
in
{
imports = [
# inputs.zen-browser.homeModules.beta
# inputs.zen-browser.homeModules.twilight
inputs.zen-browser.homeModules.twilight-official
];
options.modules.zen-browser = {
enable = lib.mkEnableOption "zen";
};
config = lib.mkIf cfg.enable {
programs.zen-browser = {
enable = true;
policies = {
AutofillAddressEnabled = true;
AutofillCreditCardEnabled = false;
DisableAppUpdate = true;
DisableFeedbackCommands = true;
DisableFirefoxStudies = true;
DisablePocket = true;
DisableTelemetry = true;
DontCheckDefaultBrowser = true;
NoDefaultBookmarks = true;
OfferToSaveLogins = false;
EnableTrackingProtection = {
Value = true;
Locked = true;
Cryptomining = true;
Fingerprinting = true;
};
};
};
xdg.mimeApps =
let
value =
let
zen-browser = inputs.zen-browser.packages.${system}.twilight-official; # or twilight
in
zen-browser.meta.desktopFileName;
associations = builtins.listToAttrs (
map
(name: {
inherit name value;
})
[
"application/x-extension-shtml"
"application/x-extension-xhtml"
"application/x-extension-html"
"application/x-extension-xht"
"application/x-extension-htm"
"x-scheme-handler/unknown"
"x-scheme-handler/mailto"
"x-scheme-handler/chrome"
"x-scheme-handler/about"
"x-scheme-handler/https"
"x-scheme-handler/http"
"application/xhtml+xml"
"application/json"
"text/plain"
"text/html"
]
);
in
{
associations.added = associations;
defaultApplications = associations;
};
};
}

View File

@@ -0,0 +1,17 @@
# Disabled in default
{
config,
lib,
pkgs,
...
}:
let
cfg = config.modules.zen-browser;
in
{
options.modules.zen-browser = {
enable = lib.mkEnableOption "zen";
};
config = lib.mkIf cfg.enable {
};
}

Binary file not shown.

View File

@@ -6,36 +6,6 @@
... ...
}: }:
let let
youtube-music = (
final: prev: {
youtube-music = prev.youtube-music.overrideAttrs (old: rec {
pname = "youtube-music";
version = "3a7d3ff73";
src = prev.fetchFromGitHub {
owner = "pear-devs";
repo = "pear-desktop";
rev = "3a7d3ff73de49fcf7e7051dd1bdf450db4b222bf";
sha256 = "sha256-Q/E37HzQR2Ghxs8vV7WNCXn+DqIhpjhY3SoW3OMITTs=";
};
postPatch =
let
patch = prev.fetchurl {
url = "https://github.com/pear-devs/pear-desktop/commit/25fccc9a62044ca7006f271a6a2520724e5720e1.patch";
hash = "sha256-WAiaqsWlOXyv7FRlvM0LUY17dwCI8BQsQdO1M4zYg7k=";
};
in
''
${prev.git}/bin/git apply -R -p1 < ${patch}
'';
pnpmDeps = prev.pnpm.fetchDeps {
inherit pname version src;
fetcherVersion = 2;
hash = "sha256-9arC2c92U2tILFCBIRcGo9iNaPbNefDDfR9lGaSS88E=";
};
});
}
);
pkgs_gamescope = import inputs.nixpkgs-gamescope { pkgs_gamescope = import inputs.nixpkgs-gamescope {
inherit system; inherit system;
config = { config = {

Some files were not shown because too many files have changed in this diff Show More