Compare commits

..

15 Commits

207 changed files with 5345 additions and 4060 deletions

2
.gitignore vendored
View File

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

View File

@@ -2,10 +2,7 @@
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: config/modules/secrets/content/*.*\.yaml$ # Applies to all files in the secrets/ directory
path_regex: secrets/.*\.yaml$ # Applies to all files in the secrets/ directory
age:
- "age1ykcy2r4kk729e7adqxu8s24ujc60z5eux7ma0ca4ruzydwgm5p6qmdp838" # pc-user-doloro
- "age1e6vws55p0g23qzthm4qa93hpt6lqmck6670gkygph0sc0j7my4uq5wqjfh" # pc-system
- "age1x3lahhkefkap67cdmdjcqaxan9hp62er78akr79v9m73nvgugpeqk0y32a" # laptop-user-doloro
- "age1exzngtk4d9vcsmcq6ap5xx3ca9qacqjkrv86ymged7msx9z6vfyqsf5sjq" # laptop-system
- "age1fw4xnh2q52juce94ffn54js708cr6umfwpv0mykuddkea7kr4f0q7a9h05" # rpi5
- "age1ykcy2r4kk729e7adqxu8s24ujc60z5eux7ma0ca4ruzydwgm5p6qmdp838" # pc
- "age1exzngtk4d9vcsmcq6ap5xx3ca9qacqjkrv86ymged7msx9z6vfyqsf5sjq" # laptop

View File

@@ -1,7 +0,0 @@
{ den, ... }:
{
den.default = {
nixos.system.stateVersion = "25.11";
homeManager.home.stateVersion = "25.11";
};
}

View File

@@ -1,11 +0,0 @@
{ 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)
'';
}

View File

@@ -1,70 +0,0 @@
{
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";
};
};
};
};
};
};
};
};
};
};
};
}

View File

@@ -1,31 +0,0 @@
{ 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;
};
};
}

View File

@@ -1,75 +0,0 @@
{
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;
};
};
}

View File

@@ -1,97 +0,0 @@
{
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;
};
};
};
}

View File

@@ -1,75 +0,0 @@
{
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";
};
};
};
};
};
};
};
};
};
};
};
}

View File

@@ -1,35 +0,0 @@
{
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;
};
};
}

View File

@@ -1,63 +0,0 @@
{
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;
};
};
}

View File

@@ -1,219 +0,0 @@
{
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?
};
};
}

View File

@@ -1,36 +0,0 @@
{
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, ... }:
{
};
};
}

View File

@@ -1,36 +0,0 @@
{
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";
};
};
}

View File

@@ -1,39 +0,0 @@
{
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.";
};
}

View File

@@ -1,40 +0,0 @@
{
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";
};
};
}

View File

@@ -1,10 +0,0 @@
{ ... }:
{
flake-file.inputs = {
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
den.url = "github:vic/den";
};
}

View File

@@ -1,12 +0,0 @@
{
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;
}

View File

@@ -1,14 +0,0 @@
{
inputs,
...
}:
{
flake-file.inputs.disko.url = "github:nix-community/disko";
modules.disko = {
nixos =
{ ... }:
{
imports = [ inputs.disko.nixosModules.disko ];
};
};
}

View File

@@ -1,15 +0,0 @@
{ modules, ... }:
{
modules.dunst = {
homeManager = {
services.dunst = {
enable = true;
settings = {
global = {
font = "Noto Nerd Font 8";
};
};
};
};
};
}

View File

@@ -1,50 +0,0 @@
{ 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;
};
};
};
};
}

View File

@@ -1,38 +0,0 @@
{
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;
};
};
};
}

View File

@@ -1,8 +0,0 @@
{ den, modules, ... }:
{
modules.common.provides = {
gaming = {
includes = [ modules.steam ];
};
};
}

View File

@@ -1,41 +0,0 @@
{ 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" ];
})
];
};
};
};
};
}

View File

@@ -1,45 +0,0 @@
{ 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, ... }:
{
};
};
};
};
}

View File

@@ -1,34 +0,0 @@
{
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"
];
};
};
};
}

View File

@@ -1,32 +0,0 @@
{ 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;
};
};
};
};
}

View File

@@ -1,196 +0,0 @@
{ 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
};
};
};
};
};
}

View File

@@ -1,62 +0,0 @@
{
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" ];
};
};
};
}

View File

@@ -1,19 +0,0 @@
{ 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;
};
};
};
};
}

View File

@@ -1,152 +0,0 @@
{
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;
};
};
};
};
};
};
}

View File

@@ -1,156 +0,0 @@
{ den, modules, ... }:
{
modules.nix-ld = {
nixos =
{ pkgs, ... }:
{
programs.nix-ld = {
enable = true;
libraries = with pkgs; [
# List by default
zlib
zstd
stdenv.cc.cc
curl
openssl
attr
libssh
bzip2
libxml2
acl
libsodium
util-linux
xz
systemd
# My own additions
xorg.libXcomposite
xorg.libXtst
xorg.libXrandr
xorg.libXext
xorg.libX11
xorg.libXfixes
libGL
libva
pipewire
xorg.libxcb
xorg.libXdamage
xorg.libxshmfence
xorg.libXxf86vm
libelf
# Required
glib
gtk2
# Inspired by steam
# https://github.com/NixOS/nixpkgs/blob/master/pkgs/by-name/st/steam/package.nix#L36-L85
networkmanager
vulkan-loader
libgbm
libdrm
libxcrypt
coreutils
pciutils
zenity
# glibc_multi.bin # Seems to cause issue in ARM
# # Without these it silently fails
xorg.libXinerama
xorg.libXcursor
xorg.libXrender
xorg.libXScrnSaver
xorg.libXi
xorg.libSM
xorg.libICE
gnome2.GConf
nspr
nss
cups
libcap
SDL2
libusb1
dbus-glib
ffmpeg
# Only libraries are needed from those two
libudev0-shim
# needed to run unity
gtk3
icu
libnotify
gsettings-desktop-schemas
# https://github.com/NixOS/nixpkgs/issues/72282
# https://github.com/NixOS/nixpkgs/blob/2e87260fafdd3d18aa1719246fd704b35e55b0f2/pkgs/applications/misc/joplin-desktop/default.nix#L16
# log in /home/leo/.config/unity3d/Editor.log
# it will segfault when opening files if you dont do:
# export XDG_DATA_DIRS=/nix/store/0nfsywbk0qml4faa7sk3sdfmbd85b7ra-gsettings-desktop-schemas-43.0/share/gsettings-schemas/gsettings-desktop-schemas-43.0:/nix/store/rkscn1raa3x850zq7jp9q3j5ghcf6zi2-gtk+3-3.24.35/share/gsettings-schemas/gtk+3-3.24.35/:$XDG_DATA_DIRS
# other issue: (Unity:377230): GLib-GIO-CRITICAL **: 21:09:04.706: g_dbus_proxy_call_sync_internal: assertion 'G_IS_DBUS_PROXY (proxy)' failed
# Verified games requirements
xorg.libXt
xorg.libXmu
libogg
libvorbis
SDL
SDL2_image
glew110
libidn
tbb
# Other things from runtime
flac
freeglut
libjpeg
libpng
libpng12
libsamplerate
libmikmod
libtheora
libtiff
pixman
speex
SDL_image
SDL_ttf
SDL_mixer
SDL2_ttf
SDL2_mixer
libappindicator-gtk2
libdbusmenu-gtk2
libindicator-gtk2
libcaca
libcanberra
libgcrypt
libvpx
librsvg
xorg.libXft
libvdpau
# ...
# Some more libraries that I needed to run programs
pango
cairo
atk
gdk-pixbuf
fontconfig
freetype
dbus
alsa-lib
expat
# for blender
libxkbcommon
libxcrypt-legacy # For natron
libGLU # For natron
fribidi
harfbuzz
libgpg-error
# Appimages need fuse, e.g. https://musescore.org/fr/download/musescore-x86_64.AppImage
fuse
e2fsprogs
];
};
};
};
}

View File

@@ -1,36 +0,0 @@
{ ... }:
{
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"
];
};
};
};
}

View File

@@ -1,280 +0,0 @@
{
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;
};
}
];
};
};
};
};
}

View File

@@ -1,70 +0,0 @@
{ 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" ];
};
};
};
}

View File

@@ -1,19 +0,0 @@
{ den, modules, ... }:
{
modules.auto-cpufreq = {
nixos =
{ ... }:
{
services.auto-cpufreq.settings = {
battery = {
governor = "powersave";
turbo = "never";
};
charger = {
governor = "performance";
turbo = "auto";
};
};
};
};
}

View File

@@ -1,27 +0,0 @@
{ 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";
};
};
};
};
};
}

View File

@@ -1,17 +0,0 @@
{ 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;
};
};
};
}

View File

@@ -1,22 +0,0 @@
{ 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";
};
};
};
}

View File

@@ -1,46 +0,0 @@
{ 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" ];
};
};
};
}

View File

@@ -1,21 +0,0 @@
{ 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";
};
};
};
}

View File

@@ -1,11 +0,0 @@
{ den, modules, ... }:
{
modules.ppd = {
nixos = {
services.power-profiles-daemon.enable = true;
powerManagement = {
cpuFreqGovernor = "schedutil";
};
};
};
}

View File

@@ -1,51 +0,0 @@
{ 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" ];
};
};
};
}

View File

@@ -1,64 +0,0 @@
{ 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;
};
};
};
};
}

View File

@@ -1,18 +0,0 @@
{ 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
];
};
};
};
};
}

View File

@@ -1,22 +0,0 @@
{ 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";
};
};
};
};
}

View File

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

View File

@@ -1,36 +0,0 @@
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
}
}
}

View File

@@ -1,73 +0,0 @@
// 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
}
}
}
}
}
}

View File

@@ -1,26 +0,0 @@
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
}
}
}

View File

@@ -1,20 +0,0 @@
// 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
}
}

View File

@@ -1,109 +0,0 @@
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;
}
}
}

View File

@@ -1,19 +0,0 @@
// 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;
}
}

View File

@@ -1,69 +0,0 @@
// 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;
}
}
}
}
}
}
}

View File

@@ -1 +0,0 @@
/nix/store/ynim9hhkc1smj1h2plrw3ap978dlm3qj-home-manager-files/.config/quickshell/main

View File

@@ -1,11 +0,0 @@
// @ 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 {}
}

View File

@@ -1,19 +0,0 @@
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
}
}

View File

@@ -1,41 +0,0 @@
{
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;
};
};
};
};
}

View File

@@ -1,56 +0,0 @@
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

View File

@@ -1,53 +0,0 @@
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

View File

@@ -1,24 +0,0 @@
{ 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;
};
};
};
};
};
}

View File

@@ -1,42 +0,0 @@
{ 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;
};
};
};
};
};
}

View File

@@ -1,20 +0,0 @@
{
den,
__findFile,
modules,
...
}:
{
# Basic caddy
modules.services.provides.caddy = {
nixos =
{ config, ... }:
{
services.caddy = {
enable = true;
email = "doloroo@proton.me";
enableReload = true;
};
};
};
}

View File

@@ -1,37 +0,0 @@
{
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" ];
};
};
};
};
}

View File

@@ -1,49 +0,0 @@
{
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
'';
};
};
};
}

View File

@@ -1,50 +0,0 @@
{
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;
};
};
};
};
}

View File

@@ -1,24 +0,0 @@
{ den, modules, ... }:
{
modules.ssh = {
homeManager =
{ home, ... }:
{
programs = {
ssh = {
enable = true;
enableDefaultConfig = false;
matchBlocks = {
"*" = {
addKeysToAgent = "yes";
identityFile = [
"~/.ssh/id_ed25519"
"~/.ssh/id_gitea_scug"
];
};
};
};
};
};
};
}

View File

@@ -1,43 +0,0 @@
{
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";
};
};
}

View File

@@ -1,22 +0,0 @@
{ 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
'';
};
};
};
}

View File

@@ -1,18 +0,0 @@
{ 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";
};
};
};
};
};
}

View File

@@ -1,15 +0,0 @@
{ modules, ... }:
{
modules.user.groups =
{ config, user, ... }:
{
nixos = {
users.users.${user.userName} = {
extraGroups = [
"wheel"
"networkmanager"
];
};
};
};
}

View File

@@ -1,93 +0,0 @@
{
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";
}
];
};
};
}
)
];
};
};
}

View File

@@ -1,14 +0,0 @@
{
inputs,
den,
__findFile ? __findFile,
...
}:
{
_module.args.__findFile = den.lib.__findFile;
imports = [
inputs.den.flakeModule
(inputs.den.namespace "modules" true)
# (inputs.den.namespace "hosts" true)
];
}

9
deadlock.patch Normal file

File diff suppressed because one or more lines are too long

1058
flake.lock generated

File diff suppressed because it is too large Load Diff

149
flake.nix
View File

@@ -1,50 +1,145 @@
# You FAGGOT; Do NOT edit this file !!!!, run 'nix run .#write-flake'
{
outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } (inputs.import-tree ./config);
description = "Home Manager configuration of doloro";
inputs = {
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";
};
# Specify the source of Home Manager and Nixpkgs.
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
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"; # config manager, meow'd
hyprland.url = "github:hyprwm/Hyprland";
import-tree.url = "github:vic/import-tree";
niri-flake = {
url = "github:sodiboo/niri-flake";
rsRPC.url = "github:Doloro1978/rsRPC";
quickshell = {
url = "git+https://git.outfoxxed.me/outfoxxed/quickshell";
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";
nikkuss-pkgs = {
url = "git+https://git.scug.io/nikkuss/pkgs";
# 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";
};
disko = {
url = "github:nix-community/disko/latest";
inputs.nixpkgs.follows = "nixpkgs";
};
stylix = {
url = "github:nix-community/stylix";
inputs.nixpkgs.follows = "nixpkgs";
};
zen-browser = {
url = "github:youwen5/zen-browser-flake";
neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
nixvim = {
url = "github:nix-community/nixvim";
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";
};
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 { };
}
)
];
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 = [
(mkHost {
hardware = "doloro";
host = "doloro";
system = "x86_64-linux";
stateVersion = "25.05";
nixpkgsConfig = {
rocmSupport = false;
cudaSupport = true;
};
})
(mkHost {
hardware = "doloro-wsl";
host = "doloro-wsl";
system = "aarch64-linux";
stateVersion = "25.05";
nixpkgsConfig = {
rocmSupport = false;
};
})
(mkHost {
hardware = "doloro-laptop";
host = "doloro-laptop";
system = "x86_64-linux";
stateVersion = "25.11";
nixpkgsConfig = {
rocmSupport = false;
};
})
];
in
(utils.deepMerge configurations);
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,66 @@
{
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";
};
};
};
};
};
};
};
};
};
}

View File

@@ -0,0 +1,29 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
config,
lib,
pkgs,
modulesPath,
...
}:
{
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [
"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;
}

View File

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

View File

@@ -0,0 +1,12 @@
{
lib,
...
}:
{
imports = [
./disks.nix
./hardware-configuration.nix
];
hardware.enableRedistributableFirmware = true;
boot.loader.grub.useOSProber = lib.mkOverride 0 false;
}

View File

@@ -0,0 +1,147 @@
{
inputs,
config,
pkgs,
fetchFromGitHub,
...
}:
{
modules = {
Hyprland.enable = true;
quickshell.enable = true;
# chromium.enable = true;
wivrn.enable = false;
helium.enable = true;
nixvim.enable = true;
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
pavucontrol
lazygit
btop
sops
alcom
gcr
qbittorrent
];
# sops.age.keyFile = "/home/doloro/.config/sops/age/key.txt";
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
home.file = {
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
# # symlink to the Nix store copy.
# ".screenrc".source = dotfiles/screenrc;
# # You can also set the file content immediately.
# ".gradle/gradle.properties".text = ''
# org.gradle.console=verbose
# org.gradle.daemon.idletimeout=3600000
# '';
};
# Home Manager can also manage your environment variables through
# 'home.sessionVariables'. These will be explicitly sourced when using a
# shell provided by Home Manager. If you don't want to manage your shell
# through Home Manager then you have to manually source 'hm-session-vars.sh'
# located at either
#
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# /etc/profiles/per-user/doloro/etc/profile.d/hm-session-vars.sh
#
home.sessionVariables = {
EDITOR = "nvim";
};
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;
};
}

View File

@@ -0,0 +1,33 @@
{ ... }:
let
in
{
services.tlp = {
enable = true;
settings = {
CPU_SCALING_GOVERNOR_ON_BAT = "laptop-battery-powersave";
CPU_SCALING_GOVERNOR_ON_AC = "performance";
PCIE_ASPM_ON_AC = "performance";
PCIE_ASPM_ON_BAT = "laptop-battery-powersave";
START_CHARGE_THRESH_BAT0 = 40; # 40 and below it starts to charge
STOP_CHARGE_THRESH_BAT0 = 80; # 80 and above it stops charging
};
};
# services.tuned.enable = true;
services.thermald.enable = true;
services.upower = {
enable = true;
};
services.logind.settings.Login = {
HandleLidSwitch = "hibernate";
HandleLidSwitchExternalPower = "lock";
HandleLidSwitchDocked = "ignore";
};
# one of "ignore", "poweroff", "reboot", "halt", "kexec", "suspend", "hibernate", "hybrid-sleep", "suspend-then-hibernate", "lock"
powerManagement = {
enable = true;
powertop.enable = true;
};
}

View File

@@ -0,0 +1,177 @@
# 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 = false;
Hyprland.enable = 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
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"
];
};
hardware.graphics = {
enable = true;
extraPackages = with pkgs; [
intel-media-driver # VA-API (iHD) userspace
# 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 = {
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;
# 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;
# 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
];
# 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?
}

123
hosts/doloro-wsl/home.nix Normal file
View File

@@ -0,0 +1,123 @@
{
inputs,
config,
pkgs,
fetchFromGitHub,
...
}:
{
imports = [
# ./modules/hyprland/home.nix
# ./modules/quickshell/home.nix
# ./modules/chromium/home.nix
#./modules/neovim/home.nix
# ./modules/stylix/home.nix
#../../modules/nixvim/home.nix
#../../modules/tmux/home.nix
#../../modules/theme/home.nix
# ./modules/spicetify/home.nix
# ./modules/obs/home.nix
# ./modules/blender/home.nix
#../../modules/fish/home.nix
# ./modules/ytm/home.nix
#../../overlays.nix
];
modules = {
nixvim.enable = true;
tmux.enable = true;
fish.enable = true;
stylix.enable = true;
direnv.enable = true;
git.enable = true;
};
# Home Manager needs a bit of information about you and the paths it should
# manage.
home.username = "doloro";
home.homeDirectory = "/home/doloro";
# This value determines the Home Manager release that your configuration is
# compatible with. This helps avoid breakage when a new Home Manager release
# introduces backwards incompatible changes.
#
# You should not change this value, even if you update Home Manager. If you do
# want to update the value, then make sure to first check the Home Manager
# release notes.
home.stateVersion = "25.05"; # Please read the comment before changing.
services.gpg-agent = {
enable = true;
pinentry = {
package = pkgs.pinentry-qt;
program = "pinentry-qt";
};
};
# The home.packages option allows you to install Nix packages into your
# environment.
home.packages = with pkgs; [
hello
# vim
# telegram-desktop
# vesktop
# spotify
# pavucontrol
lazygit
sops
];
# sops.age.keyFile = "/home/doloro/.config/sops/age/key.txt";
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
home.file = {
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
# # symlink to the Nix store copy.
# ".screenrc".source = dotfiles/screenrc;
# # You can also set the file content immediately.
# ".gradle/gradle.properties".text = ''
# org.gradle.console=verbose
# org.gradle.daemon.idletimeout=3600000
# '';
};
# Home Manager can also manage your environment variables through
# 'home.sessionVariables'. These will be explicitly sourced when using a
# shell provided by Home Manager. If you don't want to manage your shell
# through Home Manager then you have to manually source 'hm-session-vars.sh'
# located at either
#
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# /etc/profiles/per-user/doloro/etc/profile.d/hm-session-vars.sh
#
home.sessionVariables = {
EDITOR = "nvim";
};
# {{{{{ TODO Put in different file
# }}}}}
# Let Home Manager install and manage itself.
programs = {
home-manager.enable = true;
ssh = {
enable = true;
enableDefaultConfig = false;
matchBlocks = {
"*" = {
addKeysToAgent = "yes";
identityFile = [
"~/.ssh/id_github"
"~/.ssh/id_gitea_scug_io"
"~/.ssh/id_ed25519"
];
};
};
};
};
}

View File

@@ -0,0 +1,59 @@
{
inputs,
pkgs,
lib,
user,
...
}:
{
modules = {
fish.enable = true;
stylix.enable = true;
};
imports = [
inputs.nixos-wsl.nixosModules.default
];
# rocmSupport = false;
programs = {
dconf.enable = true;
ssh = {
startAgent = true;
};
};
fonts = {
enableDefaultPackages = true;
packages = with pkgs; [
nerd-fonts.jetbrains-mono
material-design-icons
material-symbols
googlesans-code
# (inputs.font-patcher.lib.patchFont {
# font = pkgs.googlesans-code;
# name = "Google Sans Code Nerd Font";
# })
nerd-fonts.caskaydia-cove
nerd-fonts.noto
noto-fonts-cjk-sans
noto-fonts-cjk-serif
];
fontDir.enable = true;
};
networking.dhcpcd.enable = lib.mkOverride 0 false;
boot.loader.grub.enable = lib.mkOverride 0 false;
wsl = {
enable = true;
defaultUser = user;
docker-desktop.enable = false;
useWindowsDriver = true;
startMenuLaunchers = true;
usbip.enable = true;
};
nix.settings = {
experimental-features = "nix-command flakes";
};
nixpkgs.config.allowUnsupportedSystem = true;
systemd.services."user-runtime-dir@" = {
overrideStrategy = "asDropin";
unitConfig.ConditionPathExists = "!/run/user/%i";
};
}

144
hosts/doloro/home.nix Normal file
View File

@@ -0,0 +1,144 @@
{
inputs,
config,
pkgs,
fetchFromGitHub,
...
}:
{
# imports = [
# ../../modules/hyprland/home.nix
# ../../modules/quickshell/home.nix
# ../../modules/chromium/home.nix
# #./modules/neovim/home.nix
# ../../modules/stylix/home.nix
# ../../modules/nixvim/home.nix
# ../../modules/tmux/home.nix
# ../../modules/theme/home.nix
# # ./modules/spicetify/home.nix
# ../../modules/obs/home.nix
# ../../modules/blender/home.nix
# ../../modules/fish/home.nix
# ../../modules/ytm/home.nix
# ../../overlays.nix
# ];
modules = {
Hyprland = {
enable = true;
suspend-on-hibernate = true;
};
quickshell.enable = true;
# chromium.enable = true;
wivrn.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;
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
# (pkgs.discord.override { withVencord = true; })
# webcord-vencord
# spotify
pavucontrol
lazygit
btop
sops
alcom
gcr
qbittorrent
];
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;
};
}

309
hosts/doloro/nixos.nix Normal file
View File

@@ -0,0 +1,309 @@
# 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;
wivrn.enable = true;
fonts.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"
];
trusted-public-keys = [
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"pkgs:+sRbfiZMMX5R3PuAPtIRz/emowDoGZNpozibrnrAvuc="
];
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 = {
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;
};
# Load nvidia driver for Xorg and Wayland
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;
extraConfig = "AddKeysToAgent yes";
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"
]; # 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
];
# 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
meow.txt Normal file
View File

@@ -0,0 +1 @@
age1e6vws55p0g23qzthm4qa93hpt6lqmck6670gkygph0sc0j7my4uq5wqjfh

View File

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

38
modules/blender/home.nix Normal file
View File

@@ -0,0 +1,38 @@
{
config,
lib,
inputs,
pkgs,
home,
system,
...
}:
let
blenderPkgs = inputs.nix-warez.packages.${system};
cfg = config.modules.blender;
blender_4_5 = pkgs.blender.overrideAttrs (
final: prev: {
pname = "blender";
version = "4.5.0";
src = pkgs.fetchzip {
name = "source";
url = "https://download.blender.org/source/blender-${final.version}.tar.xz";
hash = "sha256-DNVZUZpysCyB/Xt8yB352gO+UK8Cd4aDFGYuUDKyIrs=";
};
patches = [ ];
}
);
in
{
options.modules.blender = {
enable = lib.mkEnableOption "Blender configuration module";
};
# whole blender config including addons is too fat to include here
config = lib.mkIf cfg.enable {
home.packages = [
blender_4_5
];
};
# nix'ing a blender config is most likely not possible
# could probs install blender addons through nix since they are fat fat mega fat to install TODO
}

View File

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

25
modules/bottles/home.nix Normal file
View File

@@ -0,0 +1,25 @@
{
config,
lib,
inputs,
pkgs,
home,
system,
...
}:
let
cfg = config.modules.bottles;
in
{
options.modules.bottles = {
enable = lib.mkEnableOption "Blender configuration module";
};
# whole bottles config including addons is too fat to include here
config = lib.mkIf cfg.enable {
home.packages = [
pkgs.bottles
];
};
# nix'ing a bottles config is most likely not possible
# could probs install bottles addons through nix since they are fat fat mega fat to install TODO
}

View File

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

38
modules/chromium/home.nix Normal file
View File

@@ -0,0 +1,38 @@
{
config,
lib,
inputs,
pkgs,
system,
...
}:
let
cfg = config.modules.chromium;
in
{
options.modules.chromium = {
enable = lib.mkEnableOption "Chromium";
};
config = lib.mkIf cfg.enable {
programs.chromium = {
enable = true;
extensions = [
{ id = "ghmbeldphafepmbegfdlkpapadhbakde"; } # ProtonPass
#{ id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; } # Ublok
{ id = "ddkjiahejlhfcafbddmgiahcphecmpfh"; } # Ublock lite
{ id = "kpmjjdhbcfebfjgdnpjagcndoelnidfj"; } # Control panel for twitter
{ id = "aighbdamfnndbemigjcbkdklkegkgmpl"; } # Better twitter embeds
{ id = "enamippconapkdmgfgjchkhakpfinmaj"; } # DeArrow
{ id = "bjcnpgekponkjpincbcoflgkdomldlnl"; } # Website Blocker
];
package = pkgs.chromium.override { enableWideVine = true; };
};
xdg.mimeApps.defaultApplications = {
"text/html" = "chromium.desktop";
"x-scheme-handler/http" = "chromium.desktop";
"x-scheme-handler/https" = "chromium.desktop";
"x-scheme-handler/about" = "chromium.desktop";
"x-scheme-handler/unknown" = "chromium.desktop";
};
};
}

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