moved config

This commit is contained in:
2026-02-07 19:08:58 +00:00
parent 7d793c45dc
commit 3c57067a6f
188 changed files with 1171 additions and 7291 deletions

7
config/defaults.nix Normal file
View File

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

11
config/dendritic.nix Normal file
View File

@@ -0,0 +1,11 @@
{ inputs, lib, ... }:
{
imports = [
inputs.flake-file.flakeModules.dendritic
inputs.den.flakeModules.dendritic
];
flake-file.do-not-edit = "You FAGGOT; Do NOT edit this file !!!!, run 'nix run .#write-flake' ";
flake-file.outputs = lib.mkForce ''
inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } (inputs.import-tree ./config)
'';
}

View File

@@ -0,0 +1,70 @@
{
modules,
__findFile,
...
}:
{
den.aspects.desktop = {
includes = [ modules.disko ];
nixos =
{ lib, ... }:
{
disko.devices = {
disk = {
main = {
device = lib.mkDefault "/dev/disk/by-id/nvme-CT1000P2SSD8_2221E632CD1F";
type = "disk";
content = {
type = "gpt";
partitions = {
boot = {
name = "boot";
size = "1M";
type = "EF02";
};
ESP = {
name = "ESP";
priority = 1;
size = "4G";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
mountOptions = [ "umask=0077" ];
};
};
root = {
size = "100%";
content = {
type = "btrfs";
extraArgs = [ "-f" ]; # Override existing partition
# Subvolumes must set a mountpoint in order to be mounted,
# unless their parent is mounted
subvolumes = {
# Subvolume name is different from mountpoint
"@" = {
mountpoint = "/";
};
# Subvolume name is the same as the mountpoint
"@home" = {
mountpoint = "/home";
};
# Parent is not mounted so the mountpoint must be set
"@nix" = {
mountpoint = "/nix";
};
"@blackhole" = {
mountpoint = "/var/blackhole";
};
};
};
};
};
};
};
};
};
};
};
}

View File

@@ -0,0 +1,24 @@
{
den,
__findFile,
modules,
...
}:
{
den.aspects.doloro-desktop = {
includes = [
<den/primary-user>
den.aspects.doloro-shared
modules.sops
modules.fish
];
nixos =
{ config, pkgs, ... }:
{
users.users.doloro = {
shell = pkgs.fish;
hashedPasswordFile = config.sops.secrets."doloro-hashed_password".path;
};
};
};
}

View File

@@ -0,0 +1,98 @@
{
den,
modules,
pkgs,
__findFile,
...
}:
{
den.aspects.desktop = {
includes = [
modules.nix
modules.hyprland
];
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 = 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"
];
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"
];
};
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

@@ -0,0 +1,15 @@
{ den, modules, ... }:
{
den.aspects.doloro-shared = {
includes = [
modules.nixvim
modules.nix
];
homeManager = {
home = {
username = "doloro";
homeDirectory = "/home/doloro";
};
};
};
}

View File

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

View File

@@ -0,0 +1,25 @@
{
den,
__findFile,
modules,
...
}:
{
den.aspects.doloro-laptop = {
includes = [
<den/primary-user>
den.aspects.doloro-shared
modules.user.doloro
modules.sops
modules.fish
];
nixos =
{ config, pkgs, ... }:
{
users.users.doloro = {
shell = pkgs.fish;
hashedPasswordFile = config.sops.secrets."doloro-hashed_password".path;
};
};
};
}

View File

@@ -0,0 +1,169 @@
{
den,
modules,
__findFile,
...
}:
{
den.aspects.laptop = {
includes = [
modules.nix
];
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
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.mutableUsers = false;
services.system76-scheduler.enable = true;
# programs.firefox.enable = true;
# List packages installed in system profile.
# You can use https://search.nixos.org/ to find more packages (and options).
# environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
# git
# wget
# # tlp-pd
# brightnessctl
# nvtopPackages.intel
# seahorse
# ];
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# Copy the NixOS configuration file and link it from the resulting system
# (/run/current-system/configuration.nix). This is useful in case you
# accidentally delete configuration.nix.
# This option defines the first version of NixOS you have installed on this particular machine,
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
#
# Most users should NEVER change this value after the initial install, for any reason,
# even if you've upgraded your system to a new NixOS release.
#
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
# to actually do that.
#
# This value being lower than the current NixOS release does NOT mean your system is
# out of date, out of support, or vulnerable.
#
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
# and migrated your data accordingly.
#
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
system.stateVersion = "25.11"; # Did you read the comment?
};
};
}

24
config/hosts/root.nix Normal file
View File

@@ -0,0 +1,24 @@
{ den, __findFile, ... }:
{
# 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 = {
includes = [ <modules/user/groups> ];
aspect = "doloro-desktop";
};
};
# TODO
# den.hosts.x86_64-linux.laptop = {
# users.doloro = {
# aspect = "doloro-laptop";
# };
# };
}

10
config/inputs.nix Normal file
View File

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

14
config/modules/disko.nix Normal file
View File

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

13
config/modules/dunst.nix Normal file
View File

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

44
config/modules/fish.nix Normal file
View File

@@ -0,0 +1,44 @@
{ modules, pkgs, ... }:
{
modules.fish = {
nixos = {
programs.fish.enable = true;
};
homeManager = {
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 = [ ];
};
};
};
};
}

View File

@@ -0,0 +1,46 @@
{
modules,
inputs,
...
}:
{
flake-file.inputs = {
hyprland.url = "github:hyprwm/Hyprland";
};
modules.hyprland = {
nixos =
{ pkgs, ... }:
{
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;
};
xdg.portal = {
enable = true;
# extraPortals = [ pkgs.xdg-desktop-portal-cosmic ];
};
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, ... }:
{
wayland.windowManager.hyprland = {
enable = true;
systemd.variables = [ "--all" ];
};
};
};
}

View File

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

34
config/modules/nix.nix Normal file
View File

@@ -0,0 +1,34 @@
{ ... }:
{
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"
];
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="
];
experimental-features = [
"flakes"
"nix-command"
];
trusted-users = [
"doloro"
];
};
};
};
}

View File

@@ -0,0 +1,278 @@
{
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
];
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 = true;
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
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

@@ -0,0 +1,38 @@
{ 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 = ./secrets.yaml;
};
};
nixos = {
imports = [
inputs.sops-nix.nixosModules.sops
];
sops = {
age.keyFile = "/etc/ssh/ssh_host_ed25519_key";
defaultSopsFile = ./secrets.yaml;
secrets = {
root-hashed_password = {
neededForUsers = true;
};
doloro-hashed_password = {
neededForUsers = true;
};
};
};
};
};
}

18
config/modules/tmux.nix Normal file
View File

@@ -0,0 +1,18 @@
{ pkgs, modules, ... }:
{
modules.tmux = {
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

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

14
config/namespace.nix Normal file
View File

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

File diff suppressed because one or more lines are too long

1461
flake.lock generated

File diff suppressed because it is too large Load Diff

199
flake.nix
View File

@@ -1,195 +1,34 @@
# You FAGGOT; Do NOT edit this file !!!!, run 'nix run .#write-flake'
{ {
description = "Home Manager configuration of doloro";
outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } (inputs.import-tree ./config);
inputs = { inputs = {
# Specify the source of Home Manager and Nixpkgs. den.url = "github:vic/den";
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; disko.url = "github:nix-community/disko";
rpi-nixpkgs.url = "github:nvmd/nixpkgs/modules-with-keys-25.11"; flake-aspects.url = "github:vic/flake-aspects";
flake-file.url = "github:vic/flake-file";
flake-parts = {
inputs.nixpkgs-lib.follows = "nixpkgs-lib";
url = "github:hercules-ci/flake-parts";
};
home-manager = { home-manager = {
inputs.nixpkgs.follows = "nixpkgs";
url = "github:nix-community/home-manager"; url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
}; };
nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
nix-meow.url = "git+https://git.scug.io/nikkuss/nix-meow.git?ref=paws"; # config manager, meow'd
hyprland.url = "github:hyprwm/Hyprland"; hyprland.url = "github:hyprwm/Hyprland";
rsRPC.url = "github:Doloro1978/rsRPC"; import-tree.url = "github:vic/import-tree";
protonhax.url = "github:linusfri/protonhax-nix"; nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
hytale-launcher.url = "github:JPyke3/hytale-launcher-nix"; nixpkgs-lib.follows = "nixpkgs";
quickshell = { nixvim = {
url = "git+https://git.outfoxxed.me/outfoxxed/quickshell";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; url = "github:nix-community/nixvim";
heliumFlake = {
url = "github:vikingnope/helium-browser-nix-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
nikkuss-pkgs = {
url = "git+https://git.scug.io/nikkuss/pkgs";
# inputs.nixpkgs.follows = "nixpkgs";
};
zen-browser = {
url = "github:0xc000022070/zen-browser-flake";
inputs = {
# IMPORTANT: we're using "libgbm" and is only available in unstable so ensure
# to have it up-to-date or simply don't specify the nixpkgs input
nixpkgs.follows = "nixpkgs";
home-manager.follows = "home-manager";
};
}; };
sops-nix = { sops-nix = {
inputs.nixpkgs.follows = "nixpkgs";
url = "github:Mic92/sops-nix"; url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
}; };
disko = { systems.url = "github:nix-systems/default";
url = "github:nix-community/disko/latest";
inputs.nixpkgs.follows = "nixpkgs";
};
stylix = {
url = "github:nix-community/stylix";
inputs.nixpkgs.follows = "nixpkgs";
};
neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
nixvim = {
url = "github:nix-community/nixvim";
inputs.nixpkgs.follows = "nixpkgs";
};
spicetify-nix = {
url = "github:Gerg-L/spicetify-nix";
};
nix-warez = {
# Blender-bin
url = "github:edolstra/nix-warez?dir=blender";
};
nixpkgs-gamescope = {
url = "github:Nixos/nixpkgs?rev=8fcb6f1c4948305af52d19f887b89011ee2c080d";
};
font-patcher.url = "github:Doloro1978/nix-nerd-fonts-patcher";
nixos-raspberrypi.url = "github:nvmd/nixos-raspberrypi/develop";
raspberry-pi-nix.url = "github:nix-community/raspberry-pi-nix";
niri-flake.url = "github:sodiboo/niri-flake";
}; };
outputs =
inputs@{
nixpkgs,
home-manager,
nix-meow,
...
}:
let
overlays = [
# inputs.nikkuss-pkgs.overlays.default
(final: prev: {
arrpc = prev.arrpc.overrideAttrs (preve: rec {
pname = preve.pname + "-meow";
version = "94d3ec81";
patches = [ ./deadlock.patch ];
src = prev.fetchFromGitHub {
owner = "XenHat";
repo = "arrpc";
# branch = "improved-detection-fixes";
rev = "94d3ec81339f94e563af512b83db369596d05d3b";
sha256 = "sha256-DI/HCrmiQo1lPkErCNXOpdQli2wua03PDjdlERrpxTg=";
};
npmDepsHash = prev.lib.fakeHash;
npmDeps = final.fetchNpmDeps {
inherit src;
name = "${pname}-${version}-npm-deps";
hash = "sha256-lw6pngFC2Pnk+I8818TOTwN4r+8IsjvdMYIyTsTi49g=";
};
});
})
# (
# final: prev:
# let
# system = prev.stdenv.hostPlatform.system;
# pkgs_gamescope = import inputs.nixpkgs-gamescope {
# inherit system;
# config = {
# allow_unfree = true;
# };
# };
# packageNix = "${inputs.nixpkgs-gamescope}/pkgs/by-name/ga/gamescope/package.nix";
# in
# {
# gamescope = pkgs_gamescope.callPackage packageNix { };
# }
# )
(self: super: {
intel-npu-driver = super.intel-npu-driver.overrideAttrs (oldAttrs: rec {
installPhase = ''
mkdir -p $out/lib/firmware
${oldAttrs.installPhase}
'';
});
})
(final: prev: {
vesktop = prev.vesktop.overrideAttrs (old: {
preBuild = ''
cp -r ${prev.electron.dist} electron-dist
chmod -R u+w electron-dist
'';
buildPhase = ''
runHook preBuild
pnpm build
pnpm exec electron-builder \
--dir \
-c.asarUnpack="**/*.node" \
-c.electronDist="electron-dist" \
-c.electronVersion=${prev.electron.version}
runHook postBuild
'';
});
})
];
utils = nix-meow.lib.setup {
inherit (inputs) home-manager nixpkgs;
inherit inputs;
flakeRoot = ./.;
hostsFolder = ./hosts;
hardwaresFolder = ./hardwares;
modulesFolder = ./modules;
globalConfig = {
allowUnfree = true;
};
globalOverlays = overlays;
defaultUser = "doloro";
};
inherit (utils) mkHost;
configurations = [
# Desktops
(mkHost {
hardware = "doloro";
host = "doloro";
system = "x86_64-linux";
stateVersion = "25.05";
nixpkgsConfig = {
rocmSupport = false;
cudaSupport = true;
};
})
(mkHost {
hardware = "doloro-laptop";
host = "doloro-laptop";
system = "x86_64-linux";
stateVersion = "25.11";
nixpkgsConfig = {
rocmSupport = false;
};
})
# Servers
(mkHost {
hardware = "rpi-5";
host = "rpi-5";
system = "aarch64-linux";
# nixpkgs = inputs.rpi-nixpkgs;
stateVersion = "25.11";
nixpkgsConfig = {
rocmSupport = false;
};
})
];
in
(utils.deepMerge configurations);
} }

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,66 +0,0 @@
{
lib,
inputs,
...
}:
{
imports = [
inputs.disko.nixosModules.disko
];
disko.devices = {
disk = {
main = {
device = lib.mkDefault "/dev/disk/by-id/nvme-CT1000P2SSD8_2221E632CD1F";
type = "disk";
content = {
type = "gpt";
partitions = {
boot = {
name = "boot";
size = "1M";
type = "EF02";
};
ESP = {
name = "ESP";
priority = 1;
size = "4G";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
mountOptions = [ "umask=0077" ];
};
};
root = {
size = "100%";
content = {
type = "btrfs";
extraArgs = [ "-f" ]; # Override existing partition
# Subvolumes must set a mountpoint in order to be mounted,
# unless their parent is mounted
subvolumes = {
# Subvolume name is different from mountpoint
"@" = {
mountpoint = "/";
};
# Subvolume name is the same as the mountpoint
"@home" = {
mountpoint = "/home";
};
# Parent is not mounted so the mountpoint must be set
"@nix" = {
mountpoint = "/nix";
};
"@blackhole" = {
mountpoint = "/var/blackhole";
};
};
};
};
};
};
};
};
};
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,159 +0,0 @@
{
inputs,
config,
system,
pkgs,
fetchFromGitHub,
...
}:
{
imports = [
inputs.sops-nix.homeManagerModules.sops
];
sops = {
age.keyFile = "/home/doloro/.config/sops/age/key.txt"; # must have no password!
};
modules = {
Hyprland.enable = true;
quickshell.enable = true;
# chromium.enable = true;
wivrn.enable = false;
helium.enable = true;
sops.enable = true;
wakatime.enable = false;
# remoteBuild.use-remote-builders = true;
nixvim.enable = true;
zen-browser.enable = false;
kitty.enable = true;
helix.enable = false;
stylix.enable = true;
tmux.enable = true;
theme.enable = true;
obs = {
enable = true;
autostart = false;
};
blender.enable = false;
bottles.enable = false;
fish.enable = true;
youtube-music.enable = true;
unityhub.enable = false;
direnv.enable = true;
git.enable = true;
rsRPC.enable = true;
};
# Home Manager needs a bit of information about you and the paths it should
# manage.
home.username = "doloro";
home.homeDirectory = "/home/doloro";
services = {
gpg-agent = {
enable = true;
pinentry = {
package = pkgs.pinentry-qt;
program = "pinentry-qt";
};
};
arrpc = {
enable = false;
};
};
xdg.mimeApps.enable = true;
wayland.windowManager.hyprland.settings = {
monitor = [
"eDP-1, 2880x1800@120, 0x0, 2"
];
input = {
kb_layout = "gb";
follow_mouse = 2;
sensitivity = 0;
};
};
# This value determines the Home Manager release that your configuration is
# compatible with. This helps avoid breakage when a new Home Manager release
# introduces backwards incompatible changes.
#
# You should not change this value, even if you update Home Manager. If you do
# want to update the value, then make sure to first check the Home Manager
# release notes.
home.stateVersion = "25.05"; # Please read the comment before changing.
# The home.packages option allows you to install Nix packages into your
# environment.
home.packages = with pkgs; [
hello
vim
telegram-desktop
# vesktop
legcord
pavucontrol
lazygit
btop
sops
alcom
gcr
qbittorrent
intel-gpu-tools
];
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
home.file = {
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
# # symlink to the Nix store copy.
# ".screenrc".source = dotfiles/screenrc;
# # You can also set the file content immediately.
# ".gradle/gradle.properties".text = ''
# org.gradle.console=verbose
# org.gradle.daemon.idletimeout=3600000
# '';
};
# Home Manager can also manage your environment variables through
# 'home.sessionVariables'. These will be explicitly sourced when using a
# shell provided by Home Manager. If you don't want to manage your shell
# through Home Manager then you have to manually source 'hm-session-vars.sh'
# located at either
#
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# /etc/profiles/per-user/doloro/etc/profile.d/hm-session-vars.sh
#
home.sessionVariables = {
EDITOR = "nvim";
};
services = {
dunst = {
enable = true;
};
};
xdg.configFile."mimeapps.list".force = true;
# Let Home Manager install and manage itself.
programs = {
ssh = {
enable = true;
enableDefaultConfig = false;
matchBlocks = {
"*" = {
addKeysToAgent = "yes";
identityFile = [
"~/.ssh/id_ed25519"
"~/.ssh/id_gitea_scug"
];
};
};
};
home-manager.enable = true;
};
}

View File

@@ -1,148 +0,0 @@
{ pkgs, lib, ... }:
let
batt-gpu = pkgs.writeShellScript "batt-igpu" ''
${pkgs.intel-gpu-tools}/bin/intel_gpu_frequency -e
echo "800" > /sys/class/drm/card1/gt_boost_freq_mhz
'';
ac-gpu = pkgs.writeShellScript "ac-igpu" ''
${pkgs.intel-gpu-tools}/bin/intel_gpu_frequency -d
echo "2350" > /sys/class/drm/card1/gt_boost_freq_mhz
'';
in
{
services.tlp = {
enable = true;
settings = {
# Wireless power saving
WIFI_PWR_ON_BAT = "1";
# USB autosuspend
USB_AUTOSUSPEND = "1";
# SATA drive power management
SATA_LINKPWR_ON_BAT = "min_power";
# PCI Express Active-State Power Management (ASPM)
PCIE_ASPM_ON_BAT = "powersupersave";
RUNTIME_PM_ON_AC = "on";
RUNTIME_PM_ON_BAT = "auto";
# Disable Bluetooth on battery
# DEVICES_TO_DISABLE_ON_BAT = "bluetooth";
# Restore brightness on battery
RESTORE_BRIGHTNESS_ON_BAT = "1";
PCIE_ASPM_ON_AC = "balanced";
DEVICES_TO_DISABLE_ON_BAT_NOT_IN_USE = "bluetooth";
INTEL_GPU_MAX_FREQ_ON_AC = 0;
INTEL_GPU_MAX_FREQ_ON_BAT = 800;
INTEL_GPU_BOOST_FREQ_ON_AC = 0;
INTEL_GPU_BOOST_FREQ_ON_BAT = 800;
CPU_MAX_PERF_ON_BAT = 50;
PLATFORM_PROFILE_ON_AC = "balanced";
PLATFORM_PROFILE_ON_BAT = "quiet";
STOP_CHARGE_THRESH_BAT0 = 80;
};
};
services.thermald.enable = true;
services.upower = {
enable = true;
};
services.auto-cpufreq.enable = true;
systemd.targets = {
"ac" = {
description = "On AC power";
unitConfig = {
StopWhenUnneeded = "yes";
};
};
"battery" = {
description = "On battery power";
unitConfig = {
StopWhenUnneeded = "yes";
};
};
};
services.udev.extraRules = ''
SUBSYSTEM=="power_supply",ENV{POWER_SUPPLY_ONLINE}=="0", RUN+="/run/current-system/systemd/bin/systemctl start battery.target"
SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="1", RUN+="/run/current-system/systemd/bin/systemctl start ac.target"
'';
services.auto-cpufreq.settings = {
battery = {
governor = "powersave";
turbo = "never";
};
charger = {
governor = "performance";
turbo = "auto";
};
};
boot.kernelParams = [
# "mem_sleep_default=deep"
# "i915.fastboot=1"
"pcie_aspm=force"
"ahci.mobile_lpm_policy=1"
];
services.logind.settings.Login = {
HandleLidSwitch = "suspend";
HandleLidSwitchExternalPower = "suspend";
HandleLidSwitchDocked = "ignore";
};
systemd.sleep.extraConfig = ''
HibernateDelaySec=30min
SuspendEstimationSec=120
'';
systemd.services.gpu-limit-on-batt = {
enable = true;
description = "Using rfkill; disable all rf devices before sleeping.";
before = [ "battery.target" ];
serviceConfig = {
Type = "oneshot";
ExecStart = "${batt-gpu}";
RemainAfterExit = true;
};
wantedBy = [ "battery.target" ];
partOf = [ "battery.target" ];
};
systemd.services.gpu-limit-on-ac = {
enable = true;
description = "Using rfkill; disable all rf devices before sleeping.";
before = [ "ac.target" ];
serviceConfig = {
Type = "oneshot";
ExecStart = "${ac-gpu}";
RemainAfterExit = true;
};
wantedBy = [ "ac.target" ];
partOf = [ "ac.target" ];
};
systemd.services.rfkill-sleep-wake = {
enable = true;
description = "Using rfkill; disable all rf devices before sleeping.";
before = [ "sleep.target" ];
serviceConfig = {
Type = "oneshot";
ExecStop = "${pkgs.utillinux}/bin/rfkill unblock all";
ExecStart = "${pkgs.utillinux}/bin/rfkill block all";
RemainAfterExit = true;
};
wantedBy = [ "sleep.target" ];
partOf = [ "sleep.target" ];
};
# one of "ignore", "poweroff", "reboot", "halt", "kexec", "suspend", "hibernate", "hybrid-sleep", "suspend-then-hibernate", "lock"
powerManagement = {
enable = true;
# powertop.enable = true;
};
}

View File

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

View File

@@ -1,132 +0,0 @@
{
inputs,
config,
pkgs,
fetchFromGitHub,
...
}:
{
modules = {
hyfetch.enable = true;
Hyprland = {
enable = true;
suspend-on-hibernate = true;
};
niri.enable = false;
quickshell.enable = true;
# chromium.enable = true;
wivrn.enable = true;
sops.enable = true;
helium.enable = true;
nixvim.enable = true;
helix.enable = false;
stylix.enable = true;
kitty.enable = true;
tmux.enable = true;
theme.enable = true;
obs = {
enable = true;
autostart = true;
};
blender.enable = true;
zen-browser.enable = false;
bottles.enable = true;
fish.enable = true;
youtube-music.enable = true;
unityhub.enable = true;
direnv.enable = true;
git.enable = true;
rsRPC.enable = true;
};
# Home Manager needs a bit of information about you and the paths it should
# manage.
home.username = "doloro";
home.homeDirectory = "/home/doloro";
wayland.windowManager.hyprland.settings = {
monitor = [
"HDMI-A-1, 1920x1080@60, 0x0, 1"
"DP-3, 1920x1080@144, 1920x0, 1"
];
exec-once = [
"hyprctl dispatch workspace 2" # shit solution to get quickshell on the right monitor
];
workspace = [
"name:2, monitor:DP-3"
];
input = {
kb_layout = "gb";
follow_mouse = 2;
sensitivity = -0.5;
};
};
services = {
gpg-agent = {
enable = true;
pinentry = {
package = pkgs.pinentry-qt;
program = "pinentry-qt";
};
};
arrpc = {
enable = false;
};
};
xdg.mimeApps.enable = true;
# This value determines the Home Manager release that your configuration is
# compatible with. This helps avoid breakage when a new Home Manager release
# introduces backwards incompatible changes.
#
# You should not change this value, even if you update Home Manager. If you do
# want to update the value, then make sure to first check the Home Manager
# release notes.
home.stateVersion = "25.05"; # Please read the comment before changing.
# The home.packages option allows you to install Nix packages into your
# environment.
home.packages = with pkgs; [
hello
vim
telegram-desktop
vesktop
(inputs.protonhax.packages.x86_64-linux.default)
pavucontrol
lazygit
btop
sops
protontricks
alcom
gcr
qbittorrent
(inputs.hytale-launcher.packages.x86_64-linux.default)
];
home.sessionVariables = {
EDITOR = "nvim";
};
services = {
dunst = {
enable = true;
};
};
xdg.configFile."mimeapps.list".force = true;
programs = {
ssh = {
enable = true;
enableDefaultConfig = false;
matchBlocks = {
"*" = {
addKeysToAgent = "yes";
identityFile = [
"~/.ssh/id_ed25519"
"~/.ssh/id_gitea_scug"
];
};
};
};
home-manager.enable = true;
};
}

View File

@@ -1,321 +0,0 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page, on
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
{
config,
inputs,
lib,
pkgs,
nix-meow,
...
}:
let
sops = inputs.sops-nix;
in
{
imports = [
inputs.sops-nix.nixosModules.sops
];
modules = {
fish.enable = true;
greetd.enable = true;
stylix.enable = true;
steam.enable = true;
Hyprland.enable = true;
niri.enable = false;
wivrn.enable = true;
remoteBuild.become-remote-builder = true;
fonts.enable = true;
};
services.resolved.enable = true;
services.gnome.gnome-keyring.enable = true;
# Use the systemd-boot EFI boot loader.
boot.loader.grub.enable = true;
boot.loader.grub.device = "nodev";
boot.loader.grub.devices = [
"/dev/disk/by-id/nvme-CT1000P2SSD8_2221E632CD1F"
"nodev"
];
#boot.loader.efi.canTouchEfiVariables = true;
boot.loader.grub.efiSupport = true;
boot.loader.grub.efiInstallAsRemovable = true;
nix.settings = {
substituters = [
"https://nix-community.cachix.org"
"https://cache.nixos.org/"
"https://attic.scug.io/pkgs"
"https://cache.nixos-cuda.org"
"https://niri.cachix.org"
];
trusted-public-keys = [
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"pkgs:+sRbfiZMMX5R3PuAPtIRz/emowDoGZNpozibrnrAvuc="
"cache.nixos-cuda.org:74DUi4Ye579gUqzH4ziL9IyiJBlDpMRn9MBN8oNan9M="
"niri.cachix.org-1:Wv0OmO7PsuocRKzfDoJ3mulSl7Z6oezYhGhR+3W2964="
];
experimental-features = [
"flakes"
"nix-command"
];
trusted-users = [
"doloro"
];
};
networking.hostName = "doloroo-main"; # Define your hostname.
boot.kernelPackages = pkgs.linuxPackages_latest;
# Enable "Silent boot"
boot.consoleLogLevel = 3;
boot.initrd.verbose = false;
boot.kernelParams = [
"quiet"
"splash"
"boot.shell_on_fail"
"udev.log_priority=3"
"rd.systemd.show_status=auto"
];
# Hide the OS choice for bootloaders.
# It's still possible to open the bootloader list by pressing any key
# It will just not appear on screen unless a key is pressed
boot.loader.timeout = 0;
nixpkgs.config.allowUnfree = true;
# Configure network connections interactively with nmcli or nmtui.
networking.networkmanager.enable = true;
networking.firewall.enable = false;
security.rtkit.enable = true;
sops = {
# age.keyFile = "/etc/ssh/ssh_host_ed25519_key";
defaultSopsFile = builtins.toPath "${nix-meow.flakeRoot}/secrets/users.yaml";
secrets = {
root-hashed_password = {
neededForUsers = true;
};
doloro-hashed_password = {
neededForUsers = true;
};
};
};
# Set your time zone.
time.timeZone = "Europe/London";
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Select internationalisation properties.
# i18n.defaultLocale = "en_US.UTF-8";
# console = {
# font = "Lat2-Terminus16";
# keyMap = "us";
# useXkbConfig = true; # use xkb.options in tty.
# };
# Enable the X11 windowing system.
# services.xserver.enable = true;
# Enable OpenGL
hardware.graphics = {
enable = true;
};
services.xserver.videoDrivers = [ "nvidia" ];
fileSystems."/mnt/2tb" = {
device = "/dev/disk/by-uuid/0f49aec7-4af2-4f4f-b475-3f4fad2b59c2";
fsType = "ext4";
options = [
# If you don't have this options attribute, it'll default to "defaults"
# boot options for fstab. Search up fstab mount options you can use
"defaults"
"users" # Allows any user to mount and unmount
"nofail" # Prevent system from failing if this drive doesn't mount
"exec"
];
};
boot.plymouth = {
enable = true;
theme = "rings";
themePackages = with pkgs; [
# By default we would install all themes
(adi1090x-plymouth-themes.override {
selected_themes = [ "rings" ];
})
];
};
hardware.nvidia = {
# Modesetting is required.
modesetting.enable = true;
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
# Enable this if you have graphical corruption issues or application crashes after waking
# up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead
# of just the bare essentials.
powerManagement.enable = true;
# Fine-grained power management. Turns off GPU when not in use.
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
powerManagement.finegrained = false;
# prime.offload.enable = true;
# Use the NVidia open source kernel module (not to be confused with the
# independent third-party "nouveau" open source driver).
# Support is limited to the Turing and later architectures. Full list of
# supported GPUs is at:
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
# Only available from driver 515.43.04+
open = false;
# Enable the Nvidia settings menu,
# accessible via `nvidia-settings`.
nvidiaSettings = true;
# Optionally, you may need to select the appropriate driver version for your specific GPU.
package = config.boot.kernelPackages.nvidiaPackages.latest;
};
# fonts = {
# enableDefaultPackages = true;
# packages =
# with pkgs;
# [
# nerd-fonts.jetbrains-mono
# material-design-icons
# material-symbols
# googlesans-code
# nerd-fonts.caskaydia-cove
# nerd-fonts.noto
# noto-fonts-cjk-sans
# noto-fonts-cjk-serif
# ]
# ++ [
# (inputs.font-patcher.lib.patchFont {
# font = "${pkgs.googlesans-code}/share/fonts/googlesans-code/GoogleSansCode[wght].ttf";
# name = "Google Sans Code Nerd Font";
# inherit system;
# })
# ];
# fontDir.enable = true;
# };
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
programs.nix-ld.enable = true;
programs.nix-ld.libraries = with pkgs; [
fuse
libusb1
libGL
harfbuzz
];
# Configure keymap in X11
# services.xserver.xkb.layout = "us";
# services.xserver.xkb.options = "eurosign:e,caps:escape";
# Enable CUPS to print documents.
# services.printing.enable = true;
# Enable sound.
# services.pulseaudio.enable = true;
# OR
services.pipewire = {
enable = true;
pulse.enable = true;
};
programs = {
ssh = {
# enable = true;
# startAgent = true;
};
fish.enable = true;
};
# Enable touchpad support (enabled default in most desktopManager).
# services.libinput.enable = true;
services.openssh = {
enable = true;
settings = {
PasswordAuthentication = true;
};
};
users.users.doloro = {
isNormalUser = true;
shell = pkgs.fish;
extraGroups = [
"wheel"
"dialout"
"networkmanager"
]; # Enable sudo for the user.
packages = with pkgs; [
tree
];
};
users.mutableUsers = false;
users.users.doloro.hashedPasswordFile = config.sops.secrets."doloro-hashed_password".path;
# users.users.root.hashedPasswordFile = config.sops.secrets."root-hashed_password".path;
users.users.root.initialPassword = "root";
# programs.firefox.enable = true;
# List packages installed in system profile.
# You can use https://search.nixos.org/ to find more packages (and options).
environment.systemPackages = with pkgs; [
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
wget
killall
sops
seahorse
];
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
# services.openssh.enable = true;
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# Copy the NixOS configuration file and link it from the resulting system
# (/run/current-system/configuration.nix). This is useful in case you
# accidentally delete configuration.nix.
# system.copySystemConfiguration = true;
# This option defines the first version of NixOS you have installed on this particular machine,
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
#
# Most users should NEVER change this value after the initial install, for any reason,
# even if you've upgraded your system to a new NixOS release.
#
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
# to actually do that.
#
# This value being lower than the current NixOS release does NOT mean your system is
# out of date, out of support, or vulnerable.
#
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
# and migrated your data accordingly.
#
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
system.stateVersion = "25.11"; # Did you read the comment?
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,38 +0,0 @@
{
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 = [
blenderPkgs.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

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

View File

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

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,7 +0,0 @@
_:
builtins.listToAttrs (
map (fn: {
name = fn;
value = import ./${fn} { };
}) (builtins.filter (fn: fn != "default.nix") (builtins.attrNames (builtins.readDir ./.)))
)

View File

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

View File

@@ -1,21 +0,0 @@
{
pkgs,
lib,
config,
...
}:
let
cfg = config.modules.direnv;
in
{
options.modules.direnv = {
enable = lib.mkEnableOption "direnv";
};
config = lib.mkIf cfg.enable {
programs.direnv = {
enable = true;
# enableBashIntegration = true; # see note on other shells below
nix-direnv.enable = true;
};
};
}

View File

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

View File

@@ -1,54 +0,0 @@
{
config,
lib,
pkgs,
hostname,
nix-meow,
fetchFromGitHub,
system,
...
}:
let
cfg = config.modules.fish;
in
{
options.modules.fish = {
enable = lib.mkEnableOption "Fish";
};
config = lib.mkIf cfg.enable {
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 .#${hostname}-${system} --log-format internal-json -v &| nom --json'
alias hms 'home-manager switch --flake .#${hostname}-${system} --log-format internal-json -v &| nom --json'
'';
plugins = [
{
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 = [ ];
};
};
};
}

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,31 +0,0 @@
{ config, lib, ... }:
let
cfg = config.modules.git;
in
{
options.modules.git = {
enable = lib.mkEnableOption "git";
};
config.programs = lib.mkIf cfg.enable {
git = {
enable = true;
settings = {
user = {
name = "Doloro1978";
email = "doloroo@proton.me";
signingKey = "089B373588540877";
};
commit = {
gpgSign = true;
};
pull = {
rebase = true;
};
};
};
gpg = {
enable = true;
};
};
}

View File

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

View File

@@ -1,36 +0,0 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.modules.greetd;
tuigreet = "${pkgs.tuigreet}/bin/tuigreet";
in
{
options.modules.greetd = {
enable = lib.mkEnableOption "Greetd configuration module";
};
config = lib.mkIf cfg.enable {
services.greetd = {
enable = true;
settings = {
default_session = {
command = "${tuigreet} --time --remember --cmd start-hyprland";
user = "greeter";
};
};
};
systemd.services.greetd.serviceConfig = {
Type = "idle";
StandardInput = "tty";
StandardOutput = "tty";
StandardError = "journal";
TTYReset = true;
TTYVHangup = true;
TTYVTDisallocate = true;
};
};
}

View File

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

View File

@@ -1,26 +0,0 @@
{
config,
lib,
inputs,
pkgs,
system,
...
}:
let
cfg = config.modules.helium;
# packageNix = "${inputs.nixpkgs-gamescope}/pkgs/by-name/he/helium-browser/package.nix";
in
{
options.modules.helium = {
enable = lib.mkEnableOption "helium";
};
config = lib.mkIf cfg.enable {
home.packages = [
inputs.heliumFlake.packages.x86_64-linux.helium
];
# 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"}'';
};
};
}

View File

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

View File

@@ -1,25 +0,0 @@
{
config,
lib,
inputs,
pkgs,
home,
system,
...
}:
let
cfg = config.modules.helix;
in
{
options.modules.helix = {
enable = lib.mkEnableOption "Blender configuration module";
};
# whole bottles config including addons is too fat to include here
config = lib.mkIf cfg.enable {
programs.helix = {
enable = true;
};
};
# 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

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

View File

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

View File

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

View File

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

View File

@@ -1,133 +0,0 @@
{
inputs,
config,
lib,
pkgs,
...
}:
let
cfg = config.modules.Hyprland;
suspend = pkgs.writeShellScript "hyprland_suspend" ''
#!/bin/bash
case "$1" in
suspend)
killall -STOP Hyprland
;;
resume)
killall -CONT Hyprland
;;
esac
'';
in
{
imports = [
./settings.nix
./runner.nix
./screenshot.nix
];
options.modules.Hyprland = {
enable = lib.mkEnableOption "Hyprland";
suspend-on-hibernate = lib.mkEnableOption "soh";
};
# TODO, split this into its own module;
config = lib.mkIf cfg.enable {
wayland.windowManager.hyprland = {
enable = true;
# set the flake package
# settings = { };
systemd.variables = [ "--all" ];
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
portalPackage =
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
};
programs = {
hyprlock = {
enable = true;
};
wlogout = {
enable = true;
layout = [
{
"label" = "lock";
"action" = "hyprlock";
"text" = "Lock";
"keybind" = "l";
}
{
"label" = "hibernate";
"action" = "systemctl hibernate";
"text" = "Hibernate";
"keybind" = "h";
}
{
"label" = "logout";
"action" = "uwsm stop";
"text" = "Logout";
"keybind" = "e";
}
{
# TODO add hypr shutdown
"label" = "shutdown";
"action" = "systemctl poweroff";
"text" = "Shutdown";
"keybind" = "s";
}
{
"label" = "suspend";
"action" = "systemctl suspend";
"text" = "Suspend";
"keybind" = "u";
}
{
"label" = "reboot";
"action" = "systemctl reboot";
"text" = "Reboot";
"keybind" = "r";
}
];
};
};
systemd.user.services."hyprland_suspend" = lib.mkIf cfg.suspend-on-hibernate {
Unit = {
Description = "Suspend hyprland";
Before = [
"systemd-suspend.service"
"systemd-hibernate.service"
"nvidia-suspend.service"
"nvidia-hibernate.service"
];
};
Install = {
WantedBy = [
"systemd-suspend.service"
"systemd-hibernate.service"
];
};
Service = {
Type = "oneshot";
ExecStart = "${suspend} suspend";
};
};
systemd.user.services."hyprland_resume" = {
Unit = {
Description = "Resume hyprland";
After = [
"systemd-suspend.service"
"systemd-hibernate.service"
"nvidia-resume.service"
];
};
Install = {
WantedBy = [
"systemd-suspend.service"
"systemd-hibernate.service"
];
};
Service = {
Type = "oneshot";
ExecStart = "${suspend} resume";
};
};
};
}

View File

@@ -1,44 +0,0 @@
{
inputs,
pkgs,
lib,
config,
...
}:
let
cfg = config.modules.Hyprland;
pkgs-unstable = inputs.hyprland.inputs.nixpkgs.legacyPackages.${pkgs.stdenv.hostPlatform.system};
in
{
options.modules.Hyprland = {
enable = lib.mkEnableOption "Hyprland";
};
config = lib.mkIf cfg.enable {
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;
};
xdg.portal = {
enable = true;
extraPortals = with pkgs; [ xdg-desktop-portal-gtk ];
};
environment.sessionVariables.NIXOS_OZONE_WL = "1";
nix.settings = {
substituters = [ "https://hyprland.cachix.org" ];
trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ];
};
hardware.graphics = {
package = pkgs-unstable.mesa;
# if you also want 32-bit support (e.g for Steam)
# enable32Bit = true;
# package32 = pkgs-unstable.pkgsi686Linux.mesa;
};
};
}

View File

@@ -1,41 +0,0 @@
{ inputs, pkgs, ... }:
let
config = pkgs.writeTextFile {
name = "config";
text = ''
width = 100%
height = 100%
border-width = 0
outline-width = 0
padding-left = 35%
padding-top = 35%
result-spacing = 25
num-results = 5
font = monospace
background-color = #000A
'';
};
script = pkgs.writeShellScript "mreow" ''
exec $(tofi-drun -c ${config})
'';
in
{
home.packages = [
pkgs.tofi
];
wayland.windowManager.hyprland.settings = {
bind = [
"$mainMod, R, exec, ${script}"
];
};
# systemd.user.services.hyprlauncher-deamon = {
# Install = {
# WantedBy = [ "hyprland-session.target" ];
# };
# Service = {
# ExecStart = "${pkgs.writeShellScript "watch-store" ''
# hyprlauncher -d
# ''}";
# };
# };
}

View File

@@ -1,13 +0,0 @@
{ inputs, pkgs, ... }:
let
in
{
home.packages = with pkgs; [
wl-clipboard
wayfreeze
grim
slurp
killall
];
}

View File

@@ -1,164 +0,0 @@
{
inputs,
pkgs,
config,
...
}:
let
base16 = config.modules.base16;
in
{
home.packages = [
pkgs.hyprcursor
pkgs.rose-pine-cursor
];
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;
};
};
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 = [
"$mainMod, C, killactive"
"$mainMod, M, exec, uwsm stop"
"$mainMod, E, exec, $fileManager"
"$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, fullscreen true"
"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,4 +0,0 @@
_: {
nixos = ./nixos.nix;
home = ./home.nix;
}

View File

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

View File

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

View File

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

View File

@@ -1,158 +0,0 @@
{
config,
lib,
inputs,
pkgs,
home,
system,
...
}:
let
cfg = config.modules.niri;
in
{
imports = [ inputs.niri-flake.homeModules.niri ];
options.modules.niri = {
enable = lib.mkEnableOption "niri configuration module";
};
config = lib.mkIf cfg.enable {
# nixpkgs.overlays = [ inputs.niri-flake.overlays.niri ];
gtk.enable = lib.mkForce false;
home.packages = with pkgs; [ kickoff ];
programs = {
niri = {
enable = true;
# package = pkgs.niri-unstable;
settings = {
input = {
keyboard = {
xkb = {
layout = "gb";
};
numlock = true;
};
};
outputs = {
DP-3 = {
# Philips Consumer Electronics Company PHL 272E1GZ UK02101011104
mode = {
width = 1920;
height = 1080;
refresh = 165.0;
};
focus-at-startup = true;
variable-refresh-rate = true;
};
HDMI-A-1 = {
position = {
x = -1920;
y = 0;
};
scale = 1;
};
};
binds = {
# Navigation
"Mod+Shift+WheelScrollDown" = {
hotkey-overlay.title = "Workspace Down";
cooldown-ms = 150;
action.focus-workspace-down = [ ];
};
"Mod+Shift+WheelScrollUp" = {
hotkey-overlay.title = "Workspace Up";
cooldown-ms = 150;
action.focus-workspace-up = [ ];
};
"Mod+WheelScrollUp" = {
hotkey-overlay.title = "Workspace Left";
action.focus-column-right = [ ];
};
"Mod+WheelScrollDown" = {
hotkey-overlay.title = "Workspace Right";
action.focus-column-left = [ ];
};
"Super+Tab" = {
hotkey-overlay.title = "Overview";
action.toggle-overview = [ ];
};
# --
# Utility
"Super+S" = {
action.screenshot = [ ];
};
"Super+C" = {
action.close-window = [ ];
};
"Super+L" = {
action.spawn = "wlogout";
};
# Program Spawning
"Mod+T".action.spawn = "helium";
"Mod+R".action.spawn = "kickoff";
"Mod+Q".action.spawn = "kitty";
# --
};
window-rules = [
{
matches = [ ];
geometry-corner-radius = {
bottom-left = 3.0;
bottom-right = 3.0;
top-left = 3.0;
top-right = 3.0;
};
clip-to-geometry = true;
draw-border-with-background = false;
focus-ring.width = 2;
}
];
xwayland-satellite = {
enable = true;
};
};
};
wlogout = {
enable = true;
layout = [
{
"label" = "lock";
"action" = "hyprlock";
"text" = "Lock";
"keybind" = "l";
}
{
"label" = "hibernate";
"action" = "systemctl hibernate";
"text" = "Hibernate";
"keybind" = "h";
}
{
"label" = "logout";
"action" = "loginctl terminate-user $USER";
"text" = "Logout";
"keybind" = "e";
}
{
# TODO add hypr shutdown
"label" = "shutdown";
"action" = "systemctl poweroff";
"text" = "Shutdown";
"keybind" = "s";
}
{
"label" = "suspend";
"action" = "systemctl suspend";
"text" = "Suspend";
"keybind" = "u";
}
{
"label" = "reboot";
"action" = "systemctl reboot";
"text" = "Reboot";
"keybind" = "r";
}
];
};
};
};
}

View File

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

View File

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

View File

@@ -1,250 +0,0 @@
{
config,
inputs,
pkgs,
lib,
...
}:
let
cfg = config.modules.nixvim;
in
{
options.modules.nixvim = {
enable = lib.mkEnableOption "Nixvim";
};
imports = [
inputs.nixvim.homeModules.nixvim
./plugins
];
extraPackages = with pkgs; [
# formatters
nixfmt
rustfmt
# misc
ripgrep
# misc
nixd
];
config.programs.nixvim = lib.mkIf cfg.enable {
enable = true;
defaultEditor = true;
colorschemes.gruvbox-material.enable = true;
performance.byteCompileLua = {
enable = true;
plugins = true;
nvimRuntime = true;
luaLib = true;
configs = true;
};
plugins = {
todo-comments.enable = true;
lsp-status.enable = true;
transparent.enable = true;
lsp = {
enable = true;
servers = {
qmlls = {
enable = true;
config = {
cmd = "-E";
};
};
rust_analyzer = {
enable = true;
installCargo = false;
installRustc = false;
};
nixd = {
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 = true;
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
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,25 +0,0 @@
{ ... }:
{
programs.nixvim = {
plugins = {
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";
};
};
};
};
};
}

View File

@@ -1,5 +0,0 @@
_: {
imports = [
./conform.nix
];
}

View File

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

View File

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

View File

@@ -1,69 +0,0 @@
{
inputs,
config,
lib,
pkgs,
...
}:
let
cfg = config.modules.obs;
in
{
options.modules.obs = {
enable = lib.mkEnableOption "obs";
autostart = lib.mkEnableOption "autostart with reply";
};
config = lib.mkIf cfg.enable {
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.pw-discordaudio-virtual-device = {
Install = {
WantedBy = [ "hyprland-session.target" ];
};
Service = {
ExecStart = "${pkgs.writeShellScript "discord_audio_virt_device" ''
#!/run/current-system/sw/bin/bash
pw-loopback -m '[ FL FR]' --capture-props='media.class=Audio/Sink node.name=DiscordSink' -n DiscordSink
''}";
};
};
systemd.user.services.pw-gameaudio-virtual-device = {
Install = {
WantedBy = [ "hyprland-session.target" ];
};
Service = {
ExecStart = "${pkgs.writeShellScript "game_audio_virt_device" ''
#!/run/current-system/sw/bin/bash
pw-loopback -m '[ FL FR]' --capture-props='media.class=Audio/Sink node.name=GameAudioSink' -n GameAudioSink
''}";
};
};
systemd.user.services.obs-autostart = lib.mkIf cfg.autostart {
Unit = {
Description = "OBS daemon";
After = [ "hyprland-session.target" ];
};
Install = {
WantedBy = [ "default.target" ];
};
Service = {
# wait for hyprland to start
ExecStart = "${config.programs.obs-studio.finalPackage}/bin/obs --startreplaybuffer";
Restart = "on-failure";
RestartSec = "5s";
};
};
};
}

View File

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

View File

@@ -1,36 +0,0 @@
{
inputs,
nix-meow,
config,
lib,
pkgs,
system,
...
}:
let
pkg = inputs.quickshell.packages.${system}.quickshell;
cfg = config.modules.quickshell;
in
{
options.modules.quickshell = {
enable = lib.mkEnableOption "quickshell configuration module";
};
config.xdg.configFile."quickshell" = lib.mkIf cfg.enable {
recursive = true;
source = config.lib.file.mkOutOfStoreSymlink /home/doloro/dotfiles/modules/quickshell/quickshell;
};
config.systemd.user.services.quickshell = lib.mkIf cfg.enable {
Unit = {
Description = "Quickshell daemon";
After = [ "hyprland-session.target" ];
};
Install = {
WantedBy = [ "default.target" ];
};
Service = {
ExecStart = "${pkgs.quickshell}/bin/quickshell";
Restart = "on-failure";
RestartSec = "5s";
};
};
}

View File

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

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