Compare commits
75 Commits
main
...
big-refact
| Author | SHA1 | Date | |
|---|---|---|---|
|
471478ed6b
|
|||
|
5d01659350
|
|||
|
d202d116c0
|
|||
|
5749c06b20
|
|||
|
cdaf170f6f
|
|||
|
4a4283988f
|
|||
|
4a1e5afd79
|
|||
|
6de66cf1cf
|
|||
|
d37e468ae8
|
|||
|
2797bfee0e
|
|||
|
3e19edc73a
|
|||
|
bc336fd6cf
|
|||
|
8e94344e8a
|
|||
|
33e497672a
|
|||
|
9b3135c378
|
|||
|
7a1caeaaa3
|
|||
|
ccd6b38184
|
|||
|
0ceda0b675
|
|||
|
8229f20975
|
|||
|
6c33f7f53e
|
|||
|
64f2e34018
|
|||
|
ea47a2ca71
|
|||
|
824f75f9cb
|
|||
|
77d520e944
|
|||
|
963b45ffa2
|
|||
|
52b3f2eb5e
|
|||
|
b0787ecfd6
|
|||
|
73fcd3619e
|
|||
|
119a2433b4
|
|||
|
cbd3c408e1
|
|||
|
eb593db0c0
|
|||
|
961afbbff7
|
|||
|
6f25e849f0
|
|||
|
71b1e05b2d
|
|||
|
320cac603d
|
|||
|
a306a8cb9a
|
|||
|
db22304952
|
|||
|
79c70eea54
|
|||
|
598306c57e
|
|||
|
6af15d5a00
|
|||
|
93f81a1f7f
|
|||
|
ba58db5873
|
|||
|
9fbb2574d4
|
|||
|
55c5f90b5f
|
|||
|
439b3e5470
|
|||
|
bd559c0507
|
|||
|
c9d93f2e13
|
|||
|
e5c5a641e2
|
|||
|
d001b30906
|
|||
|
32d8f9bd4f
|
|||
|
1caf2a2583
|
|||
|
07e47f87e6
|
|||
|
5f063d825e
|
|||
|
205b0a516b
|
|||
|
a9fec07b50
|
|||
|
00411b9d9f
|
|||
|
cea20ef832
|
|||
|
a0963d09f0
|
|||
|
53502772a0
|
|||
|
d002ca372e
|
|||
|
f4387c8865
|
|||
|
b5720666ea
|
|||
|
5a8bd09491
|
|||
|
b99ccfc588
|
|||
|
6cc1c98f75
|
|||
|
58c8146cc0
|
|||
|
540359308e
|
|||
|
26195b6411
|
|||
|
c4025a9caa
|
|||
|
5ef0b0b9a6
|
|||
|
51293382e8
|
|||
|
5340ec1756
|
|||
|
1b80778422
|
|||
|
0d3c5c559f
|
|||
|
3c57067a6f
|
@@ -2,9 +2,10 @@
|
||||
creation_rules:
|
||||
# Rule to encrypt YAML secret files in a specific directory
|
||||
- encrypted_regex: '^(data|stringData)$' # Encrypt data and stringData by default (useful for Kubernetes secrets)
|
||||
path_regex: secrets/.*\.yaml$ # Applies to all files in the secrets/ directory
|
||||
path_regex: config/modules/secrets/content/*.*\.yaml$ # Applies to all files in the secrets/ directory
|
||||
age:
|
||||
- "age1ykcy2r4kk729e7adqxu8s24ujc60z5eux7ma0ca4ruzydwgm5p6qmdp838" # pc-user-doloro
|
||||
- "age1e6vws55p0g23qzthm4qa93hpt6lqmck6670gkygph0sc0j7my4uq5wqjfh" # pc-system
|
||||
- "age1x3lahhkefkap67cdmdjcqaxan9hp62er78akr79v9m73nvgugpeqk0y32a" # laptop-user-doloro
|
||||
- "age1exzngtk4d9vcsmcq6ap5xx3ca9qacqjkrv86ymged7msx9z6vfyqsf5sjq" # laptop-system
|
||||
- "age1fw4xnh2q52juce94ffn54js708cr6umfwpv0mykuddkea7kr4f0q7a9h05" # rpi5
|
||||
|
||||
7
config/defaults.nix
Normal file
7
config/defaults.nix
Normal file
@@ -0,0 +1,7 @@
|
||||
{ den, ... }:
|
||||
{
|
||||
den.default = {
|
||||
nixos.system.stateVersion = "25.11";
|
||||
homeManager.home.stateVersion = "25.11";
|
||||
};
|
||||
}
|
||||
11
config/dendritic.nix
Normal file
11
config/dendritic.nix
Normal file
@@ -0,0 +1,11 @@
|
||||
{ inputs, lib, ... }:
|
||||
{
|
||||
imports = [
|
||||
inputs.flake-file.flakeModules.dendritic
|
||||
inputs.den.flakeModules.dendritic
|
||||
];
|
||||
flake-file.do-not-edit = "You FAGGOT; Do NOT edit this file !!!!, run 'nix run .#write-flake' ";
|
||||
flake-file.outputs = lib.mkForce ''
|
||||
inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } (inputs.import-tree ./config)
|
||||
'';
|
||||
}
|
||||
70
config/hosts/aspects/doloro-desktop/disko.nix
Normal file
70
config/hosts/aspects/doloro-desktop/disko.nix
Normal file
@@ -0,0 +1,70 @@
|
||||
{
|
||||
modules,
|
||||
__findFile,
|
||||
...
|
||||
}:
|
||||
{
|
||||
den.aspects.desktop = {
|
||||
includes = [ modules.disko ];
|
||||
nixos =
|
||||
{ lib, ... }:
|
||||
{
|
||||
disko.devices = {
|
||||
disk = {
|
||||
main = {
|
||||
device = lib.mkDefault "/dev/disk/by-id/nvme-CT1000P2SSD8_2221E632CD1F";
|
||||
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" ];
|
||||
};
|
||||
};
|
||||
root = {
|
||||
size = "100%";
|
||||
content = {
|
||||
type = "btrfs";
|
||||
extraArgs = [ "-f" ]; # Override existing partition
|
||||
# Subvolumes must set a mountpoint in order to be mounted,
|
||||
# unless their parent is mounted
|
||||
subvolumes = {
|
||||
# Subvolume name is different from mountpoint
|
||||
"@" = {
|
||||
mountpoint = "/";
|
||||
};
|
||||
# Subvolume name is the same as the mountpoint
|
||||
"@home" = {
|
||||
mountpoint = "/home";
|
||||
};
|
||||
# Parent is not mounted so the mountpoint must be set
|
||||
"@nix" = {
|
||||
mountpoint = "/nix";
|
||||
};
|
||||
"@blackhole" = {
|
||||
mountpoint = "/var/blackhole";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
31
config/hosts/aspects/doloro-desktop/hardware.nix
Normal file
31
config/hosts/aspects/doloro-desktop/hardware.nix
Normal file
@@ -0,0 +1,31 @@
|
||||
{ den, modules, ... }:
|
||||
{
|
||||
den.aspects.desktop = {
|
||||
nixos =
|
||||
{
|
||||
modulesPath,
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [
|
||||
"nvme"
|
||||
"xhci_pci"
|
||||
"ahci"
|
||||
"usbhid"
|
||||
];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-amd" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
};
|
||||
};
|
||||
}
|
||||
75
config/hosts/aspects/doloro-desktop/home.nix
Normal file
75
config/hosts/aspects/doloro-desktop/home.nix
Normal file
@@ -0,0 +1,75 @@
|
||||
{
|
||||
den,
|
||||
__findFile,
|
||||
modules,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
den.aspects.doloro-desktop = {
|
||||
includes = [
|
||||
<den/primary-user>
|
||||
den.aspects.doloro-shared
|
||||
modules.sops
|
||||
modules.hyprland
|
||||
modules.fish
|
||||
modules.tuigreet
|
||||
modules.kitty
|
||||
modules.fonts
|
||||
<modules/hyprland/doloro-settings>
|
||||
(modules.obs {
|
||||
audio = true;
|
||||
autostart = true;
|
||||
})
|
||||
<modules/common/gaming>
|
||||
# modules.helium
|
||||
(<modules/helium> {
|
||||
default = true;
|
||||
})
|
||||
# modules.niri # Testing
|
||||
modules.stylix
|
||||
modules.quickshell
|
||||
modules.nix-ld
|
||||
];
|
||||
nixos =
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
users.users.doloro = {
|
||||
shell = pkgs.fish;
|
||||
hashedPasswordFile = config.sops.secrets."doloro-hashed_password".path;
|
||||
};
|
||||
};
|
||||
homeManager =
|
||||
{ home, pkgs, ... }:
|
||||
{
|
||||
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;
|
||||
};
|
||||
};
|
||||
home.packages = with pkgs; [
|
||||
equibop
|
||||
telegram-desktop
|
||||
obsidian
|
||||
pear-desktop
|
||||
prismlauncher
|
||||
deadlock-mod-manager
|
||||
gamescope
|
||||
];
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
programs.home-manager.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
97
config/hosts/aspects/doloro-desktop/host.nix
Normal file
97
config/hosts/aspects/doloro-desktop/host.nix
Normal file
@@ -0,0 +1,97 @@
|
||||
{
|
||||
den,
|
||||
modules,
|
||||
pkgs,
|
||||
inputs,
|
||||
__findFile,
|
||||
...
|
||||
}:
|
||||
{
|
||||
den.aspects.desktop = {
|
||||
includes = [
|
||||
modules.nix
|
||||
];
|
||||
nixos =
|
||||
{ pkgs, config, ... }:
|
||||
{
|
||||
boot.loader.grub.enable = true;
|
||||
boot.loader.grub.device = "nodev";
|
||||
boot.loader.grub.devices = [
|
||||
"/dev/disk/by-id/nvme-CT1000P2SSD8_2221E632CD1F"
|
||||
"nodev"
|
||||
];
|
||||
#boot.loader.efi.canTouchEfiVariables = true;
|
||||
boot.loader.grub.efiSupport = true;
|
||||
boot.loader.grub.efiInstallAsRemovable = true;
|
||||
networking.hostName = "doloroo-main"; # Define your hostname.
|
||||
|
||||
boot.kernelPackages =
|
||||
inputs.nix-cachyos-kernel.legacyPackages.x86_64-linux.linuxPackages-cachyos-lts-lto;
|
||||
boot.initrd.verbose = false;
|
||||
boot.kernelParams = [
|
||||
"boot.shell_on_fail"
|
||||
"rd.systemd.show_status=auto"
|
||||
];
|
||||
|
||||
services.openssh.enable = true;
|
||||
|
||||
networking.networkmanager.enable = true;
|
||||
networking.firewall.enable = false;
|
||||
|
||||
security.rtkit.enable = true;
|
||||
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
services.xserver.videoDrivers = [ "nvidia" ];
|
||||
|
||||
fileSystems."/mnt/2tb" = {
|
||||
device = "/dev/disk/by-uuid/0f49aec7-4af2-4f4f-b475-3f4fad2b59c2";
|
||||
fsType = "ext4";
|
||||
options = [
|
||||
# If you don't have this options attribute, it'll default to "defaults"
|
||||
# boot options for fstab. Search up fstab mount options you can use
|
||||
"defaults"
|
||||
"users" # Allows any user to mount and unmount
|
||||
"nofail" # Prevent system from failing if this drive doesn't mount
|
||||
"exec"
|
||||
];
|
||||
};
|
||||
services.gnome.gnome-keyring.enable = true;
|
||||
|
||||
hardware.nvidia = {
|
||||
|
||||
# Modesetting is required.
|
||||
modesetting.enable = true;
|
||||
|
||||
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
|
||||
# Enable this if you have graphical corruption issues or application crashes after waking
|
||||
# up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead
|
||||
# of just the bare essentials.
|
||||
powerManagement.enable = true;
|
||||
|
||||
# Fine-grained power management. Turns off GPU when not in use.
|
||||
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
|
||||
powerManagement.finegrained = false;
|
||||
# prime.offload.enable = true;
|
||||
|
||||
# Use the NVidia open source kernel module (not to be confused with the
|
||||
# independent third-party "nouveau" open source driver).
|
||||
# Support is limited to the Turing and later architectures. Full list of
|
||||
# supported GPUs is at:
|
||||
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
|
||||
# Only available from driver 515.43.04+
|
||||
open = false;
|
||||
|
||||
# Enable the Nvidia settings menu,
|
||||
# accessible via `nvidia-settings`.
|
||||
nvidiaSettings = true;
|
||||
|
||||
# Optionally, you may need to select the appropriate driver version for your specific GPU.
|
||||
package = config.boot.kernelPackages.nvidiaPackages.latest;
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
}
|
||||
75
config/hosts/aspects/doloro-laptop/disko.nix
Normal file
75
config/hosts/aspects/doloro-laptop/disko.nix
Normal file
@@ -0,0 +1,75 @@
|
||||
{
|
||||
modules,
|
||||
__findFile,
|
||||
...
|
||||
}:
|
||||
{
|
||||
den.aspects.laptop = {
|
||||
includes = [ modules.disko ];
|
||||
nixos =
|
||||
{ lib, ... }:
|
||||
{
|
||||
disko.devices = {
|
||||
disk = {
|
||||
main = {
|
||||
device = "/dev/nvme0n1";
|
||||
type = "disk";
|
||||
content = {
|
||||
type = "gpt";
|
||||
partitions = {
|
||||
boot = {
|
||||
name = "boot";
|
||||
size = "1M";
|
||||
type = "EF02";
|
||||
};
|
||||
ESP = {
|
||||
name = "ESP";
|
||||
priority = 1;
|
||||
size = "4G";
|
||||
type = "EF00";
|
||||
content = {
|
||||
type = "filesystem";
|
||||
format = "vfat";
|
||||
mountpoint = "/boot";
|
||||
mountOptions = [ "umask=0077" ];
|
||||
};
|
||||
};
|
||||
plainSwap = {
|
||||
size = "48G";
|
||||
content = {
|
||||
type = "swap";
|
||||
discardPolicy = "both"; # Both "once" and page discard policies
|
||||
resumeDevice = true; # Use for hibernation resume device
|
||||
};
|
||||
};
|
||||
root = {
|
||||
size = "100%";
|
||||
content = {
|
||||
type = "btrfs";
|
||||
extraArgs = [ "-f" ]; # Override existing partition
|
||||
# Subvolumes must set a mountpoint in order to be mounted,
|
||||
# unless their parent is mounted
|
||||
subvolumes = {
|
||||
# Subvolume name is different from mountpoint
|
||||
"@" = {
|
||||
mountpoint = "/";
|
||||
};
|
||||
# Subvolume name is the same as the mountpoint
|
||||
"@home" = {
|
||||
mountpoint = "/home";
|
||||
};
|
||||
# Parent is not mounted so the mountpoint must be set
|
||||
"@nix" = {
|
||||
mountpoint = "/nix";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
35
config/hosts/aspects/doloro-laptop/hardware.nix
Normal file
35
config/hosts/aspects/doloro-laptop/hardware.nix
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
den,
|
||||
modules,
|
||||
__findFile,
|
||||
...
|
||||
}:
|
||||
{
|
||||
den.aspects.laptop = {
|
||||
nixos =
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
modulesPath,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
boot.initrd.availableKernelModules = [
|
||||
"xhci_pci"
|
||||
"thunderbolt"
|
||||
"vmd"
|
||||
"nvme"
|
||||
];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-intel" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
};
|
||||
};
|
||||
}
|
||||
63
config/hosts/aspects/doloro-laptop/home.nix
Normal file
63
config/hosts/aspects/doloro-laptop/home.nix
Normal file
@@ -0,0 +1,63 @@
|
||||
{
|
||||
den,
|
||||
__findFile,
|
||||
modules,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
den.aspects.doloro-laptop = {
|
||||
includes = [
|
||||
<den/primary-user>
|
||||
den.aspects.doloro-shared
|
||||
modules.hyprland
|
||||
<modules/hyprland/doloro-settings>
|
||||
modules.sops
|
||||
modules.fish
|
||||
(<modules/helium> {
|
||||
default = true;
|
||||
})
|
||||
modules.kitty
|
||||
modules.stylix
|
||||
modules.quickshell
|
||||
modules.lavd
|
||||
];
|
||||
nixos =
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
users.users.doloro = {
|
||||
isNormalUser = true;
|
||||
shell = pkgs.fish;
|
||||
hashedPasswordFile = config.sops.secrets."doloro-hashed_password".path;
|
||||
};
|
||||
};
|
||||
homeManager =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
monitor = [
|
||||
"eDP-1, 2880x1800@120, 0x0, 2"
|
||||
];
|
||||
input = {
|
||||
kb_layout = "gb";
|
||||
follow_mouse = 2;
|
||||
sensitivity = 0;
|
||||
};
|
||||
decoration = {
|
||||
blur = lib.mkForce {
|
||||
enabled = false;
|
||||
passes = 1;
|
||||
new_optimizations = true;
|
||||
ignore_opacity = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
home.packages = with pkgs; [
|
||||
telegram-desktop
|
||||
equibop
|
||||
obsidian
|
||||
];
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
219
config/hosts/aspects/doloro-laptop/host.nix
Normal file
219
config/hosts/aspects/doloro-laptop/host.nix
Normal file
@@ -0,0 +1,219 @@
|
||||
{
|
||||
den,
|
||||
modules,
|
||||
__findFile,
|
||||
inputs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
den.aspects.laptop = {
|
||||
includes = [
|
||||
modules.nix
|
||||
modules.tuigreet
|
||||
<modules/common/laptop-power-management>
|
||||
modules.fonts
|
||||
(modules.tdp {
|
||||
batt = {
|
||||
cpu = {
|
||||
long-term = 10;
|
||||
short-term = 15;
|
||||
};
|
||||
};
|
||||
ac = {
|
||||
cpu = {
|
||||
long-term = 120;
|
||||
short-term = 120;
|
||||
};
|
||||
};
|
||||
})
|
||||
];
|
||||
nixos =
|
||||
{ pkgs, config, ... }:
|
||||
{
|
||||
# Use the systemd-boot EFI boot loader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
# boot.kernelPackages = pkgs.linuxPackages_6_12; # Hibernate works on 6.12 but not on latest
|
||||
# boot.kernelPackages = pkgs.linuxPackages_latest; # Unpinned the linux version for now.. as i am not using hibernate that often
|
||||
boot.kernelPackages =
|
||||
inputs.nix-cachyos-kernel.legacyPackages.x86_64-linux.linuxPackages-cachyos-lts-lto;
|
||||
networking.hostName = "doloro-nixos-laptop"; # Define your hostname.
|
||||
security.rtkit.enable = true;
|
||||
|
||||
# Configure network connections interactively with nmcli or nmtui.
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
# Set your time zone.
|
||||
# time.timeZone = "Europe/London";
|
||||
services.automatic-timezoned.enable = true;
|
||||
|
||||
nix.settings = {
|
||||
substituters = [
|
||||
"https://nix-community.cachix.org"
|
||||
"https://cache.nixos.org/"
|
||||
"https://attic.scug.io/pkgs"
|
||||
];
|
||||
trusted-public-keys = [
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||
"pkgs:+sRbfiZMMX5R3PuAPtIRz/emowDoGZNpozibrnrAvuc="
|
||||
];
|
||||
experimental-features = [
|
||||
"flakes"
|
||||
"nix-command"
|
||||
];
|
||||
trusted-users = [
|
||||
"doloro"
|
||||
];
|
||||
};
|
||||
|
||||
services.gnome.gnome-keyring.enable = true;
|
||||
|
||||
hardware = {
|
||||
# firmware = [ pkgs.intel-npu-driver ];
|
||||
cpu.intel = {
|
||||
# npu.enable = true;
|
||||
};
|
||||
graphics = {
|
||||
enable = true;
|
||||
# https://github.com/intel/libvpl?tab=readme-ov-file#dispatcher-behavior-when-targeting-intel-gpus
|
||||
extraPackages = with pkgs; [
|
||||
vpl-gpu-rt
|
||||
intel-media-driver # VA-API (iHD) userspace
|
||||
intel-vaapi-driver
|
||||
# vpl-gpu-rt # oneVPL (QSV) runtime
|
||||
intel-compute-runtime # OpenCL (NEO) + Level Zero for Arc/Xe
|
||||
];
|
||||
};
|
||||
};
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
PasswordAuthentication = true;
|
||||
PermitRootLogin = "prohibit-password";
|
||||
};
|
||||
};
|
||||
users.users.root.openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBaa6Z5qtBSLEz+A4fQGYPfkOISsRQlmKkVbcx2zxML7"
|
||||
];
|
||||
|
||||
# Select internationalisation properties.
|
||||
# i18n.defaultLocale = "en_US.UTF-8";
|
||||
# console = {
|
||||
# font = "Lat2-Terminus16";
|
||||
# keyMap = "us";
|
||||
# useXkbConfig = true; # use xkb.options in tty.
|
||||
# };
|
||||
|
||||
# Enable the X11 windowing system.
|
||||
services.xserver.enable = true;
|
||||
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
pulse.enable = true;
|
||||
};
|
||||
|
||||
services.libinput.enable = true;
|
||||
|
||||
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
|
||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||
# users.users.doloro = {
|
||||
# isNormalUser = true;
|
||||
# shell = pkgs.fish;
|
||||
# extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
|
||||
# packages = with pkgs; [
|
||||
# tree
|
||||
# ];
|
||||
# hashedPasswordFile = config.sops.secrets."doloro-hashed_password".path;
|
||||
# openssh.authorizedKeys.keys = [
|
||||
# "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBaa6Z5qtBSLEz+A4fQGYPfkOISsRQlmKkVbcx2zxML7" # pc public key
|
||||
# ];
|
||||
# # initialPassword = "sex";
|
||||
# };
|
||||
users.users.root = {
|
||||
password = "meowmeowmeow";
|
||||
};
|
||||
users.mutableUsers = false;
|
||||
services.system76-scheduler.enable = false;
|
||||
|
||||
powerManagement = {
|
||||
enable = true;
|
||||
# powertop.enable = true;
|
||||
};
|
||||
|
||||
boot.kernelParams = [
|
||||
# "mem_sleep_default=deep"
|
||||
"i915.fastboot=1"
|
||||
"ahci.mobile_lpm_policy=1"
|
||||
"intel_idle.max_cstate=11"
|
||||
"i915.modeset=1"
|
||||
"quiet"
|
||||
"splash"
|
||||
# "idle=halt"
|
||||
];
|
||||
|
||||
services.logind.settings.Login = {
|
||||
HandleLidSwitch = "hibernate";
|
||||
HandleLidSwitchExternalPower = "suspend";
|
||||
HandleLidSwitchDocked = "ignore";
|
||||
};
|
||||
# systemd.sleep.extraConfig = ''
|
||||
# HibernateDelaySec=30min
|
||||
# SuspendEstimationSec=120
|
||||
# '';
|
||||
|
||||
# programs.firefox.enable = true;
|
||||
|
||||
# List packages installed in system profile.
|
||||
# You can use https://search.nixos.org/ to find more packages (and options).
|
||||
# environment.systemPackages = with pkgs; [
|
||||
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||
# git
|
||||
# wget
|
||||
# # tlp-pd
|
||||
# brightnessctl
|
||||
# nvtopPackages.intel
|
||||
# seahorse
|
||||
# ];
|
||||
|
||||
# Some programs need SUID wrappers, can be configured further or are
|
||||
# started in user sessions.
|
||||
# programs.mtr.enable = true;
|
||||
# programs.gnupg.agent = {
|
||||
# enable = true;
|
||||
# enableSSHSupport = true;
|
||||
# };
|
||||
|
||||
# List services that you want to enable:
|
||||
|
||||
# Open ports in the firewall.
|
||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||
# Or disable the firewall altogether.
|
||||
# networking.firewall.enable = false;
|
||||
|
||||
# Copy the NixOS configuration file and link it from the resulting system
|
||||
# (/run/current-system/configuration.nix). This is useful in case you
|
||||
# accidentally delete configuration.nix.
|
||||
|
||||
# This option defines the first version of NixOS you have installed on this particular machine,
|
||||
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
|
||||
#
|
||||
# Most users should NEVER change this value after the initial install, for any reason,
|
||||
# even if you've upgraded your system to a new NixOS release.
|
||||
#
|
||||
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
|
||||
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
|
||||
# to actually do that.
|
||||
#
|
||||
# This value being lower than the current NixOS release does NOT mean your system is
|
||||
# out of date, out of support, or vulnerable.
|
||||
#
|
||||
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
|
||||
# and migrated your data accordingly.
|
||||
#
|
||||
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
|
||||
system.stateVersion = "25.11"; # Did you read the comment?
|
||||
};
|
||||
};
|
||||
}
|
||||
36
config/hosts/aspects/doloro-shared.nix
Normal file
36
config/hosts/aspects/doloro-shared.nix
Normal file
@@ -0,0 +1,36 @@
|
||||
{
|
||||
den,
|
||||
modules,
|
||||
__findFile,
|
||||
...
|
||||
}:
|
||||
{
|
||||
den.aspects.doloro-shared = {
|
||||
includes = [
|
||||
modules.nixvim
|
||||
modules.nix
|
||||
modules.tmux
|
||||
<modules/git/doloro>
|
||||
modules.hyfetch
|
||||
modules.ssh
|
||||
];
|
||||
homeManager =
|
||||
{ pkgs, lib, ... }:
|
||||
{
|
||||
home = {
|
||||
username = "doloro";
|
||||
homeDirectory = "/home/doloro";
|
||||
packages = with pkgs; [
|
||||
wl-clipboard
|
||||
# home-manager
|
||||
btop
|
||||
];
|
||||
};
|
||||
programs.home-manager.enable = true;
|
||||
};
|
||||
nixos =
|
||||
{ lib, ... }:
|
||||
{
|
||||
};
|
||||
};
|
||||
}
|
||||
36
config/hosts/aspects/servers/rpi5.nix
Normal file
36
config/hosts/aspects/servers/rpi5.nix
Normal file
@@ -0,0 +1,36 @@
|
||||
{
|
||||
den,
|
||||
__findFile,
|
||||
modules,
|
||||
...
|
||||
}:
|
||||
{
|
||||
den.aspects.rpi5 = {
|
||||
includes = [
|
||||
<modules/raspberry-pi/5>
|
||||
# <modules/services/traefik>
|
||||
<modules/services/caddy>
|
||||
<modules/services/home-assistant>
|
||||
<modules/services/ddns>
|
||||
];
|
||||
nixos = {
|
||||
networking.hostName = "nixos-001-rp5";
|
||||
|
||||
networking.firewall = {
|
||||
enable = true;
|
||||
allowedTCPPorts = [
|
||||
80
|
||||
443
|
||||
8080
|
||||
];
|
||||
allowedUDPPortRanges = [ ];
|
||||
};
|
||||
|
||||
virtualisation.docker.enable = true;
|
||||
virtualisation.oci-containers.backend = "docker";
|
||||
|
||||
services.openssh.enable = true;
|
||||
nixpkgs.hostPlatform = "aarch64-linux";
|
||||
};
|
||||
};
|
||||
}
|
||||
39
config/hosts/computers.nix
Normal file
39
config/hosts/computers.nix
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
den,
|
||||
__findFile,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
# Homes
|
||||
den.homes.x86_64-linux.doloro-desktop = {
|
||||
userName = "doloro";
|
||||
};
|
||||
# TODO
|
||||
den.homes.x86_64-linux.doloro-laptop = {
|
||||
userName = "doloro";
|
||||
};
|
||||
# Machines
|
||||
den.hosts.x86_64-linux.desktop = {
|
||||
users.doloro = {
|
||||
aspect = "doloro-desktop";
|
||||
home-manager.enable = true;
|
||||
};
|
||||
};
|
||||
# TODO
|
||||
den.hosts.x86_64-linux.laptop = {
|
||||
users.doloro = {
|
||||
aspect = "doloro-laptop";
|
||||
home-manager.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
den.schema.user.classes = lib.mkDefault [ "homeManager" ];
|
||||
|
||||
# Fixes 'The option `flake.homeConfigurations' is defined multiple times while it's expected to be unique.'
|
||||
flake.options.homeConfigurations = lib.mkOption {
|
||||
type = lib.types.attrs;
|
||||
description = "Home Manager configurations for users.";
|
||||
};
|
||||
|
||||
}
|
||||
40
config/hosts/servers.nix
Normal file
40
config/hosts/servers.nix
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
den,
|
||||
__findFile,
|
||||
modules,
|
||||
...
|
||||
}:
|
||||
{
|
||||
# The single rpi5 i have running on the side of my desk
|
||||
den.aspects = {
|
||||
doloro-server = {
|
||||
includes = [
|
||||
<modules/publicKeys/doloro>
|
||||
];
|
||||
nixos = {
|
||||
users.users.doloro = {
|
||||
isNormalUser = true;
|
||||
extraGroups = [
|
||||
"wheel"
|
||||
"networkmanager"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
root-server = {
|
||||
includes = [
|
||||
<modules/publicKeys/doloro>
|
||||
];
|
||||
};
|
||||
};
|
||||
den.hosts.aarch64-linux.rpi5 = {
|
||||
includes = [ ];
|
||||
users.doloro = {
|
||||
aspect = "doloro-server";
|
||||
};
|
||||
users.root = {
|
||||
aspect = "root-server";
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
10
config/inputs.nix
Normal file
10
config/inputs.nix
Normal file
@@ -0,0 +1,10 @@
|
||||
{ ... }:
|
||||
{
|
||||
flake-file.inputs = {
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
den.url = "github:vic/den";
|
||||
};
|
||||
}
|
||||
12
config/modules/cachyos-kernel.nix
Normal file
12
config/modules/cachyos-kernel.nix
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
modules,
|
||||
den,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
flake-file.inputs = {
|
||||
nix-cachyos-kernel.url = "github:xddxdd/nix-cachyos-kernel/release";
|
||||
};
|
||||
# inputs.nix-cachyos-kernel.legacyPackages.x86_64-linux.linuxPackages-cachyos-lts-lto;
|
||||
}
|
||||
14
config/modules/disko.nix
Normal file
14
config/modules/disko.nix
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
flake-file.inputs.disko.url = "github:nix-community/disko";
|
||||
modules.disko = {
|
||||
nixos =
|
||||
{ ... }:
|
||||
{
|
||||
imports = [ inputs.disko.nixosModules.disko ];
|
||||
};
|
||||
};
|
||||
}
|
||||
15
config/modules/dunst.nix
Normal file
15
config/modules/dunst.nix
Normal file
@@ -0,0 +1,15 @@
|
||||
{ modules, ... }:
|
||||
{
|
||||
modules.dunst = {
|
||||
homeManager = {
|
||||
services.dunst = {
|
||||
enable = true;
|
||||
settings = {
|
||||
global = {
|
||||
font = "Noto Nerd Font 8";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
50
config/modules/fish.nix
Normal file
50
config/modules/fish.nix
Normal file
@@ -0,0 +1,50 @@
|
||||
{ modules, ... }:
|
||||
{
|
||||
modules.fish = {
|
||||
nixos = {
|
||||
programs.fish.enable = true;
|
||||
};
|
||||
homeManager =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.shell.enableFishIntegration = true;
|
||||
home.packages = [ pkgs.nix-output-monitor ];
|
||||
programs = {
|
||||
fish = {
|
||||
enable = true;
|
||||
shellInit = ''
|
||||
set -g theme_nerd_fonts yes
|
||||
set -g theme_color_scheme nord
|
||||
set -g theme_display_user yes
|
||||
set -g fish_color_autosuggestion 6F6578
|
||||
alias nik 'nix'
|
||||
'';
|
||||
# alias nos 'sudo echo; sudo nixos-rebuild switch --flake .#${aspect-name} --log-format internal-json -v &| nom --json'
|
||||
# alias hms 'home-manager switch --flake .#${aspect-name} --log-format internal-json -v &| nom --json'
|
||||
plugins = [
|
||||
{
|
||||
name = "bobthefish";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "oh-my-fish";
|
||||
repo = "theme-bobthefish";
|
||||
rev = "e3b4d4eafc23516e35f162686f08a42edf844e40";
|
||||
sha256 = "sha256-cXOYvdn74H4rkMWSC7G6bT4wa9d3/3vRnKed2ixRnuA=";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
eza = {
|
||||
enable = true;
|
||||
enableFishIntegration = true;
|
||||
icons = "auto";
|
||||
git = true;
|
||||
extraOptions = [ ];
|
||||
};
|
||||
direnv = {
|
||||
enable = true;
|
||||
nix-direnv.enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
38
config/modules/fonts.nix
Normal file
38
config/modules/fonts.nix
Normal file
@@ -0,0 +1,38 @@
|
||||
{
|
||||
den,
|
||||
modules,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
flake-file.inputs = {
|
||||
font-patcher.url = "github:Doloro1978/nix-nerd-fonts-patcher";
|
||||
};
|
||||
modules.fonts = {
|
||||
nixos =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
config.fonts = {
|
||||
enableDefaultPackages = true;
|
||||
packages =
|
||||
with pkgs;
|
||||
[
|
||||
material-design-icons
|
||||
material-symbols
|
||||
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;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
8
config/modules/gaming/common.nix
Normal file
8
config/modules/gaming/common.nix
Normal file
@@ -0,0 +1,8 @@
|
||||
{ den, modules, ... }:
|
||||
{
|
||||
modules.common.provides = {
|
||||
gaming = {
|
||||
includes = [ modules.steam ];
|
||||
};
|
||||
};
|
||||
}
|
||||
41
config/modules/gaming/steam.nix
Normal file
41
config/modules/gaming/steam.nix
Normal file
@@ -0,0 +1,41 @@
|
||||
{ den, modules, ... }:
|
||||
{
|
||||
modules.steam = {
|
||||
nixos =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
programs.steam = {
|
||||
enable = true;
|
||||
remotePlay.openFirewall = true;
|
||||
dedicatedServer.openFirewall = true;
|
||||
localNetworkGameTransfers.openFirewall = true;
|
||||
# Ensure gamescope is inside the steam "fhs"
|
||||
package = pkgs.steam.override {
|
||||
extraLibraries = pkgs: [ pkgs.xorg.libxcb ];
|
||||
extraPkgs =
|
||||
pkgs: with pkgs; [
|
||||
attr
|
||||
xorg.libXcursor
|
||||
xorg.libXi
|
||||
xorg.libXinerama
|
||||
xorg.libXScrnSaver
|
||||
libpng
|
||||
libpulseaudio
|
||||
libvorbis
|
||||
stdenv.cc.cc.lib
|
||||
libkrb5
|
||||
keyutils
|
||||
mangohud
|
||||
gamemode
|
||||
lsof
|
||||
(gamescope.overrideAttrs {
|
||||
enableWsi = true;
|
||||
# Fixes some games being blurry under wayland backend
|
||||
NIX_CFLAGS_COMPILE = [ "-fno-fast-math" ];
|
||||
})
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
45
config/modules/git.nix
Normal file
45
config/modules/git.nix
Normal file
@@ -0,0 +1,45 @@
|
||||
{ den, modules, ... }:
|
||||
{
|
||||
modules.git = {
|
||||
provides = {
|
||||
doloro = {
|
||||
homeManager =
|
||||
{ home, pkgs, ... }:
|
||||
{
|
||||
programs.git = {
|
||||
enable = true;
|
||||
settings = {
|
||||
user = {
|
||||
name = "Doloro1978";
|
||||
email = "doloroo@proton.me";
|
||||
signingKey = "089B373588540877";
|
||||
};
|
||||
commit = {
|
||||
gpgSign = true;
|
||||
};
|
||||
pull = {
|
||||
rebase = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
programs.gpg = {
|
||||
enable = true;
|
||||
};
|
||||
services = {
|
||||
gpg-agent = {
|
||||
enable = true;
|
||||
pinentry = {
|
||||
package = pkgs.pinentry-qt;
|
||||
program = "pinentry-qt";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
nixos =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
34
config/modules/helium.nix
Normal file
34
config/modules/helium.nix
Normal file
@@ -0,0 +1,34 @@
|
||||
{
|
||||
den,
|
||||
modules,
|
||||
inputs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
flake-file.inputs = {
|
||||
heliumFlake = {
|
||||
url = "github:vikingnope/helium-browser-nix-flake";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
modules.helium = settings: {
|
||||
homeManager =
|
||||
{ pkgs, home, ... }:
|
||||
{
|
||||
home.packages = [
|
||||
inputs.heliumFlake.packages.x86_64-linux.helium
|
||||
];
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
# Gives me widevine support. yay
|
||||
xdg.configFile."net.imput.helium/WidevineCdm/latest-component-updated-widevine-cdm" = {
|
||||
text = ''{"Path":"${pkgs.widevine-cdm}/share/google/chrome/WidevineCdm"}'';
|
||||
};
|
||||
wayland.windowManager.hyprland.settings = lib.mkIf settings.default {
|
||||
binds = [
|
||||
"$mainMod, E, exec, helium"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
32
config/modules/hyfetch.nix
Normal file
32
config/modules/hyfetch.nix
Normal file
@@ -0,0 +1,32 @@
|
||||
{ den, modules, ... }:
|
||||
{
|
||||
modules.hyfetch = {
|
||||
homeManager =
|
||||
{ home, pkgs, ... }:
|
||||
{
|
||||
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;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
196
config/modules/hyprland/doloro-settings.nix
Normal file
196
config/modules/hyprland/doloro-settings.nix
Normal file
@@ -0,0 +1,196 @@
|
||||
{ modules, ... }:
|
||||
{
|
||||
modules.hyprland = {
|
||||
provides = {
|
||||
doloro-settings = {
|
||||
includes = [
|
||||
modules.dunst
|
||||
];
|
||||
homeManager =
|
||||
{ pkgs, home, ... }:
|
||||
{
|
||||
home.packages = [
|
||||
pkgs.hyprcursor
|
||||
pkgs.wlogout
|
||||
pkgs.tofi
|
||||
pkgs.killall
|
||||
];
|
||||
home.pointerCursor = {
|
||||
enable = true;
|
||||
name = "rose-pine-hyprcursor";
|
||||
package = pkgs.rose-pine-hyprcursor;
|
||||
hyprcursor.enable = true;
|
||||
};
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
env = [
|
||||
"XCURSOR_THEME,BreezeX-RosePine-Linux"
|
||||
"XCURSOR_SIZE,24"
|
||||
"HYPRCURSOR_SIZE,24"
|
||||
"LIBVA_DRIVER_NAME,nvidia"
|
||||
"__GLX_VENDOR_LIBRARY_NAME,nvidia"
|
||||
"WEBKIT_DISABLE_DMABUF_RENDERER,1" # maybe disable if nixos fixes alcom
|
||||
];
|
||||
general = {
|
||||
gaps_in = 1;
|
||||
gaps_out = 1;
|
||||
border_size = 1;
|
||||
# "col.active_border" =
|
||||
# "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;
|
||||
allow_tearing = true;
|
||||
layout = "dwindle";
|
||||
};
|
||||
decoration = {
|
||||
rounding = 4;
|
||||
rounding_power = 1;
|
||||
active_opacity = 1.0;
|
||||
inactive_opacity = 1.0;
|
||||
|
||||
shadow = {
|
||||
enabled = false;
|
||||
};
|
||||
|
||||
blur = {
|
||||
enabled = true;
|
||||
passes = 1;
|
||||
new_optimizations = true;
|
||||
ignore_opacity = false;
|
||||
};
|
||||
};
|
||||
cursor = {
|
||||
no_hardware_cursors = true;
|
||||
};
|
||||
animations = {
|
||||
enabled = true;
|
||||
bezier = [
|
||||
"easeOutQuint,0.23,1,0.32,1"
|
||||
"easeInOutCubic,0.65,0.05,0.36,1"
|
||||
"linear,0,0,1,1"
|
||||
"almostLinear,0.5,0.5,0.75,1.0"
|
||||
"quick,0.15,0,0.1,1"
|
||||
];
|
||||
animation = [
|
||||
"global, 1, 10, default"
|
||||
"border, 1, 5.39, easeOutQuint"
|
||||
"windows, 1, 2.79, easeOutQuint"
|
||||
"windowsIn, 1, 1, easeOutQuint, popin 87%"
|
||||
"windowsOut, 1, 1, linear, popin 87%"
|
||||
"windowsMove, 1, 1, easeInOutCubic"
|
||||
"fadeIn, 1, 0.5, almostLinear"
|
||||
"fadeOut, 1, 0.5, almostLinear"
|
||||
"fade, 1, 1, quick"
|
||||
"layers, 1, 3.81, easeOutQuint"
|
||||
"layersIn, 1, 4, easeOutQuint, fade"
|
||||
"layersOut, 1, 1.5, linear, fade"
|
||||
"fadeLayersIn, 1, 1.79, almostLinear"
|
||||
"fadeLayersOut, 1, 1.39, almostLinear"
|
||||
"workspaces, 1, 1, almostLinear, slide"
|
||||
"workspacesIn, 1, 1, easeInOutCubic, slide"
|
||||
"workspacesOut, 1, 1, easeInOutCubic, slide"
|
||||
"zoomFactor, 1, 7, quick"
|
||||
];
|
||||
};
|
||||
dwindle = {
|
||||
pseudotile = true;
|
||||
preserve_split = true;
|
||||
};
|
||||
# master = {
|
||||
# new_status = master;
|
||||
# };
|
||||
misc = {
|
||||
force_default_wallpaper = -1;
|
||||
disable_hyprland_logo = false;
|
||||
enable_anr_dialog = false;
|
||||
vfr = true;
|
||||
};
|
||||
"$mainMod" = "SUPER";
|
||||
bind = [
|
||||
(
|
||||
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
|
||||
"$mainMod, R, exec, ${script}"
|
||||
)
|
||||
"$mainMod, C, killactive"
|
||||
"$mainMod, M, exec, uwsm stop"
|
||||
"$mainMod, Q, exec, kitty"
|
||||
"$mainMod, V, togglefloating,"
|
||||
"$mainMod, P, pseudo, # dwindle"
|
||||
"$mainMod, J, togglesplit, # dwindle"
|
||||
"$mainMod, left, movefocus, l"
|
||||
"$mainMod, right, movefocus, r"
|
||||
"$mainMod, up, movefocus, u"
|
||||
"$mainMod, down, movefocus, d"
|
||||
"$mainMod, L, exec, wlogout"
|
||||
(
|
||||
"$mainMod, S, exec, "
|
||||
+ ''wayfreeze --after-freeze-cmd 'grim -g "$(slurp -d)" - | wl-copy -t image/png;killall wayfreeze' --hide-cursor''
|
||||
)
|
||||
"$mainMod, F, fullscreen"
|
||||
"$mainMod, mouse_down, workspace, e+1"
|
||||
"$mainMod, mouse_up, workspace, e-1"
|
||||
", home, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
||||
", end, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
|
||||
", F8, pass, class:^(com\.obsproject\.Studio)$"
|
||||
"$mainMod, 0, workspace, 10"
|
||||
"$mainMod SHIFT, 0, movetoworkspace, 10"
|
||||
]
|
||||
++ (builtins.concatLists (
|
||||
builtins.genList (
|
||||
i:
|
||||
let
|
||||
ws = i + 1;
|
||||
in
|
||||
[
|
||||
"$mainMod, ${toString ws}, workspace, ${toString ws}"
|
||||
"$mainMod SHIFT, ${toString ws}, movetoworkspace, ${toString ws}"
|
||||
]
|
||||
) 9
|
||||
));
|
||||
bindm = [
|
||||
"$mainMod, mouse:272, movewindow"
|
||||
"$mainMod, mouse:273, resizewindow"
|
||||
];
|
||||
windowrule = [
|
||||
"match:class .*, suppress_event maximize"
|
||||
"match:class ^(gamescope)$, workspace 5"
|
||||
"match:class ^(gamescope)$, immediate true"
|
||||
"match:class ^(steam)$, workspace 6 silent"
|
||||
"match:class ^(vesktop)$, workspace 8 silent"
|
||||
"match:class ^(org.telegram.desktop)$, workspace 8 silent"
|
||||
"match:class ^(com.obsproject.Studio)$, workspace 10 silent"
|
||||
"match:initial_title ^(OBS Studio Crash Detected)$, pin true"
|
||||
"match:initial_title ^(Discord Popout)$, workspace 1 silent"
|
||||
];
|
||||
layerrule = [
|
||||
"match:namespace ^(notifications)$, no_screen_share true"
|
||||
# "match:namespace ^(quickshell)$, blur true"
|
||||
];
|
||||
# exec-once = [
|
||||
# ];
|
||||
# we need to auto launch: quickshell, steam, ar_rpc (maybe), vesktop, telegram, qbit, and obs
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
62
config/modules/hyprland/hyprland.nix
Normal file
62
config/modules/hyprland/hyprland.nix
Normal file
@@ -0,0 +1,62 @@
|
||||
{
|
||||
modules,
|
||||
inputs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
flake-file.inputs = {
|
||||
hyprland.url = "github:hyprwm/Hyprland";
|
||||
};
|
||||
modules.hyprland = {
|
||||
nixos =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [ inputs.hyprland.nixosModules.default ];
|
||||
environment.systemPackages = with pkgs; [
|
||||
wayfreeze
|
||||
grim
|
||||
slurp
|
||||
wlogout
|
||||
ranger
|
||||
];
|
||||
programs.xwayland.enable = true;
|
||||
programs.hyprland = {
|
||||
enable = true;
|
||||
# withUWSM = true;
|
||||
# set the flake package
|
||||
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
||||
# make sure to also set the portal package, so that they are in sync
|
||||
portalPackage =
|
||||
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
|
||||
};
|
||||
# gtk.enable = lib.mkForce false;
|
||||
xdg.portal = {
|
||||
enable = lib.mkForce false;
|
||||
extraPortals = [
|
||||
pkgs.xdg-desktop-portal-termfilechooser
|
||||
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland
|
||||
];
|
||||
};
|
||||
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||
hardware.graphics = {
|
||||
# package = pkgs-unstable.mesa;
|
||||
|
||||
# if you also want 32-bit support (e.g for Steam)
|
||||
# enable32Bit = true;
|
||||
# package32 = pkgs-unstable.pkgsi686Linux.mesa;
|
||||
};
|
||||
};
|
||||
homeManager =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
gtk = {
|
||||
enable = true;
|
||||
};
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
systemd.variables = [ "--all" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
19
config/modules/kitty.nix
Normal file
19
config/modules/kitty.nix
Normal file
@@ -0,0 +1,19 @@
|
||||
{ den, modules, ... }:
|
||||
{
|
||||
modules.kitty = {
|
||||
homeManager = {
|
||||
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;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
152
config/modules/niri/niri.nix
Normal file
152
config/modules/niri/niri.nix
Normal file
@@ -0,0 +1,152 @@
|
||||
{
|
||||
modules,
|
||||
inputs,
|
||||
lib,
|
||||
den,
|
||||
...
|
||||
}:
|
||||
{
|
||||
flake-file.inputs = {
|
||||
niri-flake = {
|
||||
url = "github:sodiboo/niri-flake";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
modules.niri = {
|
||||
nixos =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [ inputs.niri-flake.nixosModules.niri ];
|
||||
programs.niri.enable = true;
|
||||
programs.niri.package = pkgs.niri-unstable;
|
||||
nixpkgs.overlays = [ inputs.niri-flake.overlays.niri ];
|
||||
};
|
||||
homeManager =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
# The nixos module already imports the hm module
|
||||
# imports = [ inputs.niri-flake.homeModules.niri ];
|
||||
gtk.enable = lib.mkForce false;
|
||||
programs = {
|
||||
niri = {
|
||||
# enable = true;
|
||||
# package = pkgs.niri-unstable;
|
||||
settings = {
|
||||
input = {
|
||||
keyboard = {
|
||||
xkb = {
|
||||
layout = "gb";
|
||||
};
|
||||
numlock = true;
|
||||
};
|
||||
};
|
||||
cursor = {
|
||||
size = 16;
|
||||
};
|
||||
outputs = {
|
||||
DP-3 = {
|
||||
# Philips Consumer Electronics Company PHL 272E1GZ UK02101011104
|
||||
mode = {
|
||||
width = 1920;
|
||||
height = 1080;
|
||||
refresh = 144.0;
|
||||
};
|
||||
focus-at-startup = true;
|
||||
variable-refresh-rate = false;
|
||||
};
|
||||
HDMI-A-1 = {
|
||||
position = {
|
||||
x = -1920;
|
||||
y = 0;
|
||||
};
|
||||
scale = 1;
|
||||
};
|
||||
};
|
||||
binds = {
|
||||
# Navigation
|
||||
"Mod+Shift+WheelScrollDown" = {
|
||||
hotkey-overlay.title = "Workspace Down";
|
||||
cooldown-ms = 150;
|
||||
action.focus-workspace-down = [ ];
|
||||
};
|
||||
"Mod+Shift+WheelScrollUp" = {
|
||||
hotkey-overlay.title = "Workspace Up";
|
||||
cooldown-ms = 150;
|
||||
action.focus-workspace-up = [ ];
|
||||
};
|
||||
"Mod+WheelScrollUp" = {
|
||||
hotkey-overlay.title = "Workspace Left";
|
||||
action.focus-column-right = [ ];
|
||||
};
|
||||
"Mod+WheelScrollDown" = {
|
||||
hotkey-overlay.title = "Workspace Right";
|
||||
action.focus-column-left = [ ];
|
||||
};
|
||||
"Super+Tab" = {
|
||||
hotkey-overlay.title = "Overview";
|
||||
action.toggle-overview = [ ];
|
||||
};
|
||||
# --
|
||||
# Utility
|
||||
"Super+S" = {
|
||||
action.screenshot = [ ];
|
||||
};
|
||||
"Super+C" = {
|
||||
action.close-window = [ ];
|
||||
};
|
||||
"Super+L" = {
|
||||
action.spawn = "wlogout";
|
||||
};
|
||||
# Program Spawning
|
||||
"Mod+E".action.spawn = "helium";
|
||||
|
||||
"Mod+R".action.spawn =
|
||||
let
|
||||
config = pkgs.writeTextFile {
|
||||
name = "config";
|
||||
text = ''
|
||||
width = 100%
|
||||
height = 100%
|
||||
border-width = 0
|
||||
outline-width = 0
|
||||
padding-left = 35%
|
||||
padding-top = 35%
|
||||
result-spacing = 25
|
||||
num-results = 5
|
||||
font = monospace
|
||||
background-color = #000A
|
||||
'';
|
||||
};
|
||||
script = pkgs.writeShellScript "mreow" ''
|
||||
exec $(tofi-drun -c ${config})
|
||||
'';
|
||||
in
|
||||
"${script}";
|
||||
|
||||
"Mod+Q".action.spawn = "kitty";
|
||||
# --
|
||||
};
|
||||
window-rules = [
|
||||
{
|
||||
matches = [ ];
|
||||
geometry-corner-radius = {
|
||||
bottom-left = 3.0;
|
||||
bottom-right = 3.0;
|
||||
top-left = 3.0;
|
||||
top-right = 3.0;
|
||||
};
|
||||
clip-to-geometry = true;
|
||||
draw-border-with-background = false;
|
||||
focus-ring.width = 2;
|
||||
}
|
||||
];
|
||||
xwayland-satellite = {
|
||||
enable = true;
|
||||
path = lib.getExe pkgs.xwayland-satellite;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
156
config/modules/nix-ld.nix
Normal file
156
config/modules/nix-ld.nix
Normal file
@@ -0,0 +1,156 @@
|
||||
{ den, modules, ... }:
|
||||
{
|
||||
modules.nix-ld = {
|
||||
nixos =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
programs.nix-ld = {
|
||||
enable = true;
|
||||
libraries = with pkgs; [
|
||||
# List by default
|
||||
zlib
|
||||
zstd
|
||||
stdenv.cc.cc
|
||||
curl
|
||||
openssl
|
||||
attr
|
||||
libssh
|
||||
bzip2
|
||||
libxml2
|
||||
acl
|
||||
libsodium
|
||||
util-linux
|
||||
xz
|
||||
systemd
|
||||
|
||||
# My own additions
|
||||
xorg.libXcomposite
|
||||
xorg.libXtst
|
||||
xorg.libXrandr
|
||||
xorg.libXext
|
||||
xorg.libX11
|
||||
xorg.libXfixes
|
||||
libGL
|
||||
libva
|
||||
pipewire
|
||||
xorg.libxcb
|
||||
xorg.libXdamage
|
||||
xorg.libxshmfence
|
||||
xorg.libXxf86vm
|
||||
libelf
|
||||
|
||||
# Required
|
||||
glib
|
||||
gtk2
|
||||
|
||||
# Inspired by steam
|
||||
# https://github.com/NixOS/nixpkgs/blob/master/pkgs/by-name/st/steam/package.nix#L36-L85
|
||||
networkmanager
|
||||
vulkan-loader
|
||||
libgbm
|
||||
libdrm
|
||||
libxcrypt
|
||||
coreutils
|
||||
pciutils
|
||||
zenity
|
||||
# glibc_multi.bin # Seems to cause issue in ARM
|
||||
|
||||
# # Without these it silently fails
|
||||
xorg.libXinerama
|
||||
xorg.libXcursor
|
||||
xorg.libXrender
|
||||
xorg.libXScrnSaver
|
||||
xorg.libXi
|
||||
xorg.libSM
|
||||
xorg.libICE
|
||||
gnome2.GConf
|
||||
nspr
|
||||
nss
|
||||
cups
|
||||
libcap
|
||||
SDL2
|
||||
libusb1
|
||||
dbus-glib
|
||||
ffmpeg
|
||||
# Only libraries are needed from those two
|
||||
libudev0-shim
|
||||
|
||||
# needed to run unity
|
||||
gtk3
|
||||
icu
|
||||
libnotify
|
||||
gsettings-desktop-schemas
|
||||
# https://github.com/NixOS/nixpkgs/issues/72282
|
||||
# https://github.com/NixOS/nixpkgs/blob/2e87260fafdd3d18aa1719246fd704b35e55b0f2/pkgs/applications/misc/joplin-desktop/default.nix#L16
|
||||
# log in /home/leo/.config/unity3d/Editor.log
|
||||
# it will segfault when opening files if you don’t do:
|
||||
# export XDG_DATA_DIRS=/nix/store/0nfsywbk0qml4faa7sk3sdfmbd85b7ra-gsettings-desktop-schemas-43.0/share/gsettings-schemas/gsettings-desktop-schemas-43.0:/nix/store/rkscn1raa3x850zq7jp9q3j5ghcf6zi2-gtk+3-3.24.35/share/gsettings-schemas/gtk+3-3.24.35/:$XDG_DATA_DIRS
|
||||
# other issue: (Unity:377230): GLib-GIO-CRITICAL **: 21:09:04.706: g_dbus_proxy_call_sync_internal: assertion 'G_IS_DBUS_PROXY (proxy)' failed
|
||||
|
||||
# Verified games requirements
|
||||
xorg.libXt
|
||||
xorg.libXmu
|
||||
libogg
|
||||
libvorbis
|
||||
SDL
|
||||
SDL2_image
|
||||
glew110
|
||||
libidn
|
||||
tbb
|
||||
|
||||
# Other things from runtime
|
||||
flac
|
||||
freeglut
|
||||
libjpeg
|
||||
libpng
|
||||
libpng12
|
||||
libsamplerate
|
||||
libmikmod
|
||||
libtheora
|
||||
libtiff
|
||||
pixman
|
||||
speex
|
||||
SDL_image
|
||||
SDL_ttf
|
||||
SDL_mixer
|
||||
SDL2_ttf
|
||||
SDL2_mixer
|
||||
libappindicator-gtk2
|
||||
libdbusmenu-gtk2
|
||||
libindicator-gtk2
|
||||
libcaca
|
||||
libcanberra
|
||||
libgcrypt
|
||||
libvpx
|
||||
librsvg
|
||||
xorg.libXft
|
||||
libvdpau
|
||||
# ...
|
||||
# Some more libraries that I needed to run programs
|
||||
pango
|
||||
cairo
|
||||
atk
|
||||
gdk-pixbuf
|
||||
fontconfig
|
||||
freetype
|
||||
dbus
|
||||
alsa-lib
|
||||
expat
|
||||
# for blender
|
||||
libxkbcommon
|
||||
|
||||
libxcrypt-legacy # For natron
|
||||
libGLU # For natron
|
||||
|
||||
fribidi
|
||||
harfbuzz
|
||||
libgpg-error
|
||||
|
||||
# Appimages need fuse, e.g. https://musescore.org/fr/download/musescore-x86_64.AppImage
|
||||
fuse
|
||||
e2fsprogs
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
36
config/modules/nix.nix
Normal file
36
config/modules/nix.nix
Normal file
@@ -0,0 +1,36 @@
|
||||
{ ... }:
|
||||
{
|
||||
modules.nix = {
|
||||
nixos =
|
||||
{ ... }:
|
||||
{
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
nix.settings = {
|
||||
substituters = [
|
||||
"https://hyprland.cachix.org"
|
||||
"https://nix-community.cachix.org"
|
||||
"https://cache.nixos.org/"
|
||||
"https://attic.scug.io/pkgs"
|
||||
"https://cache.nixos-cuda.org"
|
||||
"https://niri.cachix.org"
|
||||
"https://attic.xuyh0120.win/lantian"
|
||||
];
|
||||
trusted-public-keys = [
|
||||
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||
"pkgs:+sRbfiZMMX5R3PuAPtIRz/emowDoGZNpozibrnrAvuc="
|
||||
"cache.nixos-cuda.org:74DUi4Ye579gUqzH4ziL9IyiJBlDpMRn9MBN8oNan9M="
|
||||
"niri.cachix.org-1:Wv0OmO7PsuocRKzfDoJ3mulSl7Z6oezYhGhR+3W2964="
|
||||
"lantian:EeAUQ+W+6r7EtwnmYjeVwx5kOGEBpjlBfPlzGlTNvHc="
|
||||
];
|
||||
experimental-features = [
|
||||
"flakes"
|
||||
"nix-command"
|
||||
];
|
||||
trusted-users = [
|
||||
"doloro"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
280
config/modules/nixvim/default.nix
Normal file
280
config/modules/nixvim/default.nix
Normal file
@@ -0,0 +1,280 @@
|
||||
{
|
||||
den,
|
||||
modules,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
# Its in its own folder for future modulizaion efforts
|
||||
flake-file.inputs = {
|
||||
nixvim = {
|
||||
url = "github:nix-community/nixvim";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
modules = {
|
||||
nixvim = {
|
||||
homeManager =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [
|
||||
inputs.nixvim.homeModules.nixvim
|
||||
];
|
||||
programs.nixvim = {
|
||||
enable = true;
|
||||
defaultEditor = true;
|
||||
colorschemes.gruvbox-material.enable = true;
|
||||
extraPackages = with pkgs; [
|
||||
# formatters
|
||||
nixfmt
|
||||
rustfmt
|
||||
# misc
|
||||
ripgrep
|
||||
# misc
|
||||
nixd
|
||||
tree-sitter
|
||||
];
|
||||
performance.byteCompileLua = {
|
||||
enable = true;
|
||||
plugins = true;
|
||||
nvimRuntime = true;
|
||||
luaLib = true;
|
||||
configs = true;
|
||||
};
|
||||
plugins = {
|
||||
todo-comments.enable = true;
|
||||
lsp-status.enable = true;
|
||||
transparent.enable = true;
|
||||
conform-nvim = {
|
||||
enable = true;
|
||||
settings = {
|
||||
formatters_by_ft = {
|
||||
nix = [ "nixfmt" ];
|
||||
rust = [ "rustfmt" ];
|
||||
"_" = [
|
||||
"squeeze_blanks"
|
||||
"trim_whitespace"
|
||||
"trim_newlines"
|
||||
];
|
||||
};
|
||||
format_on_save = {
|
||||
timeout_ms = 500;
|
||||
lsp_format = "fallback";
|
||||
};
|
||||
};
|
||||
};
|
||||
lsp = {
|
||||
enable = true;
|
||||
servers = {
|
||||
qmlls = {
|
||||
enable = true;
|
||||
config = {
|
||||
cmd = "-E";
|
||||
};
|
||||
};
|
||||
rust_analyzer = {
|
||||
enable = true;
|
||||
installCargo = false;
|
||||
installRustc = false;
|
||||
};
|
||||
nixd = {
|
||||
enable = true;
|
||||
};
|
||||
astro = {
|
||||
enable = true;
|
||||
};
|
||||
ts_ls = {
|
||||
enable = true;
|
||||
};
|
||||
svelte.enable = true;
|
||||
};
|
||||
};
|
||||
lsp-format = {
|
||||
enable = true;
|
||||
# lspServersToEnable = [ "qmlls" ];
|
||||
};
|
||||
notify = {
|
||||
enable = true;
|
||||
settings = {
|
||||
background_color = "#00000000";
|
||||
};
|
||||
};
|
||||
mini-cursorword.enable = true;
|
||||
# mini-statusline.enable = true;
|
||||
lualine = {
|
||||
enable = true;
|
||||
settings = {
|
||||
sections = {
|
||||
lualine_a = [ "mode" ];
|
||||
lualine_b = [
|
||||
"branch"
|
||||
"diff"
|
||||
"diagnostics"
|
||||
];
|
||||
lualine_c = [ "filename" ];
|
||||
lualine_x = [
|
||||
"encoding"
|
||||
"fileformat"
|
||||
"filetype"
|
||||
];
|
||||
lualine_y = [ "lsp_status" ];
|
||||
lualine_z = [ "location" ];
|
||||
};
|
||||
inactive_sections = {
|
||||
lualine_a = [ ];
|
||||
lualine_b = [ ];
|
||||
lualine_c = [ "filename" ];
|
||||
lualine_x = [ "location" ];
|
||||
lualine_y = [ ];
|
||||
lualine_z = [ ];
|
||||
};
|
||||
};
|
||||
};
|
||||
web-devicons.enable = true;
|
||||
vim-dadbod-completion.enable = true;
|
||||
telescope.enable = true;
|
||||
lazygit.enable = true;
|
||||
mini-indentscope = {
|
||||
enable = true;
|
||||
settings = {
|
||||
draw = {
|
||||
delay = 10;
|
||||
};
|
||||
};
|
||||
};
|
||||
mini-files = {
|
||||
enable = true;
|
||||
settings = {
|
||||
windows = {
|
||||
preview = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
trouble.enable = true;
|
||||
cmp = {
|
||||
enable = true;
|
||||
autoEnableSources = true;
|
||||
settings = {
|
||||
sources = [
|
||||
{ name = "nvim_lsp"; }
|
||||
{ name = "path"; }
|
||||
{ name = "buffer"; }
|
||||
];
|
||||
mapping = {
|
||||
"<C-Space>" = "cmp.mapping.complete()";
|
||||
"<C-d>" = "cmp.mapping.scroll_docs(-4)";
|
||||
"<C-e>" = "cmp.mapping.close()";
|
||||
"<C-f>" = "cmp.mapping.scroll_docs(4)";
|
||||
"<CR>" = "cmp.mapping.confirm({ select = true })";
|
||||
"<S-Tab>" = "cmp.mapping(cmp.mapping.select_prev_item(), {'i', 's'})";
|
||||
"<Tab>" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})";
|
||||
};
|
||||
};
|
||||
};
|
||||
lspkind.enable = true;
|
||||
tiny-inline-diagnostic.enable = true;
|
||||
# persisted.enable = true;
|
||||
auto-session = {
|
||||
enable = false;
|
||||
settings = {
|
||||
enabled = true;
|
||||
auto_save = true;
|
||||
auto_restore = true;
|
||||
};
|
||||
};
|
||||
wakatime.enable = true;
|
||||
treesitter = {
|
||||
enable = true;
|
||||
grammarPackages = with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [
|
||||
bash
|
||||
json
|
||||
lua
|
||||
make
|
||||
markdown
|
||||
rust
|
||||
nix
|
||||
regex
|
||||
toml
|
||||
vim
|
||||
vimdoc
|
||||
xml
|
||||
yaml
|
||||
];
|
||||
settings = {
|
||||
highlight.enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
extraPlugins = with pkgs; [
|
||||
# vimPlugins.mini-completion
|
||||
vimPlugins.mini-comment
|
||||
vimPlugins.melange-nvim
|
||||
vimPlugins.telescope-file-browser-nvim
|
||||
vimPlugins.lsp-progress-nvim
|
||||
];
|
||||
opts = {
|
||||
number = true;
|
||||
bg = "dark";
|
||||
tabstop = 2;
|
||||
shiftwidth = 2;
|
||||
termguicolors = true;
|
||||
};
|
||||
globals = {
|
||||
mapleader = " ";
|
||||
};
|
||||
keymaps = [
|
||||
{
|
||||
action = "<cmd>Telescope persisted<cr>";
|
||||
key = "<leader>fs";
|
||||
options = {
|
||||
silent = true;
|
||||
};
|
||||
}
|
||||
{
|
||||
action = "<cmd>Telescope find_files<cr>";
|
||||
key = "<leader>ff";
|
||||
options = {
|
||||
silent = true;
|
||||
};
|
||||
}
|
||||
{
|
||||
action = "<cmd>:lua MiniFiles.open()<cr>";
|
||||
key = "<leader>fv";
|
||||
options = {
|
||||
silent = true;
|
||||
};
|
||||
}
|
||||
{
|
||||
action = "<cmd>LazyGit<cr>";
|
||||
key = "<leader>lg";
|
||||
options = {
|
||||
silent = true;
|
||||
};
|
||||
}
|
||||
{
|
||||
action = "<cmd>Telescope buffers<cr>";
|
||||
key = "<leader>fb";
|
||||
options = {
|
||||
silent = true;
|
||||
};
|
||||
}
|
||||
{
|
||||
action = "<cmd>Telescope live_grep<cr>";
|
||||
key = "<leader>fg";
|
||||
options = {
|
||||
silent = true;
|
||||
};
|
||||
}
|
||||
{
|
||||
action = "<cmd>Trouble diagnostics toggle<cr>";
|
||||
key = "<leader>fd";
|
||||
options = {
|
||||
silent = true;
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
70
config/modules/obs.nix
Normal file
70
config/modules/obs.nix
Normal file
@@ -0,0 +1,70 @@
|
||||
{ den, modules, ... }:
|
||||
{
|
||||
modules.obs = settings: {
|
||||
homeManager =
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
programs = {
|
||||
obs-studio = {
|
||||
enable = true;
|
||||
package = (
|
||||
pkgs.obs-studio.override {
|
||||
cudaSupport = true;
|
||||
}
|
||||
);
|
||||
plugins = with pkgs.obs-studio-plugins; [
|
||||
obs-pipewire-audio-capture
|
||||
obs-vkcapture
|
||||
];
|
||||
};
|
||||
};
|
||||
systemd.user.services =
|
||||
let
|
||||
audio-set = lib.mkIf settings.audio {
|
||||
pw-discordaudio-virtual-device = {
|
||||
Unit = {
|
||||
Description = "OBS daemon";
|
||||
After = [ "hyprland-session.target" ];
|
||||
};
|
||||
Install = {
|
||||
WantedBy = [ "default.target" ];
|
||||
};
|
||||
Service = {
|
||||
ExecStart = "${pkgs.writeShellScript "discord_audio_virt_device" ''
|
||||
pw-loopback -m '[ FL FR]' --capture-props='media.class=Audio/Sink node.name=DiscordSink' -n DiscordSink
|
||||
''}";
|
||||
Restart = "on-failure";
|
||||
RestartSec = "5s";
|
||||
};
|
||||
};
|
||||
pw-gameaudio-virtual-device = {
|
||||
Unit = {
|
||||
Description = "OBS daemon";
|
||||
After = [ "hyprland-session.target" ];
|
||||
};
|
||||
Install = {
|
||||
WantedBy = [ "default.target" ];
|
||||
};
|
||||
Service = {
|
||||
ExecStart = "${pkgs.writeShellScript "game_audio_virt_device" ''
|
||||
pw-loopback -m '[ FL FR]' --capture-props='media.class=Audio/Sink node.name=GameAudioSink' -n GameAudioSink
|
||||
''}";
|
||||
Restart = "on-failure";
|
||||
RestartSec = "5s";
|
||||
};
|
||||
};
|
||||
};
|
||||
in
|
||||
lib.mergeAttrsList [ audio-set ];
|
||||
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
exec-once = [ "${config.programs.obs-studio.finalPackage}/bin/obs --startreplaybuffer" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
19
config/modules/power-management/auto-cpufreq.nix
Normal file
19
config/modules/power-management/auto-cpufreq.nix
Normal file
@@ -0,0 +1,19 @@
|
||||
{ den, modules, ... }:
|
||||
{
|
||||
modules.auto-cpufreq = {
|
||||
nixos =
|
||||
{ ... }:
|
||||
{
|
||||
services.auto-cpufreq.settings = {
|
||||
battery = {
|
||||
governor = "powersave";
|
||||
turbo = "never";
|
||||
};
|
||||
charger = {
|
||||
governor = "performance";
|
||||
turbo = "auto";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
27
config/modules/power-management/battery-ac-targets.nix
Normal file
27
config/modules/power-management/battery-ac-targets.nix
Normal file
@@ -0,0 +1,27 @@
|
||||
{ den, modules, ... }:
|
||||
{
|
||||
modules.battery-ac-targets = {
|
||||
nixos =
|
||||
{ ... }:
|
||||
{
|
||||
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"
|
||||
'';
|
||||
systemd.targets = {
|
||||
"ac" = {
|
||||
description = "On AC power";
|
||||
unitConfig = {
|
||||
StopWhenUnneeded = "yes";
|
||||
};
|
||||
};
|
||||
"battery" = {
|
||||
description = "On battery power";
|
||||
unitConfig = {
|
||||
StopWhenUnneeded = "yes";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
17
config/modules/power-management/common.nix
Normal file
17
config/modules/power-management/common.nix
Normal file
@@ -0,0 +1,17 @@
|
||||
{ den, modules, ... }:
|
||||
{
|
||||
modules.common.provides = {
|
||||
laptop-power-management = {
|
||||
includes = [
|
||||
# modules.auto-cpufreq
|
||||
modules.battery-ac-targets
|
||||
modules.intel-mgm
|
||||
modules.tlp
|
||||
# modules.ppd
|
||||
];
|
||||
nixos = {
|
||||
services.upower.enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
22
config/modules/power-management/flash.nix
Normal file
22
config/modules/power-management/flash.nix
Normal file
@@ -0,0 +1,22 @@
|
||||
{ modules, den, ... }:
|
||||
{
|
||||
modules.flash = {
|
||||
nixos = {
|
||||
services.scx = {
|
||||
enable = true;
|
||||
## Commented out because the service impl is bugged and doesnt actually set these
|
||||
# scheduler = "scx_lavd";
|
||||
# extraArgs = [
|
||||
# "--cpu-pref-order 20-21,12-19,0-11"
|
||||
# "--autopilot"
|
||||
# ];
|
||||
};
|
||||
# Most energy efficent scheduler setup..
|
||||
systemd.services.scx.environment = {
|
||||
SCX_SCHEDULER_OVERRIDE = "scx_flash";
|
||||
# Flags are from cachyos sched-ext tutorial
|
||||
SCX_FLAGS_OVERRIDE = "-m powersave -I 10000 -t 1000 -s 10000 -S 1000";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
46
config/modules/power-management/intel-gpu-management.nix
Normal file
46
config/modules/power-management/intel-gpu-management.nix
Normal file
@@ -0,0 +1,46 @@
|
||||
{ den, modules, ... }:
|
||||
{
|
||||
# Intel Mobile Gpu Management
|
||||
modules.intel-mgm = {
|
||||
nixos =
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
batt-gpu = pkgs.writeShellScript "batt-igpu" ''
|
||||
${pkgs.intel-gpu-tools}/bin/intel_gpu_frequency -e
|
||||
echo "800" > /sys/class/drm/card1/gt_boost_freq_mhz
|
||||
'';
|
||||
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
|
||||
{
|
||||
systemd.services.gpu-limit-on-batt = {
|
||||
enable = true;
|
||||
description = "Gpu Limit";
|
||||
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 = "Gpu Limit";
|
||||
before = [ "ac.target" ];
|
||||
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
ExecStart = "${ac-gpu}";
|
||||
RemainAfterExit = true;
|
||||
};
|
||||
wantedBy = [ "ac.target" ];
|
||||
partOf = [ "ac.target" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
21
config/modules/power-management/lavd.nix
Normal file
21
config/modules/power-management/lavd.nix
Normal file
@@ -0,0 +1,21 @@
|
||||
{ modules, den, ... }:
|
||||
{
|
||||
modules.lavd = {
|
||||
nixos = {
|
||||
services.scx = {
|
||||
enable = true;
|
||||
## Commented out because the service impl is bugged and doesnt actually set these
|
||||
# scheduler = "scx_lavd";
|
||||
# extraArgs = [
|
||||
# "--cpu-pref-order 20-21,12-19,0-11"
|
||||
# "--autopilot"
|
||||
# ];
|
||||
};
|
||||
# Most energy efficent scheduler setup..
|
||||
systemd.services.scx.environment = {
|
||||
SCX_SCHEDULER_OVERRIDE = "scx_lavd";
|
||||
SCX_FLAGS_OVERRIDE = "--powersave --per-cpu-dsq";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
11
config/modules/power-management/ppd.nix
Normal file
11
config/modules/power-management/ppd.nix
Normal file
@@ -0,0 +1,11 @@
|
||||
{ den, modules, ... }:
|
||||
{
|
||||
modules.ppd = {
|
||||
nixos = {
|
||||
services.power-profiles-daemon.enable = true;
|
||||
powerManagement = {
|
||||
cpuFreqGovernor = "schedutil";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
51
config/modules/power-management/tdp.nix
Normal file
51
config/modules/power-management/tdp.nix
Normal file
@@ -0,0 +1,51 @@
|
||||
{ modules, den, ... }:
|
||||
{
|
||||
modules.tdp = settings: {
|
||||
nixos =
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
batt-tdp = pkgs.writeShellScript "batt-cpu-tdp" ''
|
||||
${pkgs.powercap}/bin/powercap-set intel-rapl -z 0 -c 0 -l ${
|
||||
toString (settings.batt.cpu.long-term * 1000000)
|
||||
}
|
||||
${pkgs.powercap}/bin/powercap-set intel-rapl -z 0 -c 0 -l ${
|
||||
toString (settings.batt.cpu.short-term * 1000000)
|
||||
}
|
||||
'';
|
||||
ac-tdp = pkgs.writeShellScript "ac-cpu-tdp" ''
|
||||
${pkgs.powercap}/bin/powercap-set intel-rapl -z 0 -c 0 -l ${
|
||||
toString (settings.ac.cpu.long-term * 1000000)
|
||||
}
|
||||
${pkgs.powercap}/bin/powercap-set intel-rapl -z 0 -c 0 -l ${
|
||||
toString (settings.ac.cpu.short-term * 1000000)
|
||||
}
|
||||
'';
|
||||
in
|
||||
{
|
||||
systemd.services.tdp-on-batt = {
|
||||
enable = true;
|
||||
before = [ "battery.target" ];
|
||||
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
ExecStart = "${batt-tdp}";
|
||||
RemainAfterExit = true;
|
||||
};
|
||||
wantedBy = [ "battery.target" ];
|
||||
partOf = [ "battery.target" ];
|
||||
};
|
||||
systemd.services.tdp-on-ac = {
|
||||
enable = true;
|
||||
before = [ "ac.target" ];
|
||||
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
ExecStart = "${ac-tdp}";
|
||||
RemainAfterExit = true;
|
||||
};
|
||||
wantedBy = [ "ac.target" ];
|
||||
partOf = [ "ac.target" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
64
config/modules/power-management/tlp.nix
Normal file
64
config/modules/power-management/tlp.nix
Normal file
@@ -0,0 +1,64 @@
|
||||
{ den, modules, ... }:
|
||||
{
|
||||
modules.tlp = {
|
||||
homeManager = { };
|
||||
nixos = {
|
||||
services.tlp = {
|
||||
enable = true;
|
||||
pd.enable = true;
|
||||
settings = {
|
||||
# Wireless power saving
|
||||
WIFI_PWR_ON_BAT = "on";
|
||||
|
||||
# USB autosuspend
|
||||
USB_AUTOSUSPEND = "on";
|
||||
|
||||
# SATA drive power management
|
||||
SATA_LINKPWR_ON_BAT = "min_power";
|
||||
|
||||
# PCI Express Active-State Power Management (ASPM)
|
||||
PCIE_ASPM_ON_BAT = "powersupersave";
|
||||
|
||||
RUNTIME_PM_ON_AC = "auto";
|
||||
RUNTIME_PM_ON_BAT = "auto";
|
||||
|
||||
# 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 = 30;
|
||||
|
||||
# CPU_SCALING_GOVERNOR_ON_AC = "performance";
|
||||
# CPU_SCALING_GOVERNOR_ON_BAT = "schedutil";
|
||||
# CPU_HWP_DYN_BOOST_ON_AC = "1";
|
||||
# CPU_HWP_DYN_BOOST_ON_BAT = "0";
|
||||
# CPU_ENERGY_PERF_POLICY_ON_BAT = "power";
|
||||
# CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
|
||||
MAX_LOST_WORK_SECS_ON_BAT = "60";
|
||||
MAX_LOST_WORK_SECS_ON_AC = "15";
|
||||
DISK_IDLE_SECS_ON_AC = "0";
|
||||
WOL_DISABLE = "Y";
|
||||
SOUND_POWER_SAVE_CONTROLLER = "Y";
|
||||
DISK_IDLE_SECS_ON_BAT = "2";
|
||||
SOUND_POWER_SAVE_ON_BAT = "1";
|
||||
SOUND_POWER_SAVE_ON_AC = "1";
|
||||
SCHED_POWERSAVE_ON_AC = 0;
|
||||
SCHED_POWERSAVE_ON_BAT = 1;
|
||||
NMI_WATCHDOG = 0;
|
||||
|
||||
PLATFORM_PROFILE_ON_AC = "balanced";
|
||||
PLATFORM_PROFILE_ON_BAT = "quiet";
|
||||
STOP_CHARGE_THRESH_BAT0 = 80;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
18
config/modules/publickeys.nix
Normal file
18
config/modules/publickeys.nix
Normal file
@@ -0,0 +1,18 @@
|
||||
{ modules, ... }:
|
||||
{
|
||||
# Applys doloro's public keys to the users openssh
|
||||
modules.publicKeys.provides = {
|
||||
doloro =
|
||||
{ user, host, ... }:
|
||||
{
|
||||
nixos = {
|
||||
users.users.${user.userName} = {
|
||||
openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE/4h+WCBBW82puv8SMdUbkWymF4amEMuZitgFztB6oZ" # laptop pub key
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBaa6Z5qtBSLEz+A4fQGYPfkOISsRQlmKkVbcx2zxML7" # pc pub key
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
22
config/modules/quickshell/quickshell.nix
Normal file
22
config/modules/quickshell/quickshell.nix
Normal file
@@ -0,0 +1,22 @@
|
||||
{ den, modules, ... }:
|
||||
{
|
||||
modules.quickshell = {
|
||||
homeManager =
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
programs.quickshell = {
|
||||
systemd.enable = true;
|
||||
enable = true;
|
||||
activeConfig = "main";
|
||||
configs = {
|
||||
main = config.lib.file.mkOutOfStoreSymlink "/home/doloro/dotfiles/config/modules/quickshell/quickshell";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
1
config/modules/quickshell/quickshell/.qmlls.ini
Symbolic link
1
config/modules/quickshell/quickshell/.qmlls.ini
Symbolic link
@@ -0,0 +1 @@
|
||||
/run/user/1000/quickshell/vfs/6e389f6b800776b0595d9d90e42ebd04/.qmlls.ini
|
||||
36
config/modules/quickshell/quickshell/Audio.qml
Normal file
36
config/modules/quickshell/quickshell/Audio.qml
Normal file
@@ -0,0 +1,36 @@
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import Quickshell
|
||||
import Quickshell.Services.UPower
|
||||
import Quickshell.Services.Pipewire
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
property PwNode defaultSpeaker: Pipewire.preferredDefaultAudioSink
|
||||
property PwNode defaultMic: Pipewire.defaultAudioSource
|
||||
|
||||
PwObjectTracker {
|
||||
objects: [root.defaultSpeaker, root.defaultMic]
|
||||
}
|
||||
visible: root.defaultSpeaker.audio.muted || root.defaultMic.audio.muted
|
||||
implicitHeight: 20
|
||||
implicitWidth: content.width
|
||||
color: Colors.backgroundAlt
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
radius: 3.5
|
||||
RowLayout {
|
||||
id: content
|
||||
height: 20
|
||||
anchors.centerIn: parent
|
||||
Text {
|
||||
id: speaker
|
||||
text: root.defaultSpeaker.audio.muted ? "muted" : "unmuted"
|
||||
color: Colors.textPrimary
|
||||
}
|
||||
Text {
|
||||
id: mic
|
||||
text: root.defaultMic.audio.muted ? "muted" : "unmuted"
|
||||
color: Colors.textPrimary
|
||||
}
|
||||
}
|
||||
}
|
||||
73
config/modules/quickshell/quickshell/Bar.qml
Normal file
73
config/modules/quickshell/quickshell/Bar.qml
Normal file
@@ -0,0 +1,73 @@
|
||||
// Bar.qml
|
||||
import Quickshell
|
||||
import Quickshell.Io
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
|
||||
Scope {
|
||||
id: root
|
||||
|
||||
PanelWindow {
|
||||
required property var modelData
|
||||
screen: modelData
|
||||
color: "transparent"
|
||||
|
||||
anchors {
|
||||
top: true
|
||||
left: true
|
||||
right: true
|
||||
}
|
||||
|
||||
implicitHeight: 20
|
||||
|
||||
RowLayout {
|
||||
visible: true
|
||||
height: parent.height
|
||||
anchors {
|
||||
top: parent.top
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
// bottomMargin: 2
|
||||
leftMargin: 0
|
||||
rightMargin: 0
|
||||
}
|
||||
RowLayout {
|
||||
// Left
|
||||
Layout.alignment: Qt.AlignLeft
|
||||
// To make sure no children mess with the height of all the other children.
|
||||
// because if one widget is too height, it'll ofset all the other children in the bar
|
||||
Layout.preferredHeight: 20
|
||||
Workspaces {}
|
||||
}
|
||||
RowLayout {
|
||||
// Center
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.preferredHeight: 20
|
||||
}
|
||||
RowLayout {
|
||||
// Right
|
||||
Layout.alignment: Qt.AlignRight
|
||||
Layout.preferredHeight: 20
|
||||
// spacing: 100
|
||||
spacing: 10
|
||||
Audio {}
|
||||
BatteryWidget {}
|
||||
Rectangle {
|
||||
implicitWidth: clockText.width
|
||||
implicitHeight: clockText.height
|
||||
radius: 3.5
|
||||
|
||||
color: Colors.backgroundAlt
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Text {
|
||||
id: clockText
|
||||
color: Colors.textPrimary
|
||||
font: "CaskaydiaCove NFM"
|
||||
text: Clock.time
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
26
config/modules/quickshell/quickshell/BatteryWidget.qml
Normal file
26
config/modules/quickshell/quickshell/BatteryWidget.qml
Normal file
@@ -0,0 +1,26 @@
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import Quickshell
|
||||
import Quickshell.Services.UPower
|
||||
|
||||
RowLayout {
|
||||
id: content
|
||||
height: 20
|
||||
anchors.centerIn: root
|
||||
visible: UPower.displayDevice.percentage != 0
|
||||
property string charging: UPower.displayDevice.state == UPowerDeviceState.Charging ? "Charging.." : ""
|
||||
Rectangle {
|
||||
implicitHeight: text.height
|
||||
implicitWidth: text.width
|
||||
color: Colors.backgroundAlt
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
radius: 3.5
|
||||
Text {
|
||||
id: text
|
||||
property int power: UPower.displayDevice.percentage * 100
|
||||
anchors.centerIn: parent
|
||||
text: charging + " " + power + "%"
|
||||
color: Colors.textPrimary
|
||||
}
|
||||
}
|
||||
}
|
||||
20
config/modules/quickshell/quickshell/Clock.qml
Normal file
20
config/modules/quickshell/quickshell/Clock.qml
Normal file
@@ -0,0 +1,20 @@
|
||||
// Time.qml
|
||||
pragma Singleton
|
||||
|
||||
import Quickshell
|
||||
import QtQuick
|
||||
|
||||
Singleton {
|
||||
id: root
|
||||
// an expression can be broken across multiple lines using {}
|
||||
readonly property string time: {
|
||||
// The passed format string matches the default output of
|
||||
// the `date` command.
|
||||
Qt.formatDateTime(clock.date, "ddd MMM d HH:mm");
|
||||
}
|
||||
|
||||
SystemClock {
|
||||
id: clock
|
||||
precision: SystemClock.minutes
|
||||
}
|
||||
}
|
||||
109
config/modules/quickshell/quickshell/Colors.qml
Normal file
109
config/modules/quickshell/quickshell/Colors.qml
Normal file
@@ -0,0 +1,109 @@
|
||||
pragma Singleton
|
||||
import QtQuick 2.15
|
||||
|
||||
// Gruvbox Dark — base24 QML singleton
|
||||
// Notes:
|
||||
// - This is a template for a "base24" palette. Replace the baseNN hex values
|
||||
// with your exact base24 values if you have them.
|
||||
// - Semantic aliases (background, textPrimary, accentBlue, etc.) map to the
|
||||
// palette entries and make QML usage easier.
|
||||
|
||||
// "Thanks CoPilot" - Doloro
|
||||
|
||||
QtObject {
|
||||
id: gruvbox
|
||||
|
||||
// ---- Base24 palette (base00 .. base23) ----
|
||||
// Replace these hex values with exact ones from the base24 palette if needed.
|
||||
property color base00: "#1d2021" // darkest background
|
||||
property color base01: "#282828"
|
||||
property color base02: "#32302f"
|
||||
property color base03: "#3c3836"
|
||||
property color base04: "#504945"
|
||||
property color base05: "#665c54"
|
||||
property color base06: "#7c6f64"
|
||||
property color base07: "#928374"
|
||||
property color base08: "#bdae93"
|
||||
property color base09: "#d5c4a1"
|
||||
property color base10: "#ebdbb2" // main foreground
|
||||
property color base11: "#fbf1c7"
|
||||
property color base12: "#cc241d" // red
|
||||
property color base13: "#d65d0e" // orange
|
||||
property color base14: "#d79921" // yellow
|
||||
property color base15: "#98971a" // green
|
||||
property color base16: "#689d6a" // aqua/green
|
||||
property color base17: "#8ec07c" // light aqua
|
||||
property color base18: "#458588" // blue
|
||||
property color base19: "#b16286" // purple
|
||||
property color base20: "#a89984" // muted
|
||||
property color base21: "#7c6f64" // subtle
|
||||
property color base22: "#504945"
|
||||
property color base23: "#282828" // repeat or very dark
|
||||
|
||||
// ---- Semantic aliases (use these in your QML components) ----
|
||||
property color background: base00
|
||||
property color backgroundAlt: base01
|
||||
property color surface: base02
|
||||
property color surfaceAlt: base03
|
||||
|
||||
property color textPrimary: base10
|
||||
property color textSecondary: base06
|
||||
property color textDisabled: base04
|
||||
property color border: base05
|
||||
property color muted: base20
|
||||
|
||||
// accents
|
||||
property color accentRed: base12
|
||||
property color accentOrange: base13
|
||||
property color accentYellow: base14
|
||||
property color accentGreen: base15
|
||||
property color accentAqua: base16
|
||||
property color accentLightAqua: base17
|
||||
property color accentBlue: base18
|
||||
property color accentPurple: base19
|
||||
|
||||
// Example semantic levels for UI elements
|
||||
property color windowBackground: background
|
||||
property color panelBackground: surface
|
||||
property color cardBackground: surfaceAlt
|
||||
property color primaryText: textPrimary
|
||||
property color secondaryText: textSecondary
|
||||
property color highlight: accentBlue
|
||||
property color danger: accentRed
|
||||
property color success: accentGreen
|
||||
property color warning: accentYellow
|
||||
|
||||
// ---- Helper function ----
|
||||
// Returns a color by semantic name (string). Useful for dynamic lookups.
|
||||
function colorFor(name) {
|
||||
switch (name) {
|
||||
case "background":
|
||||
return gruvbox.background;
|
||||
case "panelBackground":
|
||||
return gruvbox.panelBackground;
|
||||
case "cardBackground":
|
||||
return gruvbox.cardBackground;
|
||||
case "primaryText":
|
||||
return gruvbox.primaryText;
|
||||
case "secondaryText":
|
||||
return gruvbox.secondaryText;
|
||||
case "highlight":
|
||||
return gruvbox.highlight;
|
||||
case "danger":
|
||||
return gruvbox.danger;
|
||||
case "success":
|
||||
return gruvbox.success;
|
||||
case "warning":
|
||||
return gruvbox.warning;
|
||||
case "accentBlue":
|
||||
return gruvbox.accentBlue;
|
||||
case "accentRed":
|
||||
return gruvbox.accentRed;
|
||||
case "accentGreen":
|
||||
return gruvbox.accentGreen;
|
||||
default:
|
||||
// fallback to primary text if unknown
|
||||
return gruvbox.textPrimary;
|
||||
}
|
||||
}
|
||||
}
|
||||
19
config/modules/quickshell/quickshell/HyprlandHelpers.qml
Normal file
19
config/modules/quickshell/quickshell/HyprlandHelpers.qml
Normal file
@@ -0,0 +1,19 @@
|
||||
// Time.qml
|
||||
pragma Singleton
|
||||
|
||||
import Quickshell
|
||||
import QtQuick
|
||||
import Quickshell.Hyprland
|
||||
|
||||
Singleton {
|
||||
id: root
|
||||
|
||||
function getHyprlandWorkspaceById(id) {
|
||||
for (var x of Hyprland.workspaces.values) {
|
||||
if (x.id == id) {
|
||||
return x;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
69
config/modules/quickshell/quickshell/Workspaces.qml
Normal file
69
config/modules/quickshell/quickshell/Workspaces.qml
Normal file
@@ -0,0 +1,69 @@
|
||||
// Bar.qml
|
||||
import Quickshell
|
||||
import Quickshell.Io
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import Quickshell.Hyprland
|
||||
|
||||
Item {
|
||||
id: root
|
||||
width: row.width
|
||||
height: row.height
|
||||
RowLayout {
|
||||
id: row
|
||||
height: 15
|
||||
Repeater {
|
||||
id: repeater
|
||||
model: 10
|
||||
delegate: Item {
|
||||
id: content
|
||||
required property int index
|
||||
property bool focused: HyprlandHelpers.getHyprlandWorkspaceById(index + 1).focused
|
||||
property bool exists: HyprlandHelpers.getHyprlandWorkspaceById(index + 1) ? true : false
|
||||
state: focused ? "FOCUSED" : (exists ? "EXISTS" : "NOT")
|
||||
states: [
|
||||
State {
|
||||
name: "FOCUSED"
|
||||
PropertyChanges {
|
||||
target: content
|
||||
implicitWidth: 10
|
||||
scale: 1
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "EXISTS"
|
||||
PropertyChanges {
|
||||
target: content
|
||||
implicitWidth: 10
|
||||
scale: 0.85
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "NOT"
|
||||
PropertyChanges {
|
||||
target: content
|
||||
implicitWidth: 10
|
||||
scale: 0.75
|
||||
}
|
||||
}
|
||||
]
|
||||
height: 15
|
||||
Rectangle {
|
||||
implicitWidth: parent.width
|
||||
implicitHeight: parent.height
|
||||
radius: 2.5
|
||||
color: {
|
||||
if (HyprlandHelpers.getHyprlandWorkspaceById(index + 1) != null) {
|
||||
if (HyprlandHelpers.getHyprlandWorkspaceById(index + 1).focused) {
|
||||
return Colors.primaryText;
|
||||
}
|
||||
return Colors.textSecondary;
|
||||
} else {
|
||||
return Colors.textDisabled;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1
config/modules/quickshell/quickshell/main
Symbolic link
1
config/modules/quickshell/quickshell/main
Symbolic link
@@ -0,0 +1 @@
|
||||
/nix/store/ynim9hhkc1smj1h2plrw3ap978dlm3qj-home-manager-files/.config/quickshell/main
|
||||
11
config/modules/quickshell/quickshell/shell.qml
Normal file
11
config/modules/quickshell/quickshell/shell.qml
Normal file
@@ -0,0 +1,11 @@
|
||||
// @ pragma UseQApplication
|
||||
//@ pragma Env QS_NO_RELOAD_POPUP=0
|
||||
//@ pragma Env QT_QUICK_CONTROLS_STYLE=Basic
|
||||
//@ pragma Env QT_QUICK_FLICKABLE_WHEEL_DECELERATION=10000
|
||||
|
||||
import Quickshell
|
||||
import QtQuick
|
||||
|
||||
Scope {
|
||||
Bar {}
|
||||
}
|
||||
19
config/modules/quickshell/quickshell/widgets/clock.qml
Normal file
19
config/modules/quickshell/quickshell/widgets/clock.qml
Normal file
@@ -0,0 +1,19 @@
|
||||
pragma Singleton
|
||||
|
||||
import Quickshell
|
||||
import QtQuick
|
||||
|
||||
Singleton {
|
||||
id: root
|
||||
// an expression can be broken across multiple lines using {}
|
||||
readonly property string time: {
|
||||
// The passed format string matches the default output of
|
||||
// the `date` command.
|
||||
Qt.formatDateTime(clock.date, "ddd MMM d hh:mm:ss AP t yyyy");
|
||||
}
|
||||
|
||||
SystemClock {
|
||||
id: clock
|
||||
precision: SystemClock.Seconds
|
||||
}
|
||||
}
|
||||
41
config/modules/raspberry-pi.nix
Normal file
41
config/modules/raspberry-pi.nix
Normal file
@@ -0,0 +1,41 @@
|
||||
{
|
||||
den,
|
||||
__findFile,
|
||||
modules,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
flake-file.inputs = {
|
||||
raspberry-pi-nix.url = "github:nix-community/raspberry-pi-nix";
|
||||
};
|
||||
modules.raspberry-pi = {
|
||||
provides = {
|
||||
"5" = {
|
||||
nixos =
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
rpi-pi = inputs.raspberry-pi-nix;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
rpi-pi.nixosModules.raspberry-pi
|
||||
rpi-pi.nixosModules.sd-image
|
||||
];
|
||||
|
||||
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;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
56
config/modules/secrets/content/secrets.yaml
Normal file
56
config/modules/secrets/content/secrets.yaml
Normal file
@@ -0,0 +1,56 @@
|
||||
doloro-hashed_password: ENC[AES256_GCM,data:RYB/bSNTz1TeGucdFHrxxhOqvqQYvQS3lm44I1Lf3LIEVMXL5s41zxIw0S+JVdlq8I3oHDY4C3o5V4lu+8qAWMyIZYp/6Xp4cw==,iv:yOuKk95skNZ5z805vtoJwvyOdsh08BuyBSgXN+M4Ybo=,tag:QAFhUYuqHT6Spw/l4feY4g==,type:str]
|
||||
root-hashed_password: ENC[AES256_GCM,data:vzVtz1Ht4XD+omdKjU/Zvoaftq8jKE4kxOjAGZTvoYI07hjItR2TSsYrLw0lwsxyJosfoyF3bVsZSFCuuN7njdchGMSSujZJhg==,iv:0av3n4fcGOHYQB4zidt/qn+blBSiDQ29LN15sVufLLs=,tag:nKKVDbCGxB7wDrMPAyJOaw==,type:str]
|
||||
wakatime-scug-io-api-key: ENC[AES256_GCM,data:XQUccNW4210U8ZpHSGVcsdbAirzyTvmcy4y6emk7n4N6MO/W,iv:9/f9ceLshA7l8hJB+IDIPvEwYwSkFlPOLmpvtYXLTpU=,tag:x7hESZCouzYVNef2C+iCSA==,type:str]
|
||||
meow: ENC[AES256_GCM,data:JVzenw==,iv:oCOo9//r5s2K4pSeH5UNEj0LL+9h2yq0G0DPOfwjmyQ=,tag:0gu9FNOrjQ8fpB+B+RbGSg==,type:str]
|
||||
meoww: ENC[AES256_GCM,data:WPeszDfMWxY=,iv:JJMOror5wj7cTNKfrUj2LDXlO3WCKzb7jk4AeZ0oD+Q=,tag:qs3oyM7K1FGy5cXvS6OHpQ==,type:str]
|
||||
sops:
|
||||
age:
|
||||
- recipient: age1ykcy2r4kk729e7adqxu8s24ujc60z5eux7ma0ca4ruzydwgm5p6qmdp838
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAzdGQ5ZHUxUHE4YXF0bllY
|
||||
dTRsYWc4cllmWEgveGVTLzUvRzJuc0FtUEdvCkNURmxmMnhkaExZcVVNRmRNU1p6
|
||||
UitMYUxNMXgzZC84S3J0SHR4aFV5TGcKLS0tIFB3Skx6UlFDcVJFSlhTd1NRbUl2
|
||||
VGQ3OUpDY0JVaEUyYStHQU83Q1hDYTAKeRgXVA8iWGO8cMMlvBFWGMVIZnaLCpsZ
|
||||
hBjWlxG6oUlCNnO+cyckU3jSTecc+z+EIuseFt710nN5uRJeKs2MlA==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
- recipient: age1e6vws55p0g23qzthm4qa93hpt6lqmck6670gkygph0sc0j7my4uq5wqjfh
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtM0wvV3pHTUZYdlhPWnU0
|
||||
VElBbDI2bUJhQUVCMlBPNjNzOE9tTXJGelI0CjBEdmhWTGlyc2VhODRnbHE3ZGdC
|
||||
WUoyWU0zcU5BbXhGdm5sVEZHdS80bkkKLS0tIHhpcFZQdkl6eHRUTGhZYmVOSCtz
|
||||
RE8zeFl2ZVgyWVBsRmhlUElybXEwSEEKEhvMUClOOoN3RdzVOFBIPt7rMrukla1t
|
||||
bVWGKX5e3p/EtK7aYzdBxYYvml+TNUD1n5TpTFhcnH2Jwpey8thz2Q==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
- recipient: age1x3lahhkefkap67cdmdjcqaxan9hp62er78akr79v9m73nvgugpeqk0y32a
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA0ODRGRkE3a09MS3Z0QXNm
|
||||
OTBlb2JEV28vTmxhcjM5aFpYbVhYM0wyZkd3CmszblZWVEFkVlMwQ1FMZitBd0Rp
|
||||
MkZpZGViSHlHSko4Tk9rZGNHaWpGWncKLS0tIC9xY1dBSncvQnhHTlhhaEpUK3ZI
|
||||
Tjgwd0VuVGtjaTdaSE5ERmRIa1dVNEkKkN0vp7xDWCnu4aq8VQu5y8Q/6xsFKhCQ
|
||||
ivMqQsqoOBvXSynu7hbNpcGvAsmDHDGcC2b/C9Mkt42OclSYM077bw==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
- recipient: age1exzngtk4d9vcsmcq6ap5xx3ca9qacqjkrv86ymged7msx9z6vfyqsf5sjq
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYTmhiUmFWaDFzcnRXcWFp
|
||||
VjJ1b3VRSk8xN0FQMk13UDY1a2FEV3ZQY2l3Cnd0SmMvM0JDOFhZdmtOL3g0dmNj
|
||||
UGZleDV1MU1DMXFiYUNmR2htWXZXQnMKLS0tIFBLa3lPL0VieG9ZWFBOU25vZTJ1
|
||||
VVVDclBGZTRSVDZOanRwOGNaK3VVUW8KCvt/rcP0rJD5aCNdGaJeABuGZ7huRbGw
|
||||
7FBvo6TvIRh0MCyvfbzfUon2m9d4yU8ddFejpSEK1vucxbXgV7KD8g==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
- recipient: age1fw4xnh2q52juce94ffn54js708cr6umfwpv0mykuddkea7kr4f0q7a9h05
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLU21oQnlTQ3RQWmNzR3Y4
|
||||
aWhhdFZ6RFEwVm5ITWluS2xZM0QyUHI5SEdvCmFjdDU2YlhlYTJ6Y2pPaGJkNW01
|
||||
WUVVN0xIRXZ3djdVVkYzRThLSzlCVzAKLS0tIFhISmlJcXB2UHNsb2VQS2tnYVUy
|
||||
aW5ERENRS2JWbGZhaGhNSGtqNVRNTncK0uI8n2L5uP3to/sByeO7y17h3ZrcmnOf
|
||||
e3CwdzP4/WcSwbFk0CRnS6Cq8J0esUqweSJxvpt2eNBEYvDZ77SSMw==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2026-02-14T00:08:39Z"
|
||||
mac: ENC[AES256_GCM,data:lp9ZeDxt5gkOkDmYk+F0VQrVhkR0tQiQlYXbygoA8Dcq+gV0IIKKLwRqr5CVfgfRlo3239IwmKLsGaS6zYC1xX4toZ8oqw3Ic2UvP2CiWt6M7HTrlL+3Y2+PKOUvGl7RAqQxQAw7QaoxB4esqdIiWnMDueVHk5BTKrkay+afhno=,iv:NAMaZ9SMBAtROTBSQtU0RJDB60MAuE82AFoPtDqVHVM=,tag:RGBUTQC1pM+LcBweSJbc6w==,type:str]
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.11.0
|
||||
53
config/modules/secrets/content/server.yaml
Normal file
53
config/modules/secrets/content/server.yaml
Normal file
@@ -0,0 +1,53 @@
|
||||
namedotcom_api__key: fbf0bc2133da020b64bbe9c884f616afe59dfdf7
|
||||
test: test
|
||||
sops:
|
||||
age:
|
||||
- recipient: age1ykcy2r4kk729e7adqxu8s24ujc60z5eux7ma0ca4ruzydwgm5p6qmdp838
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBSYm92cVo0Ykg2R3hTUWpW
|
||||
UlNOTXF2cFI4Y29uRTh2aXIySFNSTFhZZ0RFCnR4YmRrQTVrY0hkUloxMGgzdFFa
|
||||
ejFST0FESytnN3NIZW45blhmWDRMSlkKLS0tIE1MNWlHWWd1WEhNUGtiUm5GZ2pn
|
||||
QUR3aGtVczZYV1FSUFdMRGw4a2lGU2MKh/56SL7neNFXN70dzwtwTHBaECoMvArR
|
||||
TicJhSPV5S/vUrC9oDmSE3MMYtdzXSZkcRHYPI8fy5LcPOxXVPRARQ==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
- recipient: age1e6vws55p0g23qzthm4qa93hpt6lqmck6670gkygph0sc0j7my4uq5wqjfh
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3K3ZxKzdvdVFMYnZLS0Nv
|
||||
bDBkRWRNMkRMS09UWlZlcFYvZ1pEd09VVmlJCk9uMGJyNzd5QnZtWkdxOE40TVdG
|
||||
YkJiaGZMaEFlNXljcnFvODVSL3Q2d3cKLS0tIFg5UFFPVElyR0xlbXEvMDNDQmpW
|
||||
TGo3cUJVQ2NETkhWdmNCazNYSVpyUWcKr4EUvbK28WCiymL1BgYk6N6J27ZnadK8
|
||||
kQ8tzwVS7iI1frBoHOVzXhCRt2CEg+O3EnXMRJDrahhxwmpqlx6cRA==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
- recipient: age1x3lahhkefkap67cdmdjcqaxan9hp62er78akr79v9m73nvgugpeqk0y32a
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBRWGVsRmkwZGxId0hXQlEv
|
||||
czdmclRXYWNrL0t4bGpEQ0lmNE0vb1RuZEhjCkhEaGlxY3JKS3l4WGxHS0Uya2tM
|
||||
Zm1Lb3RpY2h0K2lKaHR1bjdFL25yQ0UKLS0tIFYvNmkrUWNFekVoMFVLck81bXhl
|
||||
WHNSbHpCTTZSS3lkUiszeEE0RGw4QncKTr1ZzIHtkv8aJNKT1v0m+QMJyht43+XJ
|
||||
0CRxdoZ/HXoymMQ7oZvT8vf6Ehz41aLe1gZHl8ZJPexDHrSl28NCtg==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
- recipient: age1exzngtk4d9vcsmcq6ap5xx3ca9qacqjkrv86ymged7msx9z6vfyqsf5sjq
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBlc0tUVjVGVS85YUZOSmJq
|
||||
a0pvcGV4UDBEc0N0Zk0xVEhUc1l1ZUFFTGxnClNocURmTE5ZaUorSVdWcE1kbW81
|
||||
U3doQm9ZbHVrdVlsSVhFaEFoSHo5NU0KLS0tIGgvd05PY2tlbnRwbTRrdXpsT0ho
|
||||
Zm1jbTlSMnA1WDUrZUVCOHNDWWJ2RFUK+cvqFK49rIVj3FITF/4HtCELvZhvkCZ9
|
||||
8Ss77uE6qtGyhuGWXB0HwnO3fsCpXA62uUt/zv08o9LmIgRi7o7adg==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
- recipient: age1fw4xnh2q52juce94ffn54js708cr6umfwpv0mykuddkea7kr4f0q7a9h05
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBuN0dkcExkR2pyaUxhbUlz
|
||||
NkR2WTNWRUpHSWdRTFdUY05jcm4ybDdEbW4wCmR1TTV5VlFudHN1cC8yRG5Nd2ts
|
||||
K3duNEE1dit0Ym9PdmNaM1pEWjlZZU0KLS0tIHBXaXhzQ0VuTWFxdDQrczQ4YTBM
|
||||
VlhpZ0N2ZmVkSC90NlowUkNuYWZUclEKzQUfWDETV5lPgrtCxYTLtVP8y7R8RFJj
|
||||
4J1bei0nJHlsap8V88u+QiYRgFsEthd++hzkYmUDvYPsA48PnzMupw==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2026-02-14T00:09:32Z"
|
||||
mac: ENC[AES256_GCM,data:nYWQYK5QOA0u3DYGTozSGFMYhx2uMqkAWoqhthgagRFRnKA/j852fVKqRFcwn+fPSQ4e8i4WpcvoM7FVwuFDC+ixNp7xtz16pnswiNS4N/mNEYXfajkon7wIoUYNtrHahUeYlAnID0vYSQFA3XKgV7ZDD9b4V8X5N+yMlVXex4c=,iv:IW7276v0nnmFBe9Z7HIn6Tl9vX4sDoqWdDfJ1uwKoAY=,tag:YC8OiTcoL+nYV4x8rkivbg==,type:str]
|
||||
encrypted_regex: ^(data|stringData)$
|
||||
version: 3.11.0
|
||||
24
config/modules/secrets/server.nix
Normal file
24
config/modules/secrets/server.nix
Normal file
@@ -0,0 +1,24 @@
|
||||
{ inputs, modules, ... }:
|
||||
{
|
||||
modules.sops.provides.server = {
|
||||
nixos =
|
||||
{ ... }:
|
||||
{
|
||||
imports = [
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
];
|
||||
sops = {
|
||||
# age.keyFile = "/etc/ssh/ssh_host_ed25519_key";
|
||||
defaultSopsFile = ./server.yaml;
|
||||
secrets = {
|
||||
root-hashed_password = {
|
||||
neededForUsers = true;
|
||||
};
|
||||
doloro-hashed_password = {
|
||||
neededForUsers = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
42
config/modules/secrets/sops.nix
Normal file
42
config/modules/secrets/sops.nix
Normal file
@@ -0,0 +1,42 @@
|
||||
{ inputs, modules, ... }:
|
||||
{
|
||||
#
|
||||
flake-file.inputs = {
|
||||
sops-nix = {
|
||||
url = "github:Mic92/sops-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
modules.sops = {
|
||||
homeManager =
|
||||
{ ... }:
|
||||
{
|
||||
imports = [
|
||||
inputs.sops-nix.homeManagerModules.sops
|
||||
];
|
||||
sops = {
|
||||
age.keyFile = "/home/doloro/.config/sops/age/key.txt"; # must have no password!
|
||||
defaultSopsFile = ./content/secrets.yaml;
|
||||
};
|
||||
};
|
||||
nixos =
|
||||
{ ... }:
|
||||
{
|
||||
imports = [
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
];
|
||||
sops = {
|
||||
# age.keyFile = "/etc/ssh/ssh_host_ed25519_key";
|
||||
defaultSopsFile = ./content/secrets.yaml;
|
||||
secrets = {
|
||||
root-hashed_password = {
|
||||
neededForUsers = true;
|
||||
};
|
||||
doloro-hashed_password = {
|
||||
neededForUsers = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
20
config/modules/services/caddy.nix
Normal file
20
config/modules/services/caddy.nix
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
den,
|
||||
__findFile,
|
||||
modules,
|
||||
...
|
||||
}:
|
||||
{
|
||||
# Basic caddy
|
||||
modules.services.provides.caddy = {
|
||||
nixos =
|
||||
{ config, ... }:
|
||||
{
|
||||
services.caddy = {
|
||||
enable = true;
|
||||
email = "doloroo@proton.me";
|
||||
enableReload = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
37
config/modules/services/ddns.nix
Normal file
37
config/modules/services/ddns.nix
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
den,
|
||||
__findFile,
|
||||
modules,
|
||||
...
|
||||
}:
|
||||
{
|
||||
# Basic traefik
|
||||
modules.services.provides.ddns = {
|
||||
nixos =
|
||||
{ config, pkgs, ... }:
|
||||
let
|
||||
ddnsImg = pkgs.dockerTools.pullImage {
|
||||
imageName = "qmcgaw/ddns-updater";
|
||||
imageDigest = "sha256:ee16ab4f6203bf9e5b0925d38a0b4ebf2d9f23771f933cfb2f5a2dbd5f9a2f88";
|
||||
finalImageName = "qmcgaw/ddns-updater";
|
||||
finalImageTag = "latest";
|
||||
sha256 = "sha256-dMCHkvoFaORmGwbIM9io4Vc9fq+wBks25k2dmnW7naI=";
|
||||
arch = "arm64";
|
||||
};
|
||||
in
|
||||
{
|
||||
virtualisation.oci-containers.containers = {
|
||||
ddns = {
|
||||
image = "qmcgaw/ddns-updater";
|
||||
imageFile = ddnsImg;
|
||||
volumes = [
|
||||
"/data/ddns:/updater/data"
|
||||
"/etc/localtime:/etc/localtime:ro"
|
||||
];
|
||||
# ports = [ "0.0.0.0:8123:8123" ];
|
||||
# networks = [ "meow" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
49
config/modules/services/home-assistant.nix
Normal file
49
config/modules/services/home-assistant.nix
Normal file
@@ -0,0 +1,49 @@
|
||||
{
|
||||
den,
|
||||
__findFile,
|
||||
modules,
|
||||
...
|
||||
}:
|
||||
{
|
||||
# Basic traefik
|
||||
modules.services.provides.home-assistant = {
|
||||
nixos =
|
||||
{ config, pkgs, ... }:
|
||||
let
|
||||
homeAssistantImg = pkgs.dockerTools.pullImage {
|
||||
imageName = "homeassistant/home-assistant";
|
||||
imageDigest = "sha256:17441c45ba14560b4ef727ee06aac4d605cf0dc0625fc4f2e043cb2551d72749";
|
||||
finalImageName = "homeassistant/home-assistant";
|
||||
finalImageTag = "latest";
|
||||
sha256 = "sha256-fSQ3luRSFHiWP0qDzsiZsEf/l+wYgyrdicjSayZ61yQ=";
|
||||
arch = "arm64";
|
||||
};
|
||||
in
|
||||
{
|
||||
virtualisation.oci-containers.containers = {
|
||||
home-assistant = {
|
||||
image = "homeassistant/home-assistant";
|
||||
imageFile = homeAssistantImg;
|
||||
volumes = [
|
||||
"/data/homeAssistant:/config"
|
||||
"/run/dbus:/run/dbus:ro"
|
||||
"/etc/localtime:/etc/localtime:ro"
|
||||
];
|
||||
ports = [ "0.0.0.0:8123:8123" ];
|
||||
# networks = [ "meow" ];
|
||||
};
|
||||
};
|
||||
networking.firewall = {
|
||||
allowedTCPPorts = [
|
||||
8123
|
||||
];
|
||||
allowedUDPPortRanges = [ ];
|
||||
};
|
||||
services.caddy = pkgs.lib.mkIf config.services.caddy.enable {
|
||||
virtualHosts."ha.h.doloro.co.uk".extraConfig = ''
|
||||
reverse_proxy :8123
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
50
config/modules/services/traefik.nix
Normal file
50
config/modules/services/traefik.nix
Normal file
@@ -0,0 +1,50 @@
|
||||
{
|
||||
den,
|
||||
__findFile,
|
||||
modules,
|
||||
...
|
||||
}:
|
||||
{
|
||||
# Basic traefik
|
||||
modules.services.provides.traefik = {
|
||||
nixos =
|
||||
{ config, ... }:
|
||||
{
|
||||
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 = ":8080";
|
||||
};
|
||||
};
|
||||
certificatesResolvers.letsencrypt.acme = {
|
||||
email = "doloroo@proton.me";
|
||||
storage = "${config.services.traefik.dataDir}/acme.json";
|
||||
httpChallenge.entryPoint = "web";
|
||||
};
|
||||
providers = {
|
||||
docker = {
|
||||
};
|
||||
};
|
||||
api.dashboard = true;
|
||||
api.insecure = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
24
config/modules/ssh.nix
Normal file
24
config/modules/ssh.nix
Normal file
@@ -0,0 +1,24 @@
|
||||
{ den, modules, ... }:
|
||||
{
|
||||
modules.ssh = {
|
||||
homeManager =
|
||||
{ home, ... }:
|
||||
{
|
||||
programs = {
|
||||
ssh = {
|
||||
enable = true;
|
||||
enableDefaultConfig = false;
|
||||
matchBlocks = {
|
||||
"*" = {
|
||||
addKeysToAgent = "yes";
|
||||
identityFile = [
|
||||
"~/.ssh/id_ed25519"
|
||||
"~/.ssh/id_gitea_scug"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
43
config/modules/stylix.nix
Normal file
43
config/modules/stylix.nix
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
den,
|
||||
modules,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
flake-file.inputs = {
|
||||
stylix = {
|
||||
url = "github:nix-community/stylix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
modules.stylix = {
|
||||
homeManager =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [ inputs.stylix.homeModules.stylix ];
|
||||
stylix = {
|
||||
enable = true;
|
||||
autoEnable = false;
|
||||
targets.gtk.enable = true;
|
||||
targets.qt.enable = true;
|
||||
targets.tmux.enable = false;
|
||||
fonts = {
|
||||
monospace = {
|
||||
name = "CaskaydiaCove Nerd Font Mono";
|
||||
package = pkgs.nerd-fonts.caskaydia-cove;
|
||||
};
|
||||
};
|
||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-hard.yaml";
|
||||
};
|
||||
};
|
||||
nixos =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [ inputs.stylix.nixosModules.stylix ];
|
||||
stylix.enable = false;
|
||||
stylix.autoEnable = false;
|
||||
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-hard.yaml";
|
||||
};
|
||||
};
|
||||
}
|
||||
22
config/modules/tmux.nix
Normal file
22
config/modules/tmux.nix
Normal file
@@ -0,0 +1,22 @@
|
||||
{ modules, ... }:
|
||||
{
|
||||
modules.tmux = {
|
||||
homeManager =
|
||||
{ home, pkgs, ... }:
|
||||
{
|
||||
programs.tmux = {
|
||||
enable = true;
|
||||
plugins = with pkgs.tmuxPlugins; [
|
||||
sensible
|
||||
minimal-tmux-status
|
||||
];
|
||||
extraConfig = ''
|
||||
set-option -g default-terminal "xterm-256color"
|
||||
set -a terminal-features "xterm-256color:RGB"
|
||||
set -g status-bg black
|
||||
set -g status-fg white
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
18
config/modules/tuigreetd.nix
Normal file
18
config/modules/tuigreetd.nix
Normal file
@@ -0,0 +1,18 @@
|
||||
{ den, modules, ... }:
|
||||
{
|
||||
modules.tuigreet = {
|
||||
nixos =
|
||||
{ pkgs, config, ... }:
|
||||
{
|
||||
services.greetd = {
|
||||
enable = true;
|
||||
settings = {
|
||||
default_session = {
|
||||
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --sessions ${config.services.xserver.displayManager.sessionData.desktops}/share/xsessions:${config.services.xserver.displayManager.sessionData.desktops}/share/wayland-sessions --remember --remember-user-session";
|
||||
user = "greeter";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
15
config/modules/user/doloro.nix
Normal file
15
config/modules/user/doloro.nix
Normal file
@@ -0,0 +1,15 @@
|
||||
{ modules, ... }:
|
||||
{
|
||||
modules.user.groups =
|
||||
{ config, user, ... }:
|
||||
{
|
||||
nixos = {
|
||||
users.users.${user.userName} = {
|
||||
extraGroups = [
|
||||
"wheel"
|
||||
"networkmanager"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
93
config/modules/zen-browser.nix
Normal file
93
config/modules/zen-browser.nix
Normal file
@@ -0,0 +1,93 @@
|
||||
{
|
||||
den,
|
||||
modules,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
flake-file.inputs = {
|
||||
zen-browser.url = "github:youwen5/zen-browser-flake";
|
||||
zen-browser.inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
modules.zen-browser = settings: {
|
||||
homeManager =
|
||||
{
|
||||
home,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
extension = shortId: guid: {
|
||||
name = guid;
|
||||
value = {
|
||||
install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/${shortId}/latest.xpi";
|
||||
installation_mode = "normal_installed";
|
||||
};
|
||||
};
|
||||
|
||||
prefs = {
|
||||
# Check these out at about:config
|
||||
"extensions.autoDisableScopes" = 0;
|
||||
"extensions.pocket.enabled" = false;
|
||||
# ...
|
||||
};
|
||||
|
||||
extensions = [
|
||||
# To add additional extensions, find it on addons.mozilla.org, find
|
||||
# the short ID in the url (like https://addons.mozilla.org/en-US/firefox/addon/!SHORT_ID!/)
|
||||
# Then go to https://addons.mozilla.org/api/v5/addons/addon/!SHORT_ID!/ to get the guid
|
||||
(extension "ublock-origin" "uBlock0@raymondhill.net")
|
||||
# ...
|
||||
];
|
||||
in
|
||||
{
|
||||
wayland.windowManager.hyprland.settings = lib.mkIf settings.default {
|
||||
bind = [
|
||||
"$mainMod, E, exec, zen"
|
||||
];
|
||||
};
|
||||
home.packages = [
|
||||
(pkgs.wrapFirefox
|
||||
inputs.zen-browser.packages.${pkgs.stdenv.hostPlatform.system}.zen-browser-unwrapped
|
||||
{
|
||||
extraPrefs = lib.concatLines (
|
||||
lib.mapAttrsToList (
|
||||
name: value: "lockPref(${lib.strings.toJSON name}, ${lib.strings.toJSON value});"
|
||||
) prefs
|
||||
);
|
||||
|
||||
extraPolicies = {
|
||||
DisableTelemetry = true;
|
||||
ExtensionSettings = builtins.listToAttrs extensions;
|
||||
|
||||
SearchEngines = {
|
||||
Default = "ddg";
|
||||
Add = [
|
||||
{
|
||||
Name = "nixpkgs packages";
|
||||
URLTemplate = "https://search.nixos.org/packages?query={searchTerms}";
|
||||
IconURL = "https://wiki.nixos.org/favicon.ico";
|
||||
Alias = "@np";
|
||||
}
|
||||
{
|
||||
Name = "NixOS options";
|
||||
URLTemplate = "https://search.nixos.org/options?query={searchTerms}";
|
||||
IconURL = "https://wiki.nixos.org/favicon.ico";
|
||||
Alias = "@no";
|
||||
}
|
||||
{
|
||||
Name = "NixOS Wiki";
|
||||
URLTemplate = "https://wiki.nixos.org/w/index.php?search={searchTerms}";
|
||||
IconURL = "https://wiki.nixos.org/favicon.ico";
|
||||
Alias = "@nw";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
)
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
14
config/namespace.nix
Normal file
14
config/namespace.nix
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
inputs,
|
||||
den,
|
||||
__findFile ? __findFile,
|
||||
...
|
||||
}:
|
||||
{
|
||||
_module.args.__findFile = den.lib.__findFile;
|
||||
imports = [
|
||||
inputs.den.flakeModule
|
||||
(inputs.den.namespace "modules" true)
|
||||
# (inputs.den.namespace "hosts" true)
|
||||
];
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
1010
flake.lock
generated
1010
flake.lock
generated
File diff suppressed because it is too large
Load Diff
205
flake.nix
205
flake.nix
@@ -1,195 +1,50 @@
|
||||
# You FAGGOT; Do NOT edit this file !!!!, run 'nix run .#write-flake'
|
||||
{
|
||||
description = "Home Manager configuration of doloro";
|
||||
outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } (inputs.import-tree ./config);
|
||||
|
||||
inputs = {
|
||||
# Specify the source of Home Manager and Nixpkgs.
|
||||
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
||||
rpi-nixpkgs.url = "github:nvmd/nixpkgs/modules-with-keys-25.11";
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
|
||||
nix-meow.url = "git+https://git.scug.io/nikkuss/nix-meow.git?ref=paws"; # config manager, meow'd
|
||||
hyprland.url = "github:hyprwm/Hyprland";
|
||||
rsRPC.url = "github:Doloro1978/rsRPC";
|
||||
protonhax.url = "github:linusfri/protonhax-nix";
|
||||
hytale-launcher.url = "github:JPyke3/hytale-launcher-nix";
|
||||
quickshell = {
|
||||
url = "git+https://git.outfoxxed.me/outfoxxed/quickshell";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
den.url = "github:vic/den";
|
||||
disko.url = "github:nix-community/disko";
|
||||
flake-aspects.url = "github:vic/flake-aspects";
|
||||
flake-file.url = "github:vic/flake-file";
|
||||
flake-parts = {
|
||||
url = "github:hercules-ci/flake-parts";
|
||||
inputs.nixpkgs-lib.follows = "nixpkgs-lib";
|
||||
};
|
||||
font-patcher.url = "github:Doloro1978/nix-nerd-fonts-patcher";
|
||||
heliumFlake = {
|
||||
url = "github:vikingnope/helium-browser-nix-flake";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
nikkuss-pkgs = {
|
||||
url = "git+https://git.scug.io/nikkuss/pkgs";
|
||||
# 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 = {
|
||||
url = "github:Mic92/sops-nix";
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
disko = {
|
||||
url = "github:nix-community/disko/latest";
|
||||
hyprland.url = "github:hyprwm/Hyprland";
|
||||
import-tree.url = "github:vic/import-tree";
|
||||
niri-flake = {
|
||||
url = "github:sodiboo/niri-flake";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
nix-cachyos-kernel.url = "github:xddxdd/nix-cachyos-kernel/release";
|
||||
nixpkgs.url = "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz";
|
||||
nixpkgs-lib.follows = "nixpkgs";
|
||||
nixvim = {
|
||||
url = "github:nix-community/nixvim";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
raspberry-pi-nix.url = "github:nix-community/raspberry-pi-nix";
|
||||
sops-nix = {
|
||||
url = "github:Mic92/sops-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
stylix = {
|
||||
url = "github:nix-community/stylix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
|
||||
nixvim = {
|
||||
url = "github:nix-community/nixvim";
|
||||
zen-browser = {
|
||||
url = "github:youwen5/zen-browser-flake";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
spicetify-nix = {
|
||||
url = "github:Gerg-L/spicetify-nix";
|
||||
};
|
||||
nix-warez = {
|
||||
# Blender-bin
|
||||
url = "github:edolstra/nix-warez?dir=blender";
|
||||
};
|
||||
nixpkgs-gamescope = {
|
||||
url = "github:Nixos/nixpkgs?rev=8fcb6f1c4948305af52d19f887b89011ee2c080d";
|
||||
};
|
||||
font-patcher.url = "github:Doloro1978/nix-nerd-fonts-patcher";
|
||||
nixos-raspberrypi.url = "github:nvmd/nixos-raspberrypi/develop";
|
||||
raspberry-pi-nix.url = "github:nix-community/raspberry-pi-nix";
|
||||
niri-flake.url = "github:sodiboo/niri-flake";
|
||||
};
|
||||
outputs =
|
||||
inputs@{
|
||||
nixpkgs,
|
||||
home-manager,
|
||||
nix-meow,
|
||||
...
|
||||
}:
|
||||
let
|
||||
overlays = [
|
||||
# inputs.nikkuss-pkgs.overlays.default
|
||||
(final: prev: {
|
||||
arrpc = prev.arrpc.overrideAttrs (preve: rec {
|
||||
pname = preve.pname + "-meow";
|
||||
version = "94d3ec81";
|
||||
patches = [ ./deadlock.patch ];
|
||||
src = prev.fetchFromGitHub {
|
||||
owner = "XenHat";
|
||||
repo = "arrpc";
|
||||
# branch = "improved-detection-fixes";
|
||||
rev = "94d3ec81339f94e563af512b83db369596d05d3b";
|
||||
sha256 = "sha256-DI/HCrmiQo1lPkErCNXOpdQli2wua03PDjdlERrpxTg=";
|
||||
};
|
||||
npmDepsHash = prev.lib.fakeHash;
|
||||
npmDeps = final.fetchNpmDeps {
|
||||
inherit src;
|
||||
name = "${pname}-${version}-npm-deps";
|
||||
hash = "sha256-lw6pngFC2Pnk+I8818TOTwN4r+8IsjvdMYIyTsTi49g=";
|
||||
};
|
||||
});
|
||||
})
|
||||
# (
|
||||
# final: prev:
|
||||
# let
|
||||
# system = prev.stdenv.hostPlatform.system;
|
||||
# pkgs_gamescope = import inputs.nixpkgs-gamescope {
|
||||
# inherit system;
|
||||
# config = {
|
||||
# allow_unfree = true;
|
||||
# };
|
||||
# };
|
||||
# packageNix = "${inputs.nixpkgs-gamescope}/pkgs/by-name/ga/gamescope/package.nix";
|
||||
# in
|
||||
# {
|
||||
# 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 {
|
||||
inherit (inputs) home-manager nixpkgs;
|
||||
inherit inputs;
|
||||
flakeRoot = ./.;
|
||||
hostsFolder = ./hosts;
|
||||
hardwaresFolder = ./hardwares;
|
||||
modulesFolder = ./modules;
|
||||
globalConfig = {
|
||||
allowUnfree = true;
|
||||
};
|
||||
globalOverlays = overlays;
|
||||
defaultUser = "doloro";
|
||||
};
|
||||
inherit (utils) mkHost;
|
||||
configurations = [
|
||||
# Desktops
|
||||
(mkHost {
|
||||
hardware = "doloro";
|
||||
host = "doloro";
|
||||
system = "x86_64-linux";
|
||||
stateVersion = "25.05";
|
||||
nixpkgsConfig = {
|
||||
rocmSupport = false;
|
||||
cudaSupport = true;
|
||||
};
|
||||
})
|
||||
(mkHost {
|
||||
hardware = "doloro-laptop";
|
||||
host = "doloro-laptop";
|
||||
system = "x86_64-linux";
|
||||
stateVersion = "25.11";
|
||||
nixpkgsConfig = {
|
||||
rocmSupport = false;
|
||||
};
|
||||
})
|
||||
# Servers
|
||||
(mkHost {
|
||||
hardware = "rpi-5";
|
||||
host = "rpi-5";
|
||||
system = "aarch64-linux";
|
||||
# nixpkgs = inputs.rpi-nixpkgs;
|
||||
stateVersion = "25.11";
|
||||
nixpkgsConfig = {
|
||||
rocmSupport = false;
|
||||
};
|
||||
})
|
||||
];
|
||||
in
|
||||
(utils.deepMerge configurations);
|
||||
}
|
||||
|
||||
@@ -1,65 +0,0 @@
|
||||
{ inputs, ... }:
|
||||
{
|
||||
imports = [ inputs.disko.nixosModules.disko ];
|
||||
disko.devices = {
|
||||
disk = {
|
||||
main = {
|
||||
device = "/dev/nvme0n1";
|
||||
type = "disk";
|
||||
content = {
|
||||
type = "gpt";
|
||||
partitions = {
|
||||
boot = {
|
||||
name = "boot";
|
||||
size = "1M";
|
||||
type = "EF02";
|
||||
};
|
||||
ESP = {
|
||||
name = "ESP";
|
||||
priority = 1;
|
||||
size = "4G";
|
||||
type = "EF00";
|
||||
content = {
|
||||
type = "filesystem";
|
||||
format = "vfat";
|
||||
mountpoint = "/boot";
|
||||
mountOptions = [ "umask=0077" ];
|
||||
};
|
||||
};
|
||||
plainSwap = {
|
||||
size = "48G";
|
||||
content = {
|
||||
type = "swap";
|
||||
discardPolicy = "both"; # Both "once" and page discard policies
|
||||
resumeDevice = true; # Use for hibernation resume device
|
||||
};
|
||||
};
|
||||
root = {
|
||||
size = "100%";
|
||||
content = {
|
||||
type = "btrfs";
|
||||
extraArgs = [ "-f" ]; # Override existing partition
|
||||
# Subvolumes must set a mountpoint in order to be mounted,
|
||||
# unless their parent is mounted
|
||||
subvolumes = {
|
||||
# Subvolume name is different from mountpoint
|
||||
"@" = {
|
||||
mountpoint = "/";
|
||||
};
|
||||
# Subvolume name is the same as the mountpoint
|
||||
"@home" = {
|
||||
mountpoint = "/home";
|
||||
};
|
||||
# Parent is not mounted so the mountpoint must be set
|
||||
"@nix" = {
|
||||
mountpoint = "/nix";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
modulesPath,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [
|
||||
"xhci_pci"
|
||||
"thunderbolt"
|
||||
"vmd"
|
||||
"nvme"
|
||||
];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-intel" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
{...}: {}
|
||||
@@ -1 +0,0 @@
|
||||
{lib,...}:{imports=[./disks.nix ./hardware-configuration.nix]; }
|
||||
@@ -1,66 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
inputs.disko.nixosModules.disko
|
||||
];
|
||||
disko.devices = {
|
||||
disk = {
|
||||
main = {
|
||||
device = lib.mkDefault "/dev/disk/by-id/nvme-CT1000P2SSD8_2221E632CD1F";
|
||||
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" ];
|
||||
};
|
||||
};
|
||||
root = {
|
||||
size = "100%";
|
||||
content = {
|
||||
type = "btrfs";
|
||||
extraArgs = [ "-f" ]; # Override existing partition
|
||||
# Subvolumes must set a mountpoint in order to be mounted,
|
||||
# unless their parent is mounted
|
||||
subvolumes = {
|
||||
# Subvolume name is different from mountpoint
|
||||
"@" = {
|
||||
mountpoint = "/";
|
||||
};
|
||||
# Subvolume name is the same as the mountpoint
|
||||
"@home" = {
|
||||
mountpoint = "/home";
|
||||
};
|
||||
# Parent is not mounted so the mountpoint must be set
|
||||
"@nix" = {
|
||||
mountpoint = "/nix";
|
||||
};
|
||||
"@blackhole" = {
|
||||
mountpoint = "/var/blackhole";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
modulesPath,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [
|
||||
"nvme"
|
||||
"xhci_pci"
|
||||
"ahci"
|
||||
"usbhid"
|
||||
];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-amd" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
{ ... }:
|
||||
{
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
./disks.nix
|
||||
./hardware-configuration.nix
|
||||
];
|
||||
hardware.enableRedistributableFirmware = true;
|
||||
boot.loader.grub.useOSProber = lib.mkOverride 0 false;
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
{ 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 +0,0 @@
|
||||
{...}: {}
|
||||
@@ -1,35 +0,0 @@
|
||||
{
|
||||
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; });
|
||||
})
|
||||
];
|
||||
}
|
||||
@@ -1,159 +0,0 @@
|
||||
{
|
||||
inputs,
|
||||
config,
|
||||
system,
|
||||
pkgs,
|
||||
fetchFromGitHub,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
inputs.sops-nix.homeManagerModules.sops
|
||||
];
|
||||
sops = {
|
||||
age.keyFile = "/home/doloro/.config/sops/age/key.txt"; # must have no password!
|
||||
};
|
||||
modules = {
|
||||
Hyprland.enable = true;
|
||||
quickshell.enable = true;
|
||||
# chromium.enable = true;
|
||||
wivrn.enable = false;
|
||||
helium.enable = true;
|
||||
sops.enable = true;
|
||||
wakatime.enable = false;
|
||||
# remoteBuild.use-remote-builders = true;
|
||||
nixvim.enable = true;
|
||||
zen-browser.enable = false;
|
||||
kitty.enable = true;
|
||||
helix.enable = false;
|
||||
stylix.enable = true;
|
||||
tmux.enable = true;
|
||||
theme.enable = true;
|
||||
obs = {
|
||||
enable = true;
|
||||
autostart = false;
|
||||
};
|
||||
blender.enable = false;
|
||||
bottles.enable = false;
|
||||
fish.enable = true;
|
||||
youtube-music.enable = true;
|
||||
unityhub.enable = false;
|
||||
direnv.enable = true;
|
||||
git.enable = true;
|
||||
rsRPC.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 = {
|
||||
gpg-agent = {
|
||||
enable = true;
|
||||
pinentry = {
|
||||
package = pkgs.pinentry-qt;
|
||||
program = "pinentry-qt";
|
||||
};
|
||||
};
|
||||
arrpc = {
|
||||
enable = false;
|
||||
};
|
||||
};
|
||||
xdg.mimeApps.enable = true;
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
monitor = [
|
||||
"eDP-1, 2880x1800@120, 0x0, 2"
|
||||
];
|
||||
input = {
|
||||
kb_layout = "gb";
|
||||
follow_mouse = 2;
|
||||
sensitivity = 0;
|
||||
};
|
||||
};
|
||||
|
||||
# This value determines the Home Manager release that your configuration is
|
||||
# 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.
|
||||
|
||||
# The home.packages option allows you to install Nix packages into your
|
||||
# environment.
|
||||
home.packages = with pkgs; [
|
||||
hello
|
||||
vim
|
||||
telegram-desktop
|
||||
# vesktop
|
||||
legcord
|
||||
pavucontrol
|
||||
lazygit
|
||||
btop
|
||||
sops
|
||||
alcom
|
||||
gcr
|
||||
qbittorrent
|
||||
intel-gpu-tools
|
||||
];
|
||||
|
||||
# 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";
|
||||
};
|
||||
services = {
|
||||
dunst = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
xdg.configFile."mimeapps.list".force = true;
|
||||
# Let Home Manager install and manage itself.
|
||||
|
||||
programs = {
|
||||
ssh = {
|
||||
enable = true;
|
||||
enableDefaultConfig = false;
|
||||
matchBlocks = {
|
||||
"*" = {
|
||||
addKeysToAgent = "yes";
|
||||
identityFile = [
|
||||
"~/.ssh/id_ed25519"
|
||||
"~/.ssh/id_gitea_scug"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
home-manager.enable = true;
|
||||
};
|
||||
}
|
||||
@@ -1,148 +0,0 @@
|
||||
{ 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";
|
||||
STOP_CHARGE_THRESH_BAT0 = 80;
|
||||
};
|
||||
};
|
||||
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;
|
||||
};
|
||||
}
|
||||
@@ -1,197 +0,0 @@
|
||||
# Edit this configuration file to define what should be installed on
|
||||
# your system. Help is available in the configuration.nix(5) man page, on
|
||||
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
|
||||
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
inputs,
|
||||
pkgs,
|
||||
nix-meow,
|
||||
...
|
||||
}:
|
||||
let
|
||||
sops = inputs.sops-nix;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
./laptop.nix
|
||||
];
|
||||
modules = {
|
||||
fish.enable = true;
|
||||
greetd.enable = true;
|
||||
stylix.enable = true;
|
||||
steam.enable = true;
|
||||
Hyprland.enable = true;
|
||||
# remoteBuild.use-remote-builders = true;
|
||||
wivrn.enable = false;
|
||||
fonts.enable = true;
|
||||
};
|
||||
# Use the systemd-boot EFI boot loader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
# boot.kernelPackages = pkgs.linuxPackages_6_12; # Hibernate works on 6.12 but not on latest
|
||||
boot.kernelPackages = pkgs.linuxPackages_latest; # Unpinned the linux version for now.. as i am not using hibernate that often
|
||||
networking.hostName = "doloro-nixos-laptop"; # Define your hostname.
|
||||
security.rtkit.enable = true;
|
||||
|
||||
# Configure network connections interactively with nmcli or nmtui.
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
# Set your time zone.
|
||||
# time.timeZone = "Europe/London";
|
||||
services.automatic-timezoned.enable = true;
|
||||
|
||||
nix.settings = {
|
||||
substituters = [
|
||||
"https://nix-community.cachix.org"
|
||||
"https://cache.nixos.org/"
|
||||
"https://attic.scug.io/pkgs"
|
||||
];
|
||||
trusted-public-keys = [
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||
"pkgs:+sRbfiZMMX5R3PuAPtIRz/emowDoGZNpozibrnrAvuc="
|
||||
];
|
||||
experimental-features = [
|
||||
"flakes"
|
||||
"nix-command"
|
||||
];
|
||||
trusted-users = [
|
||||
"doloro"
|
||||
];
|
||||
};
|
||||
|
||||
services.gnome.gnome-keyring.enable = true;
|
||||
|
||||
hardware = {
|
||||
firmware = [ pkgs.intel-npu-driver ];
|
||||
cpu.intel = {
|
||||
# npu.enable = true;
|
||||
};
|
||||
graphics = {
|
||||
enable = true;
|
||||
# https://github.com/intel/libvpl?tab=readme-ov-file#dispatcher-behavior-when-targeting-intel-gpus
|
||||
extraPackages = with pkgs; [
|
||||
vpl-gpu-rt
|
||||
intel-media-driver # VA-API (iHD) userspace
|
||||
intel-vaapi-driver
|
||||
# vpl-gpu-rt # oneVPL (QSV) runtime
|
||||
intel-compute-runtime # OpenCL (NEO) + Level Zero for Arc/Xe
|
||||
];
|
||||
};
|
||||
};
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
PasswordAuthentication = true;
|
||||
PermitRootLogin = "prohibit-password";
|
||||
};
|
||||
};
|
||||
users.users.root.openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBaa6Z5qtBSLEz+A4fQGYPfkOISsRQlmKkVbcx2zxML7"
|
||||
];
|
||||
|
||||
# Select internationalisation properties.
|
||||
# i18n.defaultLocale = "en_US.UTF-8";
|
||||
# console = {
|
||||
# font = "Lat2-Terminus16";
|
||||
# keyMap = "us";
|
||||
# useXkbConfig = true; # use xkb.options in tty.
|
||||
# };
|
||||
|
||||
# Enable the X11 windowing system.
|
||||
services.xserver.enable = true;
|
||||
|
||||
# sops.age.keyFile = "/etc/ssh/ssh_host_ed25519_key";
|
||||
sops = {
|
||||
defaultSopsFile = builtins.toPath "${nix-meow.flakeRoot}/secrets/users.yaml";
|
||||
secrets = {
|
||||
root-hashed_password = {
|
||||
neededForUsers = true;
|
||||
};
|
||||
doloro-hashed_password = {
|
||||
neededForUsers = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
pulse.enable = true;
|
||||
};
|
||||
|
||||
services.libinput.enable = true;
|
||||
|
||||
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
|
||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||
users.users.doloro = {
|
||||
isNormalUser = true;
|
||||
shell = pkgs.fish;
|
||||
extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
|
||||
packages = with pkgs; [
|
||||
tree
|
||||
];
|
||||
hashedPasswordFile = config.sops.secrets."doloro-hashed_password".path;
|
||||
openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBaa6Z5qtBSLEz+A4fQGYPfkOISsRQlmKkVbcx2zxML7" # pc public key
|
||||
];
|
||||
# initialPassword = "sex";
|
||||
};
|
||||
users.mutableUsers = false;
|
||||
services.system76-scheduler.enable = true;
|
||||
|
||||
# programs.firefox.enable = true;
|
||||
|
||||
# List packages installed in system profile.
|
||||
# You can use https://search.nixos.org/ to find more packages (and options).
|
||||
environment.systemPackages = with pkgs; [
|
||||
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||
git
|
||||
wget
|
||||
# tlp-pd
|
||||
brightnessctl
|
||||
nvtopPackages.intel
|
||||
seahorse
|
||||
];
|
||||
|
||||
# Some programs need SUID wrappers, can be configured further or are
|
||||
# started in user sessions.
|
||||
# programs.mtr.enable = true;
|
||||
# programs.gnupg.agent = {
|
||||
# enable = true;
|
||||
# enableSSHSupport = true;
|
||||
# };
|
||||
|
||||
# List services that you want to enable:
|
||||
|
||||
# Open ports in the firewall.
|
||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||
# Or disable the firewall altogether.
|
||||
# networking.firewall.enable = false;
|
||||
|
||||
# Copy the NixOS configuration file and link it from the resulting system
|
||||
# (/run/current-system/configuration.nix). This is useful in case you
|
||||
# accidentally delete configuration.nix.
|
||||
|
||||
# This option defines the first version of NixOS you have installed on this particular machine,
|
||||
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
|
||||
#
|
||||
# Most users should NEVER change this value after the initial install, for any reason,
|
||||
# even if you've upgraded your system to a new NixOS release.
|
||||
#
|
||||
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
|
||||
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
|
||||
# to actually do that.
|
||||
#
|
||||
# This value being lower than the current NixOS release does NOT mean your system is
|
||||
# out of date, out of support, or vulnerable.
|
||||
#
|
||||
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
|
||||
# and migrated your data accordingly.
|
||||
#
|
||||
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
|
||||
system.stateVersion = "25.11"; # Did you read the comment?
|
||||
|
||||
}
|
||||
@@ -1,132 +0,0 @@
|
||||
{
|
||||
inputs,
|
||||
config,
|
||||
pkgs,
|
||||
fetchFromGitHub,
|
||||
...
|
||||
}:
|
||||
{
|
||||
modules = {
|
||||
hyfetch.enable = true;
|
||||
Hyprland = {
|
||||
enable = true;
|
||||
suspend-on-hibernate = true;
|
||||
};
|
||||
niri.enable = false;
|
||||
quickshell.enable = true;
|
||||
# chromium.enable = true;
|
||||
wivrn.enable = true;
|
||||
sops.enable = true;
|
||||
helium.enable = true;
|
||||
nixvim.enable = true;
|
||||
helix.enable = false;
|
||||
stylix.enable = true;
|
||||
kitty.enable = true;
|
||||
tmux.enable = true;
|
||||
theme.enable = true;
|
||||
obs = {
|
||||
enable = true;
|
||||
autostart = true;
|
||||
};
|
||||
blender.enable = true;
|
||||
zen-browser.enable = false;
|
||||
bottles.enable = true;
|
||||
fish.enable = true;
|
||||
youtube-music.enable = true;
|
||||
unityhub.enable = true;
|
||||
direnv.enable = true;
|
||||
git.enable = true;
|
||||
rsRPC.enable = true;
|
||||
};
|
||||
# Home Manager needs a bit of information about you and the paths it should
|
||||
# manage.
|
||||
home.username = "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 = {
|
||||
gpg-agent = {
|
||||
enable = true;
|
||||
pinentry = {
|
||||
package = pkgs.pinentry-qt;
|
||||
program = "pinentry-qt";
|
||||
};
|
||||
};
|
||||
arrpc = {
|
||||
enable = false;
|
||||
};
|
||||
};
|
||||
xdg.mimeApps.enable = true;
|
||||
|
||||
# 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.
|
||||
|
||||
# The home.packages option allows you to install Nix packages into your
|
||||
# environment.
|
||||
home.packages = with pkgs; [
|
||||
hello
|
||||
vim
|
||||
telegram-desktop
|
||||
vesktop
|
||||
(inputs.protonhax.packages.x86_64-linux.default)
|
||||
pavucontrol
|
||||
lazygit
|
||||
btop
|
||||
sops
|
||||
protontricks
|
||||
alcom
|
||||
gcr
|
||||
qbittorrent
|
||||
(inputs.hytale-launcher.packages.x86_64-linux.default)
|
||||
];
|
||||
home.sessionVariables = {
|
||||
EDITOR = "nvim";
|
||||
};
|
||||
services = {
|
||||
dunst = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
xdg.configFile."mimeapps.list".force = true;
|
||||
|
||||
programs = {
|
||||
ssh = {
|
||||
enable = true;
|
||||
enableDefaultConfig = false;
|
||||
matchBlocks = {
|
||||
"*" = {
|
||||
addKeysToAgent = "yes";
|
||||
identityFile = [
|
||||
"~/.ssh/id_ed25519"
|
||||
"~/.ssh/id_gitea_scug"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
home-manager.enable = true;
|
||||
};
|
||||
}
|
||||
@@ -1,321 +0,0 @@
|
||||
# Edit this configuration file to define what should be installed on
|
||||
# your system. Help is available in the configuration.nix(5) man page, on
|
||||
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
|
||||
|
||||
{
|
||||
config,
|
||||
inputs,
|
||||
lib,
|
||||
pkgs,
|
||||
nix-meow,
|
||||
...
|
||||
}:
|
||||
let
|
||||
sops = inputs.sops-nix;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
];
|
||||
modules = {
|
||||
fish.enable = true;
|
||||
greetd.enable = true;
|
||||
stylix.enable = true;
|
||||
steam.enable = true;
|
||||
Hyprland.enable = true;
|
||||
niri.enable = false;
|
||||
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.
|
||||
boot.loader.grub.enable = true;
|
||||
boot.loader.grub.device = "nodev";
|
||||
boot.loader.grub.devices = [
|
||||
"/dev/disk/by-id/nvme-CT1000P2SSD8_2221E632CD1F"
|
||||
"nodev"
|
||||
];
|
||||
#boot.loader.efi.canTouchEfiVariables = true;
|
||||
boot.loader.grub.efiSupport = true;
|
||||
boot.loader.grub.efiInstallAsRemovable = true;
|
||||
|
||||
nix.settings = {
|
||||
substituters = [
|
||||
"https://nix-community.cachix.org"
|
||||
"https://cache.nixos.org/"
|
||||
"https://attic.scug.io/pkgs"
|
||||
"https://cache.nixos-cuda.org"
|
||||
"https://niri.cachix.org"
|
||||
];
|
||||
trusted-public-keys = [
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||
"pkgs:+sRbfiZMMX5R3PuAPtIRz/emowDoGZNpozibrnrAvuc="
|
||||
"cache.nixos-cuda.org:74DUi4Ye579gUqzH4ziL9IyiJBlDpMRn9MBN8oNan9M="
|
||||
"niri.cachix.org-1:Wv0OmO7PsuocRKzfDoJ3mulSl7Z6oezYhGhR+3W2964="
|
||||
];
|
||||
experimental-features = [
|
||||
"flakes"
|
||||
"nix-command"
|
||||
];
|
||||
trusted-users = [
|
||||
"doloro"
|
||||
];
|
||||
};
|
||||
|
||||
networking.hostName = "doloroo-main"; # Define your hostname.
|
||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||
# Enable "Silent boot"
|
||||
boot.consoleLogLevel = 3;
|
||||
boot.initrd.verbose = false;
|
||||
boot.kernelParams = [
|
||||
"quiet"
|
||||
"splash"
|
||||
"boot.shell_on_fail"
|
||||
"udev.log_priority=3"
|
||||
"rd.systemd.show_status=auto"
|
||||
];
|
||||
# Hide the OS choice for bootloaders.
|
||||
# It's still possible to open the bootloader list by pressing any key
|
||||
# It will just not appear on screen unless a key is pressed
|
||||
boot.loader.timeout = 0;
|
||||
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
# Configure network connections interactively with nmcli or nmtui.
|
||||
networking.networkmanager.enable = true;
|
||||
networking.firewall.enable = false;
|
||||
|
||||
security.rtkit.enable = true;
|
||||
|
||||
sops = {
|
||||
# age.keyFile = "/etc/ssh/ssh_host_ed25519_key";
|
||||
defaultSopsFile = builtins.toPath "${nix-meow.flakeRoot}/secrets/users.yaml";
|
||||
secrets = {
|
||||
root-hashed_password = {
|
||||
neededForUsers = true;
|
||||
};
|
||||
doloro-hashed_password = {
|
||||
neededForUsers = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Set your time zone.
|
||||
time.timeZone = "Europe/London";
|
||||
|
||||
# Configure network proxy if necessary
|
||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||
|
||||
# Select internationalisation properties.
|
||||
# i18n.defaultLocale = "en_US.UTF-8";
|
||||
# console = {
|
||||
# font = "Lat2-Terminus16";
|
||||
# keyMap = "us";
|
||||
# useXkbConfig = true; # use xkb.options in tty.
|
||||
# };
|
||||
|
||||
# Enable the X11 windowing system.
|
||||
# services.xserver.enable = true;
|
||||
|
||||
# Enable OpenGL
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
services.xserver.videoDrivers = [ "nvidia" ];
|
||||
|
||||
fileSystems."/mnt/2tb" = {
|
||||
device = "/dev/disk/by-uuid/0f49aec7-4af2-4f4f-b475-3f4fad2b59c2";
|
||||
fsType = "ext4";
|
||||
options = [
|
||||
# If you don't have this options attribute, it'll default to "defaults"
|
||||
# boot options for fstab. Search up fstab mount options you can use
|
||||
"defaults"
|
||||
"users" # Allows any user to mount and unmount
|
||||
"nofail" # Prevent system from failing if this drive doesn't mount
|
||||
"exec"
|
||||
];
|
||||
};
|
||||
boot.plymouth = {
|
||||
enable = true;
|
||||
theme = "rings";
|
||||
themePackages = with pkgs; [
|
||||
# By default we would install all themes
|
||||
(adi1090x-plymouth-themes.override {
|
||||
selected_themes = [ "rings" ];
|
||||
})
|
||||
];
|
||||
};
|
||||
|
||||
hardware.nvidia = {
|
||||
|
||||
# Modesetting is required.
|
||||
modesetting.enable = true;
|
||||
|
||||
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
|
||||
# Enable this if you have graphical corruption issues or application crashes after waking
|
||||
# up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead
|
||||
# of just the bare essentials.
|
||||
powerManagement.enable = true;
|
||||
|
||||
# Fine-grained power management. Turns off GPU when not in use.
|
||||
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
|
||||
powerManagement.finegrained = false;
|
||||
# prime.offload.enable = true;
|
||||
|
||||
# Use the NVidia open source kernel module (not to be confused with the
|
||||
# independent third-party "nouveau" open source driver).
|
||||
# Support is limited to the Turing and later architectures. Full list of
|
||||
# supported GPUs is at:
|
||||
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
|
||||
# Only available from driver 515.43.04+
|
||||
open = false;
|
||||
|
||||
# Enable the Nvidia settings menu,
|
||||
# accessible via `nvidia-settings`.
|
||||
nvidiaSettings = true;
|
||||
|
||||
# Optionally, you may need to select the appropriate driver version for your specific GPU.
|
||||
package = config.boot.kernelPackages.nvidiaPackages.latest;
|
||||
};
|
||||
|
||||
# fonts = {
|
||||
# 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;
|
||||
# };
|
||||
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
|
||||
programs.nix-ld.enable = true;
|
||||
programs.nix-ld.libraries = with pkgs; [
|
||||
fuse
|
||||
libusb1
|
||||
libGL
|
||||
harfbuzz
|
||||
];
|
||||
|
||||
# Configure keymap in X11
|
||||
# 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;
|
||||
};
|
||||
|
||||
programs = {
|
||||
ssh = {
|
||||
# enable = true;
|
||||
# startAgent = true;
|
||||
|
||||
};
|
||||
fish.enable = true;
|
||||
};
|
||||
# Enable touchpad support (enabled default in most desktopManager).
|
||||
# services.libinput.enable = true;
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
PasswordAuthentication = true;
|
||||
};
|
||||
};
|
||||
users.users.doloro = {
|
||||
isNormalUser = true;
|
||||
shell = pkgs.fish;
|
||||
extraGroups = [
|
||||
"wheel"
|
||||
"dialout"
|
||||
"networkmanager"
|
||||
]; # Enable ‘sudo’ for the user.
|
||||
packages = with pkgs; [
|
||||
tree
|
||||
];
|
||||
};
|
||||
users.mutableUsers = false;
|
||||
users.users.doloro.hashedPasswordFile = config.sops.secrets."doloro-hashed_password".path;
|
||||
# users.users.root.hashedPasswordFile = config.sops.secrets."root-hashed_password".path;
|
||||
users.users.root.initialPassword = "root";
|
||||
# programs.firefox.enable = true;
|
||||
|
||||
# List packages installed in system profile.
|
||||
# You can use https://search.nixos.org/ to find more packages (and options).
|
||||
environment.systemPackages = with pkgs; [
|
||||
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||
wget
|
||||
killall
|
||||
sops
|
||||
seahorse
|
||||
];
|
||||
|
||||
# Some programs need SUID wrappers, can be configured further or are
|
||||
# started in user sessions.
|
||||
# programs.mtr.enable = true;
|
||||
# programs.gnupg.agent = {
|
||||
# enable = true;
|
||||
# enableSSHSupport = true;
|
||||
# };
|
||||
|
||||
# List services that you want to enable:
|
||||
|
||||
# Enable the OpenSSH daemon.
|
||||
# services.openssh.enable = true;
|
||||
|
||||
# Open ports in the firewall.
|
||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||
# Or disable the firewall altogether.
|
||||
# networking.firewall.enable = false;
|
||||
|
||||
# Copy the NixOS configuration file and link it from the resulting system
|
||||
# (/run/current-system/configuration.nix). This is useful in case you
|
||||
# accidentally delete configuration.nix.
|
||||
# system.copySystemConfiguration = true;
|
||||
|
||||
# This option defines the first version of NixOS you have installed on this particular machine,
|
||||
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
|
||||
#
|
||||
# Most users should NEVER change this value after the initial install, for any reason,
|
||||
# even if you've upgraded your system to a new NixOS release.
|
||||
#
|
||||
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
|
||||
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
|
||||
# to actually do that.
|
||||
#
|
||||
# This value being lower than the current NixOS release does NOT mean your system is
|
||||
# out of date, out of support, or vulnerable.
|
||||
#
|
||||
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
|
||||
# and migrated your data accordingly.
|
||||
#
|
||||
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
|
||||
system.stateVersion = "25.11"; # Did you read the comment?
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
{ ... }:
|
||||
let
|
||||
|
||||
in
|
||||
{
|
||||
|
||||
}
|
||||
@@ -1,54 +0,0 @@
|
||||
{
|
||||
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;
|
||||
};
|
||||
}
|
||||
@@ -1,99 +0,0 @@
|
||||
{
|
||||
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";
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
_: {
|
||||
home = ./home.nix;
|
||||
# nixos: ./nixos.nix;
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
{
|
||||
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" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
_: {
|
||||
home = ./home.nix;
|
||||
# nixos: ./nixos.nix;
|
||||
}
|
||||
@@ -1,62 +0,0 @@
|
||||
{
|
||||
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;
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
_: {
|
||||
home = ./home.nix;
|
||||
# nixos: ./nixos.nix;
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user