Compare commits

..

88 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
108 changed files with 2981 additions and 1102 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

View File

@@ -4,5 +4,7 @@ creation_rules:
- encrypted_regex: '^(data|stringData)$' # Encrypt data and stringData by default (useful for Kubernetes secrets) - 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 path_regex: secrets/.*\.yaml$ # Applies to all files in the secrets/ directory
age: age:
- "age1ykcy2r4kk729e7adqxu8s24ujc60z5eux7ma0ca4ruzydwgm5p6qmdp838" # pc - "age1ykcy2r4kk729e7adqxu8s24ujc60z5eux7ma0ca4ruzydwgm5p6qmdp838" # pc-user-doloro
- "age1uguylmrm4wjuwcp7pjncgwg2ufa9vkac00um54pxjxhcg3yhfcasd4u96f" # laptop - "age1e6vws55p0g23qzthm4qa93hpt6lqmck6670gkygph0sc0j7my4uq5wqjfh" # pc-system
- "age1x3lahhkefkap67cdmdjcqaxan9hp62er78akr79v9m73nvgugpeqk0y32a" # laptop-user-doloro
- "age1exzngtk4d9vcsmcq6ap5xx3ca9qacqjkrv86ymged7msx9z6vfyqsf5sjq" # laptop-system

1024
flake.lock generated

File diff suppressed because it is too large Load Diff

100
flake.nix
View File

@@ -3,23 +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"; 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";
@@ -48,6 +64,9 @@
url = "github:Nixos/nixpkgs?rev=8fcb6f1c4948305af52d19f887b89011ee2c080d"; url = "github:Nixos/nixpkgs?rev=8fcb6f1c4948305af52d19f887b89011ee2c080d";
}; };
font-patcher.url = "github:Doloro1978/nix-nerd-fonts-patcher"; 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@{
@@ -79,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;
@@ -111,6 +158,7 @@
}; };
inherit (utils) mkHost; inherit (utils) mkHost;
configurations = [ configurations = [
# Desktops
(mkHost { (mkHost {
hardware = "doloro"; hardware = "doloro";
host = "doloro"; host = "doloro";
@@ -122,18 +170,20 @@
}; };
}) })
(mkHost { (mkHost {
hardware = "doloro-wsl"; hardware = "doloro-laptop";
host = "doloro-wsl"; host = "doloro-laptop";
system = "aarch64-linux"; system = "x86_64-linux";
stateVersion = "25.05"; stateVersion = "25.11";
nixpkgsConfig = { nixpkgsConfig = {
rocmSupport = false; rocmSupport = false;
}; };
}) })
# Servers
(mkHost { (mkHost {
hardware = "doloro-laptop"; hardware = "rpi-5";
host = "doloro-laptop"; host = "rpi-5";
system = "x86_64-linux"; system = "aarch64-linux";
# nixpkgs = inputs.rpi-nixpkgs;
stateVersion = "25.11"; stateVersion = "25.11";
nixpkgsConfig = { nixpkgsConfig = {
rocmSupport = false; rocmSupport = false;

View File

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

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,44 +1,43 @@
{ {
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 sops = {
# #./modules/neovim/home.nix age.keyFile = "/home/doloro/.config/sops/age/key.txt"; # must have no password!
# ../../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; Hyprland.enable = true;
quickshell.enable = true; quickshell.enable = true;
# chromium.enable = true; # chromium.enable = true;
wivrn.enable = true; wivrn.enable = false;
helium.enable = true; helium.enable = true;
sops.enable = true;
wakatime.enable = false;
# remoteBuild.use-remote-builders = true;
nixvim.enable = true; nixvim.enable = true;
zen-browser.enable = false;
kitty.enable = true;
helix.enable = false; helix.enable = false;
stylix.enable = true; stylix.enable = true;
tmux.enable = true; tmux.enable = true;
theme.enable = true; theme.enable = true;
obs.enable = true; obs = {
blender.enable = true; enable = true;
bottles.enable = true; autostart = false;
};
blender.enable = false;
bottles.enable = false;
fish.enable = true; fish.enable = true;
youtube-music.enable = true; youtube-music.enable = true;
unityhub.enable = true; unityhub.enable = false;
direnv.enable = true; direnv.enable = true;
git.enable = true; git.enable = true;
rsRPC.enable = true; rsRPC.enable = true;
@@ -61,6 +60,16 @@
}; };
}; };
xdg.mimeApps.enable = true; 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
@@ -77,10 +86,8 @@
hello hello
vim vim
telegram-desktop telegram-desktop
vesktop # vesktop
# (pkgs.discord.override { withVencord = true; }) legcord
# webcord-vencord
# spotify
pavucontrol pavucontrol
lazygit lazygit
btop btop
@@ -88,8 +95,8 @@
alcom alcom
gcr gcr
qbittorrent 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'.

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

@@ -2,27 +2,95 @@
# your system. Help is available in the configuration.nix(5) man page, 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`). # https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
{ config, lib, pkgs, ... }:
{ {
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. # Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true; boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = 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. networking.hostName = "doloro-nixos-laptop"; # Define your hostname.
security.rtkit.enable = true;
# Configure network connections interactively with nmcli or nmtui. # Configure network connections interactively with nmcli or nmtui.
networking.networkmanager.enable = true; networking.networkmanager.enable = true;
# Set your time zone. # Set your time zone.
time.timeZone = "Europe/Amsterdam"; # time.timeZone = "Europe/London";
services.automatic-timezoned.enable = true;
nix.settings.experimental-features = [ "nix-command" "flakes" ]; 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"
];
};
# Configure network proxy if necessary services.gnome.gnome-keyring.enable = true;
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; 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. # Select internationalisation properties.
# i18n.defaultLocale = "en_US.UTF-8"; # i18n.defaultLocale = "en_US.UTF-8";
@@ -35,34 +103,43 @@ nix.settings.experimental-features = [ "nix-command" "flakes" ];
# Enable the X11 windowing system. # Enable the X11 windowing system.
services.xserver.enable = true; 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;
# Configure keymap in X11 pulse.enable = true;
# services.xserver.xkb.layout = "us"; };
# services.xserver.xkb.options = "eurosign:e,caps:escape";
# Enable CUPS to print documents.
# services.printing.enable = true;
# Enable sound.
# services.pulseaudio.enable = true;
# OR
# services.pipewire = {
# enable = true;
# pulse.enable = true;
# };
services.libinput.enable = true; services.libinput.enable = true;
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
# Define a user account. Don't forget to set a password with passwd. # Define a user account. Don't forget to set a password with passwd.
# users.users.alice = { users.users.doloro = {
# isNormalUser = true; isNormalUser = true;
# extraGroups = [ "wheel" ]; # Enable sudo for the user. shell = pkgs.fish;
# packages = with pkgs; [ extraGroups = [ "wheel" ]; # Enable sudo for the user.
# tree 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; # programs.firefox.enable = true;
@@ -70,7 +147,12 @@ nix.settings.experimental-features = [ "nix-command" "flakes" ];
# You can use https://search.nixos.org/ to find more packages (and options). # You can use https://search.nixos.org/ to find more packages (and options).
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
git
wget wget
# tlp-pd
brightnessctl
nvtopPackages.intel
seahorse
]; ];
# Some programs need SUID wrappers, can be configured further or are # Some programs need SUID wrappers, can be configured further or are
@@ -83,8 +165,6 @@ nix.settings.experimental-features = [ "nix-command" "flakes" ];
# List services that you want to enable: # List services that you want to enable:
services.openssh.enable = true;
# Open ports in the firewall. # Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ]; # networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ]; # networking.firewall.allowedUDPPorts = [ ... ];
@@ -115,4 +195,3 @@ nix.settings.experimental-features = [ "nix-command" "flakes" ];
system.stateVersion = "25.11"; # Did you read the comment? system.stateVersion = "25.11"; # Did you read the comment?
} }

View File

@@ -1,123 +0,0 @@
{
inputs,
config,
pkgs,
fetchFromGitHub,
...
}:
{
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 = {
nixvim.enable = true;
tmux.enable = true;
fish.enable = true;
stylix.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";
# 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.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
# environment.
home.packages = with pkgs; [
hello
# vim
# telegram-desktop
# vesktop
# spotify
# pavucontrol
lazygit
sops
];
# 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 = {
EDITOR = "nvim";
};
# {{{{{ TODO Put in different file
# }}}}}
# Let Home Manager install and manage itself.
programs = {
home-manager.enable = true;
ssh = {
enable = true;
enableDefaultConfig = false;
matchBlocks = {
"*" = {
addKeysToAgent = "yes";
identityFile = [
"~/.ssh/id_github"
"~/.ssh/id_gitea_scug_io"
"~/.ssh/id_ed25519"
];
};
};
};
};
}

View File

@@ -1,59 +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;
};
};
fonts = {
enableDefaultPackages = true;
packages = with pkgs; [
nerd-fonts.jetbrains-mono
material-design-icons
material-symbols
googlesans-code
# (inputs.font-patcher.lib.patchFont {
# font = pkgs.googlesans-code;
# name = "Google Sans Code Nerd Font";
# })
nerd-fonts.caskaydia-cove
nerd-fonts.noto
noto-fonts-cjk-sans
noto-fonts-cjk-serif
];
fontDir.enable = 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,35 +6,30 @@
... ...
}: }:
{ {
# 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;
@@ -48,6 +43,24 @@
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;
@@ -78,50 +91,17 @@
vim vim
telegram-desktop telegram-desktop
vesktop vesktop
# (pkgs.discord.override { withVencord = true; }) (inputs.protonhax.packages.x86_64-linux.default)
# webcord-vencord
# 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";
}; };
@@ -130,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"
@@ -82,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 = {
@@ -174,29 +186,29 @@ in
package = config.boot.kernelPackages.nvidiaPackages.latest; package = config.boot.kernelPackages.nvidiaPackages.latest;
}; };
fonts = { # fonts = {
enableDefaultPackages = true; # enableDefaultPackages = true;
packages = # packages =
with pkgs; # with pkgs;
[ # [
nerd-fonts.jetbrains-mono # nerd-fonts.jetbrains-mono
material-design-icons # material-design-icons
material-symbols # material-symbols
googlesans-code # googlesans-code
nerd-fonts.caskaydia-cove # nerd-fonts.caskaydia-cove
nerd-fonts.noto # nerd-fonts.noto
noto-fonts-cjk-sans # noto-fonts-cjk-sans
noto-fonts-cjk-serif # noto-fonts-cjk-serif
] # ]
++ [ # ++ [
(inputs.font-patcher.lib.patchFont { # (inputs.font-patcher.lib.patchFont {
font = "${pkgs.googlesans-code}/share/fonts/googlesans-code/GoogleSansCode[wght].ttf"; # font = "${pkgs.googlesans-code}/share/fonts/googlesans-code/GoogleSansCode[wght].ttf";
name = "Google Sans Code Nerd Font"; # name = "Google Sans Code Nerd Font";
inherit system; # inherit system;
}) # })
]; # ];
fontDir.enable = true; # fontDir.enable = true;
}; # };
boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
programs.nix-ld.enable = true; programs.nix-ld.enable = true;
programs.nix-ld.libraries = with pkgs; [ programs.nix-ld.libraries = with pkgs; [
@@ -224,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;
}; };
@@ -243,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
@@ -261,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

@@ -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 = "Google Sans Code Nerd Font:size=11"; {
}; "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 = {
@@ -16,6 +17,7 @@ in
programs.xwayland.enable = true; programs.xwayland.enable = true;
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
@@ -31,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"
@@ -158,6 +155,7 @@
]; ];
layerrule = [ layerrule = [
"match:namespace ^(notifications)$, no_screen_share true" "match:namespace ^(notifications)$, no_screen_share true"
# "match:namespace ^(quickshell)$, blur true"
]; ];
# exec-once = [ # exec-once = [
# ]; # ];

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,12 +37,17 @@ 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 = { qmlls = {
enable = true; enable = true;
config = {
cmd = "-E";
};
}; };
rust_analyzer = { rust_analyzer = {
enable = true; enable = true;
@@ -55,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 = {

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
} }
Widgets.SystemTray { RowLayout {
id: systemTray // Right
} Layout.alignment: Qt.AlignRight
} Widgets.Demo {}
}
Rectangle {
anchors {
bottom: parent.bottom
left: parent.left
right: parent.right
}
height: 1
color: "#8d8d8d"
} }
} }
// Rectangle {
// anchors {
// bottom: parent.bottom
// 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

@@ -1,4 +1,4 @@
//@ pragma UseQApplication // @ pragma UseQApplication
import Quickshell import Quickshell
import QtQuick import QtQuick
import "bar" as Bar import "bar" as Bar

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 = {

1
paws.txt Normal file
View File

@@ -0,0 +1 @@
paws

View File

@@ -1,25 +0,0 @@
#! /nix/store/cl2gkgnh26mmpka81pc2g5bzjfrili92-bash-5.3p3/bin/bash -e
if [ -x "/run/wrappers/bin/__chromium-suid-sandbox" ]
then
export CHROME_DEVEL_SANDBOX="/run/wrappers/bin/__chromium-suid-sandbox"
else
export CHROME_DEVEL_SANDBOX="/nix/store/wb5fr6ximbq19vbfgr5dw7miqnkqj6h4-helium-browser-0.5.7-141.0.7390.107-sandbox/bin/__chromium-suid-sandbox"
fi
# Make generated desktop shortcuts have a valid executable name.
export CHROME_WRAPPER='helium'
# To avoid loading .so files from cwd, LD_LIBRARY_PATH here must not
# contain an empty section before or after a colon.
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH${LD_LIBRARY_PATH:+:}/nix/store/lm4anvzaxv13aw24cb9cxpwkyrq9d97v-libva-2.22.0/lib:/nix/store/plx9hmh9gbd8s7nbiaijz49501br2vvf-pipewire-1.4.8/lib:/nix/store/7gr1mq9q40xcxirsawn34kzxj8kmgcl6-wayland-1.24.0/lib:/nix/store/m9disdwacfbmfpl9x6v7h7011rbahz7f-gtk+3-3.24.49/lib:/nix/store/2329310vfm5ivldbrnwp317ijcmzbfzi-gtk4-4.18.6/lib:/nix/store/xn5g4ncd73szqypzzmd98dk8xlzncwk4-krb5-1.22.1-lib/lib"
# libredirect causes chromium to deadlock on startup
export LD_PRELOAD="$(echo -n "$LD_PRELOAD" | /nix/store/00bc157nm93q5fjz551fwk60ihlbilvj-coreutils-9.7/bin/tr ':' '\n' | /nix/store/6q57mnfak3q8ss656qgp245qzqvnniyr-gnugrep-3.12/bin/grep -v /lib/libredirect\\.so$ | /nix/store/00bc157nm93q5fjz551fwk60ihlbilvj-coreutils-9.7/bin/tr '\n' ':')"
export XDG_DATA_DIRS=/nix/store/fgyxm1lpvpd13asgmviypbi4sl6a73w2-cups-2.4.14/share:/nix/store/m9disdwacfbmfpl9x6v7h7011rbahz7f-gtk+3-3.24.49/share:/nix/store/2329310vfm5ivldbrnwp317ijcmzbfzi-gtk4-4.18.6/share:/nix/store/f0ih1z5iajsax2rmryck7a6j2ys1k37k-adwaita-icon-theme-48.0/share:/nix/store/gffh39nwyysqncknijxn7hpyasrqszax-hicolor-icon-theme-0.18/share:/nix/store/d177qdbszw6wlmd1yahgk1mbafxbyqmm-gsettings-desktop-schemas-48.0/share/gsettings-schemas/gsettings-desktop-schemas-48.0:/nix/store/m9disdwacfbmfpl9x6v7h7011rbahz7f-gtk+3-3.24.49/share/gsettings-schemas/gtk+3-3.24.49:/nix/store/2329310vfm5ivldbrnwp317ijcmzbfzi-gtk4-4.18.6/share/gsettings-schemas/gtk4-4.18.6${XDG_DATA_DIRS:+:}$XDG_DATA_DIRS
# Mainly for xdg-open but also other xdg-* tools (this is only a fallback; $PATH is suffixed so that other implementations can be used):
export PATH="$PATH${PATH:+:}/nix/store/4y6rpi6hsmnm120xbp3f5xmwa0vgqcqp-xdg-utils-1.2.1/bin"
exec "/nix/store/swqp1gsx4nyvxxalgkpgzh6z7yryd0np-helium-browser-unwrapped-0.5.7-141.0.7390.107/libexec/helium/helium" ${NIXOS_OZONE_WL:+${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}} "$@"

View File

@@ -1,25 +0,0 @@
#! /nix/store/cl2gkgnh26mmpka81pc2g5bzjfrili92-bash-5.3p3/bin/bash -e
if [ -x "/run/wrappers/bin/__chromium-suid-sandbox" ]
then
export CHROME_DEVEL_SANDBOX="/run/wrappers/bin/__chromium-suid-sandbox"
else
export CHROME_DEVEL_SANDBOX="/nix/store/wb5fr6ximbq19vbfgr5dw7miqnkqj6h4-helium-browser-0.5.7-141.0.7390.107-sandbox/bin/__chromium-suid-sandbox"
fi
# Make generated desktop shortcuts have a valid executable name.
export CHROME_WRAPPER='helium'
# To avoid loading .so files from cwd, LD_LIBRARY_PATH here must not
# contain an empty section before or after a colon.
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH${LD_LIBRARY_PATH:+:}/nix/store/lm4anvzaxv13aw24cb9cxpwkyrq9d97v-libva-2.22.0/lib:/nix/store/plx9hmh9gbd8s7nbiaijz49501br2vvf-pipewire-1.4.8/lib:/nix/store/7gr1mq9q40xcxirsawn34kzxj8kmgcl6-wayland-1.24.0/lib:/nix/store/m9disdwacfbmfpl9x6v7h7011rbahz7f-gtk+3-3.24.49/lib:/nix/store/2329310vfm5ivldbrnwp317ijcmzbfzi-gtk4-4.18.6/lib:/nix/store/xn5g4ncd73szqypzzmd98dk8xlzncwk4-krb5-1.22.1-lib/lib"
# libredirect causes chromium to deadlock on startup
export LD_PRELOAD="$(echo -n "$LD_PRELOAD" | /nix/store/00bc157nm93q5fjz551fwk60ihlbilvj-coreutils-9.7/bin/tr ':' '\n' | /nix/store/6q57mnfak3q8ss656qgp245qzqvnniyr-gnugrep-3.12/bin/grep -v /lib/libredirect\\.so$ | /nix/store/00bc157nm93q5fjz551fwk60ihlbilvj-coreutils-9.7/bin/tr '\n' ':')"
export XDG_DATA_DIRS=/nix/store/fgyxm1lpvpd13asgmviypbi4sl6a73w2-cups-2.4.14/share:/nix/store/m9disdwacfbmfpl9x6v7h7011rbahz7f-gtk+3-3.24.49/share:/nix/store/2329310vfm5ivldbrnwp317ijcmzbfzi-gtk4-4.18.6/share:/nix/store/f0ih1z5iajsax2rmryck7a6j2ys1k37k-adwaita-icon-theme-48.0/share:/nix/store/gffh39nwyysqncknijxn7hpyasrqszax-hicolor-icon-theme-0.18/share:/nix/store/d177qdbszw6wlmd1yahgk1mbafxbyqmm-gsettings-desktop-schemas-48.0/share/gsettings-schemas/gsettings-desktop-schemas-48.0:/nix/store/m9disdwacfbmfpl9x6v7h7011rbahz7f-gtk+3-3.24.49/share/gsettings-schemas/gtk+3-3.24.49:/nix/store/2329310vfm5ivldbrnwp317ijcmzbfzi-gtk4-4.18.6/share/gsettings-schemas/gtk4-4.18.6${XDG_DATA_DIRS:+:}$XDG_DATA_DIRS
# Mainly for xdg-open but also other xdg-* tools (this is only a fallback; $PATH is suffixed so that other implementations can be used):
export PATH="$PATH${PATH:+:}/nix/store/4y6rpi6hsmnm120xbp3f5xmwa0vgqcqp-xdg-utils-1.2.1/bin"
exec "/nix/store/swqp1gsx4nyvxxalgkpgzh6z7yryd0np-helium-browser-unwrapped-0.5.7-141.0.7390.107/libexec/helium/helium" ${NIXOS_OZONE_WL:+${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}} "$@"

View File

@@ -1,222 +0,0 @@
[Desktop Entry]
StartupWMClass=helium-browser
Version=1.0
Name=Helium
# Only KDE 4 seems to use GenericName, so we reuse the KDE strings.
# From Ubuntu's language-pack-kde-XX-base packages, version 9.04-20090413.
GenericName=Web Browser
GenericName[ar]=متصفح الشبكة
GenericName[bg]=Уеб браузър
GenericName[ca]=Navegador web
GenericName[cs]=WWW prohlížeč
GenericName[da]=Browser
GenericName[de]=Web-Browser
GenericName[el]=Περιηγητής ιστού
GenericName[en_GB]=Web Browser
GenericName[es]=Navegador web
GenericName[et]=Veebibrauser
GenericName[fi]=WWW-selain
GenericName[fr]=Navigateur Web
GenericName[gu]=વેબ બ્રાઉઝર
GenericName[he]=דפדפן אינטרנט
GenericName[hi]=वेब ब्राउज़र
GenericName[hu]=Webböngésző
GenericName[it]=Browser Web
GenericName[ja]=ウェブブラウザ
GenericName[kn]=ಜಾಲ ವೀಕ್ಷಕ
GenericName[ko]=웹 브라우저
GenericName[lt]=Žiniatinklio naršyklė
GenericName[lv]=Tīmekļa pārlūks
GenericName[ml]=വെബ് ബ്രൌസര്‍
GenericName[mr]=वेब ब्राऊजर
GenericName[nb]=Nettleser
GenericName[nl]=Webbrowser
GenericName[pl]=Przeglądarka WWW
GenericName[pt]=Navegador Web
GenericName[pt_BR]=Navegador da Internet
GenericName[ro]=Navigator de Internet
GenericName[ru]=Веб-браузер
GenericName[sl]=Spletni brskalnik
GenericName[sv]=Webbläsare
GenericName[ta]=இணைய உலாவி
GenericName[th]=เว็บเบราว์เซอร์
GenericName[tr]=Web Tarayıcı
GenericName[uk]=Навігатор Тенет
GenericName[zh_CN]=网页浏览器
GenericName[zh_HK]=網頁瀏覽器
GenericName[zh_TW]=網頁瀏覽器
# Not translated in KDE, from Epiphany 2.26.1-0ubuntu1.
GenericName[bn]=ওয়েব ব্রাউজার
GenericName[fil]=Web Browser
GenericName[hr]=Web preglednik
GenericName[id]=Browser Web
GenericName[or]=ଓ୍ବେବ ବ୍ରାଉଜର
GenericName[sk]=WWW prehliadač
GenericName[sr]=Интернет прегледник
GenericName[te]=మహాతల అన్వేషి
GenericName[vi]=Bộ duyệt Web
# Gnome and KDE 3 uses Comment.
Comment=Access the Internet
Comment[ar]=الدخول إلى الإنترنت
Comment[bg]=Достъп до интернет
Comment[bn]=ইন্টারনেটটি অ্যাক্সেস করুন
Comment[ca]=Accedeix a Internet
Comment[cs]=Přístup k internetu
Comment[da]=Få adgang til internettet
Comment[de]=Internetzugriff
Comment[el]=Πρόσβαση στο Διαδίκτυο
Comment[en_GB]=Access the Internet
Comment[es]=Accede a Internet.
Comment[et]=Pääs Internetti
Comment[fi]=Käytä internetiä
Comment[fil]=I-access ang Internet
Comment[fr]=Accéder à Internet
Comment[gu]=ઇંટરનેટ ઍક્સેસ કરો
Comment[he]=גישה אל האינטרנט
Comment[hi]=इंटरनेट तक पहुंच स्थापित करें
Comment[hr]=Pristup Internetu
Comment[hu]=Internetelérés
Comment[id]=Akses Internet
Comment[it]=Accesso a Internet
Comment[ja]=インターネットにアクセス
Comment[kn]=ಇಂಟರ್ನೆಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಿ
Comment[ko]=인터넷 연결
Comment[lt]=Interneto prieiga
Comment[lv]=Piekļūt internetam
Comment[ml]=ഇന്റര്‍‌നെറ്റ് ആക്‌സസ് ചെയ്യുക
Comment[mr]=इंटरनेटमध्ये प्रवेश करा
Comment[nb]=Gå til Internett
Comment[nl]=Verbinding maken met internet
Comment[or]=ଇଣ୍ଟର୍ନେଟ୍ ପ୍ରବେଶ କରନ୍ତୁ
Comment[pl]=Skorzystaj z internetu
Comment[pt]=Aceder à Internet
Comment[pt_BR]=Acessar a internet
Comment[ro]=Accesaţi Internetul
Comment[ru]=Доступ в Интернет
Comment[sk]=Prístup do siete Internet
Comment[sl]=Dostop do interneta
Comment[sr]=Приступите Интернету
Comment[sv]=Gå ut på Internet
Comment[ta]=இணையத்தை அணுகுதல்
Comment[te]=ఇంటర్నెట్‌ను ఆక్సెస్ చెయ్యండి
Comment[th]=เข้าถึงอินเทอร์เน็ต
Comment[tr]=İnternet'e erişin
Comment[uk]=Доступ до Інтернету
Comment[vi]=Truy cập Internet
Comment[zh_CN]=访问互联网
Comment[zh_HK]=連線到網際網路
Comment[zh_TW]=連線到網際網路
Exec=helium %U
StartupNotify=true
Terminal=false
Icon=helium
Type=Application
Categories=Network;WebBrowser;
MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/webcal;x-scheme-handler/mailto;x-scheme-handler/about;x-scheme-handler/unknown
Actions=new-window;new-private-window;
[Desktop Action new-window]
Name=New Window
Name[am]=አዲስ መስኮት
Name[ar]=نافذة جديدة
Name[bg]=Нов прозорец
Name[bn]=নতুন উইন্ডো
Name[ca]=Finestra nova
Name[cs]=Nové okno
Name[da]=Nyt vindue
Name[de]=Neues Fenster
Name[el]=Νέο Παράθυρο
Name[en_GB]=New Window
Name[es]=Nueva ventana
Name[et]=Uus aken
Name[fa]=پنجره جدید
Name[fi]=Uusi ikkuna
Name[fil]=New Window
Name[fr]=Nouvelle fenêtre
Name[gu]=નવી વિંડો
Name[hi]=नई विंडो
Name[hr]=Novi prozor
Name[hu]=Új ablak
Name[id]=Jendela Baru
Name[it]=Nuova finestra
Name[iw]=חלון חדש
Name[ja]=新規ウインドウ
Name[kn]=ಹೊಸ ವಿಂಡೊ
Name[ko]=새 창
Name[lt]=Naujas langas
Name[lv]=Jauns logs
Name[ml]=പുതിയ വിന്‍ഡോ
Name[mr]=नवीन विंडो
Name[nl]=Nieuw venster
Name[no]=Nytt vindu
Name[pl]=Nowe okno
Name[pt]=Nova janela
Name[pt_BR]=Nova janela
Name[ro]=Fereastră nouă
Name[ru]=Новое окно
Name[sk]=Nové okno
Name[sl]=Novo okno
Name[sr]=Нови прозор
Name[sv]=Nytt fönster
Name[sw]=Dirisha Jipya
Name[ta]=புதிய சாளரம்
Name[te]=క్రొత్త విండో
Name[th]=หน้าต่างใหม่
Name[tr]=Yeni Pencere
Name[uk]=Нове вікно
Name[vi]=Cửa sổ Mới
Name[zh_CN]=新建窗口
Name[zh_TW]=開新視窗
Exec=helium
[Desktop Action new-private-window]
Name=New Incognito Window
Name[ar]=نافذة جديدة للتصفح المتخفي
Name[bg]=Нов прозорец „инкогнито“
Name[bn]=নতুন ছদ্মবেশী উইন্ডো
Name[ca]=Finestra d'incògnit nova
Name[cs]=Nové anonymní okno
Name[da]=Nyt inkognitovindue
Name[de]=Neues Inkognito-Fenster
Name[el]=Νέο παράθυρο για ανώνυμη περιήγηση
Name[en_GB]=New Incognito window
Name[es]=Nueva ventana de incógnito
Name[et]=Uus inkognito aken
Name[fa]=پنجره جدید حالت ناشناس
Name[fi]=Uusi incognito-ikkuna
Name[fil]=Bagong Incognito window
Name[fr]=Nouvelle fenêtre de navigation privée
Name[gu]=નવી છુપી વિંડો
Name[hi]=नई गुप्त विंडो
Name[hr]=Novi anoniman prozor
Name[hu]=Új Inkognitóablak
Name[id]=Jendela Penyamaran baru
Name[it]=Nuova finestra di navigazione in incognito
Name[iw]=חלון חדש לגלישה בסתר
Name[ja]=新しいシークレット ウィンドウ
Name[kn]=ಹೊಸ ಅಜ್ಞಾತ ವಿಂಡೋ
Name[ko]=새 시크릿 창
Name[lt]=Naujas inkognito langas
Name[lv]=Jauns inkognito režīma logs
Name[ml]=പുതിയ വേഷ പ്രച്ഛന്ന വിന്‍ഡോ
Name[mr]=नवीन गुप्त विंडो
Name[nl]=Nieuw incognitovenster
Name[no]=Nytt inkognitovindu
Name[pl]=Nowe okno incognito
Name[pt]=Nova janela de navegação anónima
Name[pt_BR]=Nova janela anônima
Name[ro]=Fereastră nouă incognito
Name[ru]=Новое окно в режиме инкогнито
Name[sk]=Nové okno inkognito
Name[sl]=Novo okno brez beleženja zgodovine
Name[sr]=Нови прозор за прегледање без архивирања
Name[sv]=Nytt inkognitofönster
Name[ta]=புதிய மறைநிலைச் சாளரம்
Name[te]=క్రొత్త అజ్ఞాత విండో
Name[th]=หน้าต่างใหม่ที่ไม่ระบุตัวตน
Name[tr]=Yeni Gizli pencere
Name[uk]=Нове вікно в режимі анонімного перегляду
Name[vi]=Cửa sổ ẩn danh mới
Name[zh_CN]=新建隐身窗口
Name[zh_TW]=新增無痕式視窗
Exec=helium --incognito

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