Compare commits
51 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
1f4f716de1
|
|||
|
d05b4a8483
|
|||
|
14fb9504a7
|
|||
|
0a7e26455d
|
|||
|
4da3b6c50f
|
|||
|
0c6b788345
|
|||
|
9c38e07741
|
|||
|
d42ad4b44f
|
|||
|
8f311cc4ba
|
|||
|
8742e5a58f
|
|||
|
c072c583d1
|
|||
|
ca0486baff
|
|||
|
2b7d77972b
|
|||
|
0fb5245525
|
|||
|
8ec7b3429f
|
|||
|
d8f593c9f0
|
|||
|
2359a79c14
|
|||
|
5ba041b778
|
|||
|
d7eec2970b
|
|||
|
cf18e8c975
|
|||
|
0842e518cc
|
|||
|
6de7c0ca67
|
|||
|
acb6fb1677
|
|||
|
e45cc182ee
|
|||
|
86feb4e601
|
|||
|
ff1629ad1f
|
|||
|
b93c1ad6aa
|
|||
|
a9e3deea08
|
|||
|
e1b14b3e07
|
|||
|
2a8f29f35f
|
|||
|
b92586122e
|
|||
|
e72f3c8dd9
|
|||
|
3b0d0e45e3
|
|||
|
ffdf1c7e69
|
|||
|
02c8529c83
|
|||
|
d486fa170b
|
|||
|
7d3a5ba4fa
|
|||
|
6c609e2fa6
|
|||
|
140f47649c
|
|||
|
212af403dc
|
|||
|
1e8337e380
|
|||
|
6b8e08fb7a
|
|||
|
1977e912ee
|
|||
|
d53bba8961
|
|||
|
93ef68a998
|
|||
|
74cadc4f69
|
|||
|
5e83cc9863
|
|||
|
0545039d39
|
|||
|
15c48c0ed3
|
|||
|
49624c8bd1
|
|||
|
9b9a34f708
|
@@ -0,0 +1,111 @@
|
|||||||
|
# Doloro's Dotfiles
|
||||||
|
|
||||||
|
NixOS dotfiles managed via **flake-parts** + **den** (custom flake framework). Multi-host: desktop, laptop, WSL, RPi5 server.
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
```
|
||||||
|
dotfiles/
|
||||||
|
├── flake.nix # Entry point: `outputs = inputs.flake-parts.lib.mkFlake { inherit inputs; } (inputs.import-tree ./config);`
|
||||||
|
├── .sops.yaml # Age-encrypted secrets (6 keys: desktop/laptop user+system, rpi5)
|
||||||
|
├── config/
|
||||||
|
│ ├── dendritic.nix # Root config import
|
||||||
|
│ ├── inputs.nix # Flake input definitions
|
||||||
|
│ ├── namespace.nix # Namespace setup
|
||||||
|
│ ├── defaults.nix # Default values
|
||||||
|
│ ├── hosts/
|
||||||
|
│ │ ├── computers.nix # desktop (x86_64), laptop (aarch64), wsl (aarch64), doloro-bootable
|
||||||
|
│ │ ├── servers.nix # rpi5 (aarch64)
|
||||||
|
│ │ └── aspects/ # Host-specific configurations
|
||||||
|
│ │ ├── doloro-shared.nix # Common to all doloro hosts (nixvim, tmux, git, ssh, hyfetch)
|
||||||
|
│ │ ├── doloro-desktop/ # Desktop-specific (disko, hardware, home, host)
|
||||||
|
│ │ ├── doloro-laptop/ # Laptop-specific (disko, hardware, home, host, power-management)
|
||||||
|
│ │ ├── doloro-wsl/ # WSL-specific (home, host)
|
||||||
|
│ │ ├── doloro-bootable/ # Bootable USB (home, host)
|
||||||
|
│ │ └── servers/rpi5.nix # Raspberry Pi 5
|
||||||
|
│ └── modules/ # Reusable configuration modules
|
||||||
|
│ ├── ai/ # AI tools (pi-coding-agent, OpenMeteo)
|
||||||
|
│ ├── gaming/ # Steam, gamemode, gamepad
|
||||||
|
│ ├── hyprland/ # Window manager
|
||||||
|
│ ├── niri/ # Alternative WM
|
||||||
|
│ ├── nixvim/ # Neovim config
|
||||||
|
│ ├── power-management/ # TLP, auto-cpufreq, battery targets
|
||||||
|
│ ├── secrets/ # SOPS-managed secrets
|
||||||
|
│ ├── services/ # Caddy, DDNS, Home Assistant, Traefik, RTMP
|
||||||
|
│ └── ...
|
||||||
|
```
|
||||||
|
|
||||||
|
## Hosts
|
||||||
|
|
||||||
|
| Host | Arch | Type | Key Modules |
|
||||||
|
| ------ | ------ | ------ | ------------- |
|
||||||
|
| `desktop` | x86_64 | NixOS + HM | Hyprland, gaming, disko, full stack |
|
||||||
|
| `laptop` | aarch64 | NixOS + HM | Power management, Hyprland |
|
||||||
|
| `wsl` | aarch64 | NixOS | WSL setup |
|
||||||
|
| `doloro-bootable` | x86_64 | NixOS | Bootable USB recovery |
|
||||||
|
| `rpi5` | aarch64 | NixOS | Server, no GUI |
|
||||||
|
|
||||||
|
## Key Tools & Stack
|
||||||
|
|
||||||
|
- **Window Manager**: Hyprland (primary), Niri (alternative)
|
||||||
|
- **Editor**: Nixvim (Neovim) — Gruvbox Material, LSP (rust-analyzer, nixd, tsserver), Treesitter, Lualine, Telescope, LazyGit
|
||||||
|
- **Shell**: Fish
|
||||||
|
- **AI**: Pi Coding Agent v0.81.1 (LiteLLM via `scuggo` proxy)
|
||||||
|
- Models: meow (litellm), claude-opus-4-8, gpt-5.5, gpt-5.4-mini (recap/title)
|
||||||
|
- Skills: pi-lens, pi-lean-ctx, pi-vitals, pi-spark, pi-caveman, pi-pretty, pi-context-engineering
|
||||||
|
- **Terminal**: Kitty
|
||||||
|
- **Browser**: Zen Browser, Helium
|
||||||
|
- **Music**: Spicetify (Spotify)
|
||||||
|
- **Aurora**: Stylix (themes), NixOS-Hardware
|
||||||
|
- **Container**: Podman
|
||||||
|
- **Flatpak**: nix-flatpak
|
||||||
|
- **Secrets**: SOPS + Age (6 keys for desktop/laptop user+system, rpi5)
|
||||||
|
- **Nerd Fonts**: Custom patched (Doloro1978/nix-nerd-fonts-patcher)
|
||||||
|
|
||||||
|
## Conventions
|
||||||
|
|
||||||
|
1. **Never edit `flake.nix` directly** — run `nix run .#write-flake` to regenerate
|
||||||
|
2. **Secrets** live in `config/modules/secrets/` — encrypted via SOPS age keys in `.sops.yaml`
|
||||||
|
3. **Modules** are modular: split by concern (ai, gaming, hyprland, power-management, services)
|
||||||
|
4. **Hosts** split into `computers.nix` and `servers.nix` — each host gets `aspect` references
|
||||||
|
5. **Shared config** lives in `doloro-shared.nix` — imported by all doloro hosts
|
||||||
|
6. **Disko** handles disk layouts for desktop/laptop
|
||||||
|
7. **Power management** is laptop-specific: TLP, auto-cpufreq, battery AC targets, Intel GPU, TDP
|
||||||
|
8. **CachyOS kernel** available as module for desktop
|
||||||
|
|
||||||
|
## Common Operations
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Apply configuration
|
||||||
|
sudo nixos-rebuild switch --flake .#desktop
|
||||||
|
|
||||||
|
# Home Manager (doloro user)
|
||||||
|
home-manager switch --flake .#doloro-desktop
|
||||||
|
|
||||||
|
# Update flake inputs
|
||||||
|
nix flake update
|
||||||
|
|
||||||
|
# Write regenerated flake.nix
|
||||||
|
nix run .#write-flake
|
||||||
|
|
||||||
|
# Encrypt a secret
|
||||||
|
nix run .#sops-encrypt <file>
|
||||||
|
|
||||||
|
# Enter development shell
|
||||||
|
nix develop
|
||||||
|
```
|
||||||
|
|
||||||
|
## Important Notes
|
||||||
|
|
||||||
|
- `allowUnfree = true` globally for proprietary packages (Steam, Spotify, etc.)
|
||||||
|
- Multiple cachix substitutes configured for speed (hyprland, nix-community, niri, raspberrypi, cuda)
|
||||||
|
- Pi coding agent uses `scuggo` LiteLLM proxy at `https://9f5db439.fwds.scug.io`
|
||||||
|
- API key via env var `$SCUG_IO_API_KEY`
|
||||||
|
- WSL host uses `nixos-wsl` flake input
|
||||||
|
- RPi5 uses `nixos-raspberrypi` and `raspberry-pi-nix`
|
||||||
|
|
||||||
|
## File Rules
|
||||||
|
|
||||||
|
- `.gitignore`: exclude `nix/result`, `result`, `nvim`, `tmux/plugins`, `modules/quickshell/quickshell/.qmlls.ini`
|
||||||
|
- `.new` file exists (empty) — likely a marker
|
||||||
|
- `.claude/` directory present (Claude Code config)
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
den,
|
||||||
|
modules,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
den.aspects.doloro-bootable = {
|
||||||
|
includes = [
|
||||||
|
<den/primary-user>
|
||||||
|
den.aspects.doloro-shared
|
||||||
|
modules.nixvim
|
||||||
|
];
|
||||||
|
homeManager = {
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
btrfs-progs
|
||||||
|
chntpw
|
||||||
|
ddrescue
|
||||||
|
fd
|
||||||
|
gpart
|
||||||
|
ntfs3g
|
||||||
|
parted
|
||||||
|
ranger
|
||||||
|
rsync
|
||||||
|
testdisk
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
{ den, modules, ... }:
|
||||||
|
{
|
||||||
|
den.aspects.doloro-bootable = {
|
||||||
|
nixos = {
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
networking.hostName = "doloro-recovery";
|
||||||
|
networking.networkmanager.enable = true;
|
||||||
|
services.openssh.enable = true;
|
||||||
|
|
||||||
|
boot.loader.grub.enable = true;
|
||||||
|
boot.loader.grub.device = "/dev/sda";
|
||||||
|
boot.loader.grub.efiSupport = true;
|
||||||
|
boot.loader.grub.efiInstallAsRemovable = true;
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [
|
||||||
|
"ata_piix"
|
||||||
|
"uhci_hcd"
|
||||||
|
"ehci_pci"
|
||||||
|
"xen_blkfront"
|
||||||
|
"sr_mod"
|
||||||
|
"nvme"
|
||||||
|
"virtio_pci"
|
||||||
|
"virtio_scsi"
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "/dev/disk/by-label/nixos";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
btrfs-progs
|
||||||
|
btop
|
||||||
|
chntpw
|
||||||
|
ddrescue
|
||||||
|
e2fsprogs
|
||||||
|
fastfetch
|
||||||
|
fd
|
||||||
|
gpart
|
||||||
|
git
|
||||||
|
ntfs3g
|
||||||
|
parted
|
||||||
|
pavucontrol
|
||||||
|
pciutils
|
||||||
|
ranger
|
||||||
|
rsync
|
||||||
|
testdisk
|
||||||
|
util-linux
|
||||||
|
wl-clipboard
|
||||||
|
];
|
||||||
|
|
||||||
|
users.users.doloro = {
|
||||||
|
isNormalUser = true;
|
||||||
|
group = "doloro";
|
||||||
|
extraGroups = [ "wheel" "networkmanager" ];
|
||||||
|
initialPassword = "recovery";
|
||||||
|
};
|
||||||
|
|
||||||
|
users.groups.doloro = {};
|
||||||
|
|
||||||
|
security.sudo.wheelNeedsPassword = false;
|
||||||
|
|
||||||
|
services.getty.autologinUser = "doloro";
|
||||||
|
systemd.services."getty@tty1".enable = false;
|
||||||
|
systemd.services."autovt@tty1".enable = false;
|
||||||
|
|
||||||
|
services.xserver.enable = false;
|
||||||
|
|
||||||
|
system.stateVersion = "25.11";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -11,17 +11,22 @@
|
|||||||
<den/primary-user>
|
<den/primary-user>
|
||||||
den.aspects.doloro-shared
|
den.aspects.doloro-shared
|
||||||
modules.sops
|
modules.sops
|
||||||
|
modules.flatpaks
|
||||||
|
modules.gamemode
|
||||||
modules.hyprland
|
modules.hyprland
|
||||||
modules.fish
|
modules.fish
|
||||||
modules.tuigreet
|
modules.tuigreet
|
||||||
modules.kitty
|
modules.kitty
|
||||||
|
modules.nikpkgs
|
||||||
modules.fonts
|
modules.fonts
|
||||||
|
modules.unity
|
||||||
<modules/hyprland/doloro-settings>
|
<modules/hyprland/doloro-settings>
|
||||||
(modules.obs {
|
(modules.obs {
|
||||||
audio = true;
|
audio = true;
|
||||||
autostart = true;
|
autostart = true;
|
||||||
})
|
})
|
||||||
<modules/common/gaming>
|
<modules/common/gaming>
|
||||||
|
modules.hytale-launcher
|
||||||
# modules.helium
|
# modules.helium
|
||||||
(<modules/helium> {
|
(<modules/helium> {
|
||||||
default = true;
|
default = true;
|
||||||
@@ -31,32 +36,56 @@
|
|||||||
modules.quickshell
|
modules.quickshell
|
||||||
modules.nix-ld
|
modules.nix-ld
|
||||||
modules.spotify
|
modules.spotify
|
||||||
modules.easyeffects
|
# modules.easyeffects
|
||||||
modules.lavd
|
# modules.lavd
|
||||||
modules.ai
|
modules.ai
|
||||||
<modules/ai/ollama-cuda>
|
modules.pi-coding
|
||||||
|
# modules.omp
|
||||||
|
modules.podman
|
||||||
|
# <modules/ai/ollama-cuda>
|
||||||
];
|
];
|
||||||
nixos =
|
nixos =
|
||||||
{ config, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
{
|
{
|
||||||
users.users.doloro = {
|
users.users.doloro = {
|
||||||
shell = pkgs.fish;
|
shell = pkgs.fish;
|
||||||
hashedPasswordFile = config.sops.secrets."doloro-hashed_password".path;
|
hashedPasswordFile = config.sops.secrets."doloro-hashed_password".path;
|
||||||
|
extraGroups = [
|
||||||
|
"libvirtd"
|
||||||
|
"gamemode"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
# Register GSettings schemas so GTK/GLib apps (orca-slicer) can find
|
||||||
|
# them; without this GLib aborts with "No GSettings schemas are
|
||||||
|
# installed on the system" on non-GNOME desktops.
|
||||||
|
programs.dconf.enable = true;
|
||||||
|
virtualisation.libvirtd.enable = false;
|
||||||
|
# virtualisation.waydroid.enable = true;
|
||||||
|
# # Newer kernel versions may need
|
||||||
|
# virtualisation.waydroid.package = pkgs.waydroid-nftables;
|
||||||
|
programs.virt-manager.enable = false;
|
||||||
};
|
};
|
||||||
homeManager =
|
homeManager =
|
||||||
{ home, pkgs, ... }:
|
{
|
||||||
|
home,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
{
|
{
|
||||||
wayland.windowManager.hyprland.settings = {
|
wayland.windowManager.hyprland.settings = {
|
||||||
monitor = [
|
monitor = [
|
||||||
"HDMI-A-1, 1920x1080@60, 0x0, 1"
|
"HDMI-A-1, 1920x1080@60, 0x0, 1"
|
||||||
"DP-3, 1920x1080@144, 1920x0, 1"
|
"DP-2, 1920x1080@120, 1920x0, 1"
|
||||||
];
|
];
|
||||||
exec-once = [
|
exec-once = [
|
||||||
"hyprctl dispatch workspace 2" # shit solution to get quickshell on the right monitor
|
"hyprctl dispatch workspace 2" # shit solution to get quickshell on the right monitor
|
||||||
];
|
];
|
||||||
workspace = [
|
workspace = [
|
||||||
"name:2, monitor:DP-3"
|
"name:2, monitor:DP-2"
|
||||||
];
|
];
|
||||||
input = {
|
input = {
|
||||||
kb_layout = "gb";
|
kb_layout = "gb";
|
||||||
@@ -70,11 +99,53 @@
|
|||||||
obsidian
|
obsidian
|
||||||
# pear-desktop
|
# pear-desktop
|
||||||
prismlauncher
|
prismlauncher
|
||||||
deadlock-mod-manager
|
# deadlock-mod-manager
|
||||||
gamescope
|
inputs.nik-pkgs.packages.x86_64-linux.grimoire
|
||||||
|
# gamescope
|
||||||
android-studio
|
android-studio
|
||||||
|
blender
|
||||||
|
qbittorrent
|
||||||
|
mpv
|
||||||
|
krita
|
||||||
|
# (tetrio-desktop.override { withTetrioPlus = true; })
|
||||||
|
# bottles
|
||||||
|
# pi-coding-agent
|
||||||
|
# orca-slicer's wrapGAppsHook does not actually wrap the installed
|
||||||
|
# binary, so neither the GSettings schema path nor the NVIDIA/zink
|
||||||
|
# workaround env from `withNvidiaGLWorkaround` reach the process.
|
||||||
|
# Wrap it ourselves: prepend the gtk3 + gsettings-desktop schema dirs
|
||||||
|
# to XDG_DATA_DIRS (fixes "No GSettings schemas are installed on the
|
||||||
|
# system") and set the zink GL workaround explicitly.
|
||||||
|
(pkgs.symlinkJoin {
|
||||||
|
name = "orca-slicer";
|
||||||
|
paths = [ (pkgs.orca-slicer.override { withNvidiaGLWorkaround = true; }) ];
|
||||||
|
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||||
|
postBuild = ''
|
||||||
|
wrapProgram $out/bin/orca-slicer \
|
||||||
|
--prefix XDG_DATA_DIRS : "${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}:${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}" \
|
||||||
|
--set __GLX_VENDOR_LIBRARY_NAME mesa \
|
||||||
|
--set __EGL_VENDOR_LIBRARY_FILENAMES /run/opengl-driver/share/glvnd/egl_vendor.d/50_mesa.json \
|
||||||
|
--set MESA_LOADER_DRIVER_OVERRIDE zink \
|
||||||
|
--set GALLIUM_DRIVER zink \
|
||||||
|
--set WEBKIT_DISABLE_DMABUF_RENDERER 1
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
# prusa-slicer
|
||||||
|
];
|
||||||
|
programs.lutris.enable = true;
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
# Skipping tests while upstream sorts it out, revert once
|
||||||
|
# Hydra consistently builds openldap green.
|
||||||
|
(final: prev: {
|
||||||
|
openldap = prev.openldap.overrideAttrs (_: {
|
||||||
|
doCheck = false;
|
||||||
|
});
|
||||||
|
})
|
||||||
];
|
];
|
||||||
nixpkgs.config.allowUnfree = true;
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
nixpkgs.config.problems.handlers = {
|
||||||
|
tetrio-plus.broken = "warn";
|
||||||
|
};
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -13,7 +13,11 @@
|
|||||||
modules.nix
|
modules.nix
|
||||||
];
|
];
|
||||||
nixos =
|
nixos =
|
||||||
{ pkgs, config, ... }:
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
{
|
{
|
||||||
boot.loader.grub.enable = true;
|
boot.loader.grub.enable = true;
|
||||||
boot.loader.grub.device = "nodev";
|
boot.loader.grub.device = "nodev";
|
||||||
@@ -34,15 +38,36 @@
|
|||||||
"rd.systemd.show_status=auto"
|
"rd.systemd.show_status=auto"
|
||||||
];
|
];
|
||||||
|
|
||||||
services.openssh.enable = true;
|
services.openssh.enable = true;
|
||||||
|
|
||||||
networking.networkmanager.enable = true;
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
configPackages = [ pkgs.xdg-desktop-portal-wlr ];
|
||||||
|
wlr = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.networkmanager.enable = true;
|
||||||
networking.firewall.enable = false;
|
networking.firewall.enable = false;
|
||||||
|
|
||||||
security.rtkit.enable = true;
|
environment.systemPackages = with pkgs; [ polkit_gnome ];
|
||||||
|
|
||||||
hardware.graphics = {
|
security.rtkit.enable = true;
|
||||||
|
|
||||||
|
security.polkit.enable = true;
|
||||||
|
|
||||||
|
hardware.graphics = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
libva-minimal
|
||||||
|
vulkan-loader
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.sessionVariables = {
|
||||||
|
LIBVA_DRIVER_NAME = "nvidia";
|
||||||
|
NVD_BACKEND = "direct";
|
||||||
};
|
};
|
||||||
|
|
||||||
services.xserver.videoDrivers = [ "nvidia" ];
|
services.xserver.videoDrivers = [ "nvidia" ];
|
||||||
@@ -62,7 +87,6 @@
|
|||||||
services.gnome.gnome-keyring.enable = true;
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
|
||||||
hardware.nvidia = {
|
hardware.nvidia = {
|
||||||
|
|
||||||
# Modesetting is required.
|
# Modesetting is required.
|
||||||
modesetting.enable = true;
|
modesetting.enable = true;
|
||||||
|
|
||||||
@@ -70,7 +94,7 @@
|
|||||||
# Enable this if you have graphical corruption issues or application crashes after waking
|
# 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
|
# up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead
|
||||||
# of just the bare essentials.
|
# of just the bare essentials.
|
||||||
powerManagement.enable = true;
|
powerManagement.enable = false;
|
||||||
|
|
||||||
# Fine-grained power management. Turns off GPU when not in use.
|
# Fine-grained power management. Turns off GPU when not in use.
|
||||||
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
|
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
|
||||||
@@ -92,7 +116,30 @@
|
|||||||
# Optionally, you may need to select the appropriate driver version for your specific GPU.
|
# Optionally, you may need to select the appropriate driver version for your specific GPU.
|
||||||
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||||
};
|
};
|
||||||
|
swapDevices = [
|
||||||
|
{
|
||||||
|
device = "/swapfile";
|
||||||
|
size = 8192;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.binfmt.emulatedSystems = [
|
||||||
|
"aarch64-linux"
|
||||||
|
];
|
||||||
|
services.scx = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.scx.rustscheds;
|
||||||
|
};
|
||||||
|
systemd.services.scx.environment = {
|
||||||
|
SCX_SCHEDULER_OVERRIDE = "scx_lavd";
|
||||||
|
SCX_FLAGS_OVERRIDE = "--performance --no-core-compaction";
|
||||||
|
};
|
||||||
|
systemd.oomd = {
|
||||||
|
enable = true;
|
||||||
|
enableUserSlices = true;
|
||||||
|
enableRootSlice = true;
|
||||||
|
enableSystemSlice = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
modules.stylix
|
modules.stylix
|
||||||
modules.quickshell
|
modules.quickshell
|
||||||
modules.lavd
|
modules.lavd
|
||||||
|
modules.omp
|
||||||
# modules.podman
|
# modules.podman
|
||||||
# modules.openvivo
|
# modules.openvivo
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -171,12 +171,12 @@
|
|||||||
# "mem_sleep_default=deep"
|
# "mem_sleep_default=deep"
|
||||||
# "i915.fastboot=1"
|
# "i915.fastboot=1"
|
||||||
# "i915.modeset=1"
|
# "i915.modeset=1"
|
||||||
# "ahci.mobile_lpm_policy=1"
|
"ahci.mobile_lpm_policy=1"
|
||||||
# "intel_idle.max_cstate=10"
|
# "intel_idle.max_cstate=10"
|
||||||
"processor.max_cstate=10"
|
"processor.max_cstate=10"
|
||||||
"pci=noaer"
|
"pci=noaer"
|
||||||
# "quiet"
|
"quiet"
|
||||||
# "splash"
|
"splash"
|
||||||
# "idle=halt"
|
# "idle=halt"
|
||||||
];
|
];
|
||||||
boot.binfmt.emulatedSystems = [
|
boot.binfmt.emulatedSystems = [
|
||||||
|
|||||||
@@ -3,8 +3,7 @@
|
|||||||
modules,
|
modules,
|
||||||
__findFile,
|
__findFile,
|
||||||
...
|
...
|
||||||
}:
|
}: {
|
||||||
{
|
|
||||||
den.aspects.doloro-shared = {
|
den.aspects.doloro-shared = {
|
||||||
includes = [
|
includes = [
|
||||||
modules.nixvim
|
modules.nixvim
|
||||||
@@ -14,9 +13,11 @@
|
|||||||
modules.hyfetch
|
modules.hyfetch
|
||||||
modules.ssh
|
modules.ssh
|
||||||
];
|
];
|
||||||
homeManager =
|
homeManager = {
|
||||||
{ pkgs, lib, ... }:
|
pkgs,
|
||||||
{
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
home = {
|
home = {
|
||||||
username = "doloro";
|
username = "doloro";
|
||||||
homeDirectory = "/home/doloro";
|
homeDirectory = "/home/doloro";
|
||||||
@@ -24,13 +25,12 @@
|
|||||||
wl-clipboard
|
wl-clipboard
|
||||||
# home-manager
|
# home-manager
|
||||||
btop
|
btop
|
||||||
|
pavucontrol
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
};
|
};
|
||||||
nixos =
|
nixos = {lib, ...}: {
|
||||||
{ lib, ... }:
|
|
||||||
{
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
{
|
||||||
|
den,
|
||||||
|
modules,
|
||||||
|
__findFile,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
den.aspects.doloro-wsl = {
|
||||||
|
includes = [
|
||||||
|
<den/primary-user>
|
||||||
|
den.aspects.doloro-shared
|
||||||
|
modules.fish
|
||||||
|
modules.tmux
|
||||||
|
modules.nix
|
||||||
|
modules.omp
|
||||||
|
modules.hyfetch
|
||||||
|
modules.git
|
||||||
|
];
|
||||||
|
nixos = {
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
users.users.doloro = {
|
||||||
|
isNormalUser = true;
|
||||||
|
shell = pkgs.fish;
|
||||||
|
uid = 1000;
|
||||||
|
# hashedPasswordFile = config.sops.secrets."doloro-hashed_password".path;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
homeManager = {...}: {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
den,
|
||||||
|
modules,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
flake-file.inputs = {
|
||||||
|
};
|
||||||
|
den.aspects.wsl = {
|
||||||
|
includes = [
|
||||||
|
modules.wsl
|
||||||
|
modules.tmux
|
||||||
|
modules.nix
|
||||||
|
modules.omp
|
||||||
|
modules.hyfetch
|
||||||
|
modules.git
|
||||||
|
];
|
||||||
|
nixos = {lib, ...}: {
|
||||||
|
wsl.enable = true;
|
||||||
|
wsl.defaultUser = "doloro";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -11,11 +11,28 @@
|
|||||||
# <modules/services/traefik>
|
# <modules/services/traefik>
|
||||||
<modules/services/caddy>
|
<modules/services/caddy>
|
||||||
<modules/services/home-assistant>
|
<modules/services/home-assistant>
|
||||||
|
<modules/services/docker-registry>
|
||||||
<modules/services/ddns>
|
<modules/services/ddns>
|
||||||
|
<modules/services/rtmp-to-whip>
|
||||||
];
|
];
|
||||||
nixos = {
|
nixos =
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
networking.hostName = "nixos-001-rp5";
|
networking.hostName = "nixos-001-rp5";
|
||||||
|
|
||||||
|
fileSystems = {
|
||||||
|
"/" = {
|
||||||
|
device = "/dev/disk/by-uuid/44444444-4444-4444-8888-888888888888";
|
||||||
|
fsType = "ext4";
|
||||||
|
options = [ "noatime" ];
|
||||||
|
};
|
||||||
|
"/boot/firmware" = {
|
||||||
|
device = "/dev/disk/by-uuid/2175-794E";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [ "noatime" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
networking.firewall = {
|
networking.firewall = {
|
||||||
enable = true;
|
enable = true;
|
||||||
allowedTCPPorts = [
|
allowedTCPPorts = [
|
||||||
@@ -26,11 +43,38 @@
|
|||||||
allowedUDPPortRanges = [ ];
|
allowedUDPPortRanges = [ ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
system.activationScripts.docker-config-fix = ''
|
||||||
|
if [ -d /root/.docker/config.json ]; then
|
||||||
|
rm -rf /root/.docker/config.json
|
||||||
|
echo '{}' > /root/.docker/config.json
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
|
||||||
virtualisation.docker.enable = true;
|
virtualisation.docker.enable = true;
|
||||||
|
virtualisation.docker.package = pkgs.docker;
|
||||||
|
virtualisation.docker.autoPrune = {
|
||||||
|
enable = true;
|
||||||
|
dates = "weekly";
|
||||||
|
flags = [
|
||||||
|
"--all"
|
||||||
|
"--volumes"
|
||||||
|
];
|
||||||
|
};
|
||||||
virtualisation.oci-containers.backend = "docker";
|
virtualisation.oci-containers.backend = "docker";
|
||||||
|
|
||||||
services.openssh.enable = true;
|
services.openssh.enable = true;
|
||||||
nixpkgs.hostPlatform = "aarch64-linux";
|
nixpkgs.hostPlatform = "aarch64-linux";
|
||||||
|
|
||||||
|
nix.gc = {
|
||||||
|
automatic = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
homeManager =
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [
|
||||||
|
pkgs.btop
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,8 +3,7 @@
|
|||||||
__findFile,
|
__findFile,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}:
|
}: {
|
||||||
{
|
|
||||||
# Homes
|
# Homes
|
||||||
den.homes.x86_64-linux.doloro-desktop = {
|
den.homes.x86_64-linux.doloro-desktop = {
|
||||||
aspect = "doloro-desktop";
|
aspect = "doloro-desktop";
|
||||||
@@ -14,6 +13,9 @@
|
|||||||
den.homes.aarch64-linux.doloro-laptop = {
|
den.homes.aarch64-linux.doloro-laptop = {
|
||||||
userName = "doloro";
|
userName = "doloro";
|
||||||
};
|
};
|
||||||
|
den.homes.aarch64-linux.doloro-wsl = {
|
||||||
|
userName = "doloro";
|
||||||
|
};
|
||||||
# Machines
|
# Machines
|
||||||
den.hosts.x86_64-linux.desktop = {
|
den.hosts.x86_64-linux.desktop = {
|
||||||
users.doloro = {
|
users.doloro = {
|
||||||
@@ -28,13 +30,25 @@
|
|||||||
home-manager.enable = true;
|
home-manager.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
den.hosts.aarch64-linux.wsl = {
|
||||||
|
users.doloro = {
|
||||||
|
aspect = "doloro-wsl";
|
||||||
|
home-manager.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
den.schema.user.classes = lib.mkDefault [ "homeManager" ];
|
den.hosts.x86_64-linux.doloro-bootable = {
|
||||||
|
users.doloro = {
|
||||||
|
aspect = "doloro-bootable";
|
||||||
|
homeManager.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.'
|
# Fixes 'The option `flake.homeConfigurations' is defined multiple times while it's expected to be unique.'
|
||||||
flake.options.homeConfigurations = lib.mkOption {
|
flake.options.homeConfigurations = lib.mkOption {
|
||||||
type = lib.types.attrs;
|
type = lib.types.attrs;
|
||||||
description = "Home Manager configurations for users.";
|
description = "Home Manager configurations for users.";
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,5 +6,6 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
den.url = "github:vic/den?ref=8101ec865c0bf4027d40b9fd8951e3e435a86d64";
|
den.url = "github:vic/den?ref=8101ec865c0bf4027d40b9fd8951e3e435a86d64";
|
||||||
|
nixpkgs-master.url = "github:NixOS/nixpkgs/master";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,9 +11,63 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
homeManager =
|
homeManager =
|
||||||
{ pkgs, ... }:
|
{ pkgs, config, ... }:
|
||||||
{
|
{
|
||||||
home.packages = [ pkgs.opencode ];
|
home.packages = [
|
||||||
|
pkgs.claude-code
|
||||||
|
];
|
||||||
|
sops = {
|
||||||
|
secrets.scug-io-ai-key = {
|
||||||
|
# sopsFile = ./secrets.yaml;
|
||||||
|
# Decrypted file path (available at runtime, not eval time)
|
||||||
|
path = config.home.homeDirectory + "/.secrets/scug_io_api_key";
|
||||||
|
sopsFile = ../secrets/content/secrets.yaml;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
programs.fish = {
|
||||||
|
shellInit = ''
|
||||||
|
if test -f "$HOME/.secrets/scug_io_api_key"
|
||||||
|
set -x SCUG_IO_API_KEY (cat "$HOME/.secrets/scug_io_api_key")
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
programs.opencode = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
rust-analyzer
|
||||||
|
typescript-language-server
|
||||||
|
];
|
||||||
|
context = ''
|
||||||
|
Instructions:
|
||||||
|
|
||||||
|
- Do NOT preemptively load all references - use lazy loading based on actual need
|
||||||
|
- When loaded, treat content as mandatory instructions that override defaults
|
||||||
|
- Follow references recursively when needed
|
||||||
|
|
||||||
|
- NO EMOJIS
|
||||||
|
'';
|
||||||
|
settings = {
|
||||||
|
"lsp" = true;
|
||||||
|
plugin = [
|
||||||
|
"@tarquinen/opencode-dcp@latest"
|
||||||
|
"@xberg-io/opencode-xberg"
|
||||||
|
"@xberg-io/opencode-crawlberg"
|
||||||
|
"@xberg-io/opencode-html-to-markdown"
|
||||||
|
# "@xberg-io/opencode-liter-llm"
|
||||||
|
"opencode-plugin-litellm@latest"
|
||||||
|
"@xberg-io/opencode-tree-sitter-language-pack"
|
||||||
|
];
|
||||||
|
provider.litellm = {
|
||||||
|
npm = "@ai-sdk/openai-compatible";
|
||||||
|
name = "LiteLLM (scuggo)";
|
||||||
|
options = {
|
||||||
|
baseURL = "https://9f5db439.fwds.scug.io/v1";
|
||||||
|
apiKey = "{env:SCUG_IO_API_KEY}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
modules,
|
||||||
|
den,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
flake-file.inputs = {
|
||||||
|
omp-nix.url = "git+https://git.molez.org/mandlm/omp-nix?ref=main";
|
||||||
|
};
|
||||||
|
modules.omp = {
|
||||||
|
homeManager = {
|
||||||
|
imports = [ inputs.omp-nix.homeManagerModules.omp ];
|
||||||
|
oh-my-pi.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,227 @@
|
|||||||
|
{
|
||||||
|
den,
|
||||||
|
modules,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
modules.pi-coding = {
|
||||||
|
homeManager =
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.pi-coding-agent = {
|
||||||
|
enable = true;
|
||||||
|
extraPackages = [
|
||||||
|
pkgs.nodejs
|
||||||
|
# pkgs.lean-lsp-mcp
|
||||||
|
];
|
||||||
|
package = pkgs.pi-coding-agent.overrideAttrs (
|
||||||
|
new: old: {
|
||||||
|
version = "0.81.1";
|
||||||
|
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "earendil-works";
|
||||||
|
repo = "pi";
|
||||||
|
tag = "v${new.version}";
|
||||||
|
hash = "sha256-xo3uoR7HceOCL3wqoMcacOe8WXP1o7ReAXne5t6Hgao=";
|
||||||
|
};
|
||||||
|
|
||||||
|
npmDepsHash = "sha256-lzKQZbnITzgV9koucsMno6f61ubBLYUcwQEXtak1r1s=";
|
||||||
|
# npmDepsHash = pkgs.lib.fakeHash;
|
||||||
|
|
||||||
|
# npmDepsHash = "sha256-lDoj/94tjJd4ZGU9WgrMOqNSmdpeCljU4c6jGX+TSDY=";
|
||||||
|
|
||||||
|
npmDeps = pkgs.fetchNpmDeps {
|
||||||
|
inherit (new) src;
|
||||||
|
name = "pi-coding-agent-0.81.1-npm-deps";
|
||||||
|
hash = new.npmDepsHash;
|
||||||
|
};
|
||||||
|
modelData = pkgs.fetchurl {
|
||||||
|
url = "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-${new.version}.tgz";
|
||||||
|
hash = "sha256-x53MD5DU370ZdNoz36P+OWZjGVpoM5sfVcEU2/ckDy8=";
|
||||||
|
# hash = pkgs.lib.fakeHash;
|
||||||
|
};
|
||||||
|
preConfigure = ''
|
||||||
|
mkdir -p packages/ai/src/providers/data
|
||||||
|
tar --extract --gzip --file=${new.modelData} \
|
||||||
|
--directory=packages/ai/src/providers/data \
|
||||||
|
--strip-components=4 \
|
||||||
|
package/dist/providers/data
|
||||||
|
'';
|
||||||
|
passthru.updateScript = pkgs.nix-update-script {
|
||||||
|
extraArgs = [
|
||||||
|
"--custom-dep"
|
||||||
|
"modelData"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
settings = {
|
||||||
|
"litellm" = {
|
||||||
|
"providers" = {
|
||||||
|
"litellm" = {
|
||||||
|
"displayName" = "scuggo";
|
||||||
|
"baseUrl" = "https://9f5db439.fwds.scug.io";
|
||||||
|
"apiKey" = "$SCUG_IO_API_KEY";
|
||||||
|
"compat" = {
|
||||||
|
"sendSessionAffinityHeaders" = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"skills" = {
|
||||||
|
"enabled" = true;
|
||||||
|
};
|
||||||
|
"compat" = {
|
||||||
|
"sendSessionAffinityHeaders" = true;
|
||||||
|
};
|
||||||
|
"mcp" = {
|
||||||
|
"enabled" = true;
|
||||||
|
};
|
||||||
|
"showCacheMissNotices" = true;
|
||||||
|
"qol" = {
|
||||||
|
"permissionGate" = {
|
||||||
|
"enabled" = true;
|
||||||
|
"commands" = "rm -Rf,rm -rf,sudo,chmod,chown,mkfs,dd,shutdown,reboot,poweroff";
|
||||||
|
"previewLines" = 12;
|
||||||
|
"previewChars" = 1200;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"mcp" = {
|
||||||
|
"enabled" = true;
|
||||||
|
};
|
||||||
|
packages = [
|
||||||
|
# "npm:@odinlayer/pi-provider-litellm"
|
||||||
|
# "npm:pi-provider-litellm"
|
||||||
|
"npm:@juanibiapina/pi-extension-settings"
|
||||||
|
"git:github.com/balcsida/pi-provider-litellm"
|
||||||
|
# "npm:pi-web-access"
|
||||||
|
# "npm:@gotgenes/pi-permission-system"
|
||||||
|
"npm:@vanillagreen/pi-qol"
|
||||||
|
"npm:pi-vitals"
|
||||||
|
"npm:pi-spark"
|
||||||
|
"npm:@zhushanwen/pi-context-engineering"
|
||||||
|
"npm:pi-caveman"
|
||||||
|
"npm:@tmustier/pi-usage-extension"
|
||||||
|
"npm:@heyhuynhgiabuu/pi-pretty"
|
||||||
|
"npm:pi-lens"
|
||||||
|
# "npm:pi-lean-ctx"
|
||||||
|
# "npm:@rohaquinlop/pi-deepseek-cache"
|
||||||
|
"npm:pi-cache-optimizer"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
context = "Heavily prefer to use any appropriate tools instead of raw cmd";
|
||||||
|
};
|
||||||
|
|
||||||
|
# pi-vitals config
|
||||||
|
home.file.".pi/agent/powerline.json" = {
|
||||||
|
text = builtins.toJSON {
|
||||||
|
leftSegments = [
|
||||||
|
"pi"
|
||||||
|
"separator"
|
||||||
|
"model"
|
||||||
|
"thinking"
|
||||||
|
"ext_status"
|
||||||
|
"separator"
|
||||||
|
"path"
|
||||||
|
"git"
|
||||||
|
"separator"
|
||||||
|
"token_total"
|
||||||
|
"token_in"
|
||||||
|
"token_out"
|
||||||
|
"cache_read"
|
||||||
|
"cache_write"
|
||||||
|
];
|
||||||
|
rightSegments = [
|
||||||
|
"separator"
|
||||||
|
"cost"
|
||||||
|
"context_pct"
|
||||||
|
];
|
||||||
|
icons = {
|
||||||
|
pi = "π";
|
||||||
|
model = "◈";
|
||||||
|
thinking = "🧠";
|
||||||
|
folder = "📁";
|
||||||
|
repo = "📦";
|
||||||
|
git = "⎇";
|
||||||
|
tokens = "⊛";
|
||||||
|
input = "↑";
|
||||||
|
output = "↓";
|
||||||
|
cacheRead = "↙";
|
||||||
|
cacheWrite = "↗";
|
||||||
|
contextPct = "◫";
|
||||||
|
cost = "$";
|
||||||
|
separator = "│";
|
||||||
|
};
|
||||||
|
colors = {
|
||||||
|
pi = "accent";
|
||||||
|
model = "#d787af";
|
||||||
|
path = "#00afaf";
|
||||||
|
git = "success";
|
||||||
|
gitDirty = "warning";
|
||||||
|
gitClean = "success";
|
||||||
|
thinking = "muted";
|
||||||
|
context = "dim";
|
||||||
|
contextWarn = "warning";
|
||||||
|
contextError = "error";
|
||||||
|
cost = "text";
|
||||||
|
tokens = "muted";
|
||||||
|
separator = "dim";
|
||||||
|
};
|
||||||
|
segmentOptions = {
|
||||||
|
path = {
|
||||||
|
mode = "basename";
|
||||||
|
};
|
||||||
|
git = {
|
||||||
|
showBranch = true;
|
||||||
|
showStaged = true;
|
||||||
|
showUnstaged = true;
|
||||||
|
showUntracked = true;
|
||||||
|
};
|
||||||
|
context_pct = {
|
||||||
|
showAutoIcon = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# pi-spark config
|
||||||
|
home.file.".pi/agent/spark.json" = {
|
||||||
|
text = builtins.toJSON {
|
||||||
|
editor = {
|
||||||
|
spinner = "tildes";
|
||||||
|
};
|
||||||
|
footer = false;
|
||||||
|
presets = {
|
||||||
|
"scuggo" = {
|
||||||
|
provider = "litellm";
|
||||||
|
model = "meow";
|
||||||
|
thinkingLevel = "medium";
|
||||||
|
};
|
||||||
|
"claude" = {
|
||||||
|
provider = "anthropic";
|
||||||
|
model = "claude-opus-4-8";
|
||||||
|
thinkingLevel = "high";
|
||||||
|
};
|
||||||
|
"gpt" = {
|
||||||
|
provider = "openai-codex";
|
||||||
|
model = "gpt-5.5";
|
||||||
|
thinkingLevel = "medium";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
recap = {
|
||||||
|
idle = "5m";
|
||||||
|
provider = "openai-codex";
|
||||||
|
model = "gpt-5.4-mini";
|
||||||
|
thinkingLevel = "off";
|
||||||
|
};
|
||||||
|
title = {
|
||||||
|
provider = "openai-codex";
|
||||||
|
model = "gpt-5.4-mini";
|
||||||
|
thinkingLevel = "off";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -7,6 +7,7 @@
|
|||||||
settings = {
|
settings = {
|
||||||
global = {
|
global = {
|
||||||
font = "Noto Nerd Font 8";
|
font = "Noto Nerd Font 8";
|
||||||
|
monitor = "DP-2";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
+17
-5
@@ -1,5 +1,12 @@
|
|||||||
{ modules, ... }:
|
|
||||||
{
|
{
|
||||||
|
modules,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
flake-file.inputs = {
|
||||||
|
direnv-instant.url = "github:Mic92/direnv-instant";
|
||||||
|
};
|
||||||
modules.fish = {
|
modules.fish = {
|
||||||
nixos = {
|
nixos = {
|
||||||
programs.fish.enable = true;
|
programs.fish.enable = true;
|
||||||
@@ -8,7 +15,10 @@
|
|||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
home.shell.enableFishIntegration = true;
|
home.shell.enableFishIntegration = true;
|
||||||
home.packages = [ pkgs.nix-output-monitor ];
|
home.packages = [
|
||||||
|
pkgs.nix-output-monitor
|
||||||
|
# pkgs.devenv
|
||||||
|
];
|
||||||
programs = {
|
programs = {
|
||||||
fish = {
|
fish = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -18,9 +28,11 @@
|
|||||||
set -g theme_display_user yes
|
set -g theme_display_user yes
|
||||||
set -g fish_color_autosuggestion 6F6578
|
set -g fish_color_autosuggestion 6F6578
|
||||||
alias nik 'nix'
|
alias nik 'nix'
|
||||||
|
|
||||||
|
if not set -q TMUX
|
||||||
|
set -gx COLORTERM truecolor
|
||||||
|
end
|
||||||
'';
|
'';
|
||||||
# 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 = [
|
plugins = [
|
||||||
{
|
{
|
||||||
name = "bobthefish";
|
name = "bobthefish";
|
||||||
@@ -42,7 +54,7 @@
|
|||||||
};
|
};
|
||||||
direnv = {
|
direnv = {
|
||||||
enable = true;
|
enable = true;
|
||||||
nix-direnv.enable = true;
|
enableFishIntegration = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{ modules, inputs, ... }:
|
||||||
|
{
|
||||||
|
flake-file.inputs = {
|
||||||
|
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=latest";
|
||||||
|
};
|
||||||
|
modules.flatpaks = {
|
||||||
|
nixos = {
|
||||||
|
imports = [
|
||||||
|
inputs.nix-flatpak.nixosModules.nix-flatpak
|
||||||
|
];
|
||||||
|
services.flatpak = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
homeManager = {
|
||||||
|
imports = [
|
||||||
|
inputs.nix-flatpak.homeManagerModules.nix-flatpak
|
||||||
|
];
|
||||||
|
services.flatpak = {
|
||||||
|
enable = true;
|
||||||
|
packages = [
|
||||||
|
{
|
||||||
|
flatpakref = "https://dl.flathub.org/repo/appstream/org.vinegarhq.Sober.flatpakref";
|
||||||
|
sha256 = "15ak2i5nk64wbmswqml2cqfgidczawqybmc7pmw94yp8wcd4yv6i";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
services.flatpak.remotes = [
|
||||||
|
{
|
||||||
|
name = "flathub-beta";
|
||||||
|
location = "https://flathub.org/beta-repo/flathub-beta.flatpakrepo";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
{ modules, ... }:
|
||||||
|
{
|
||||||
|
modules.gamemode = {
|
||||||
|
homeManager =
|
||||||
|
{ home, ... }:
|
||||||
|
{
|
||||||
|
|
||||||
|
};
|
||||||
|
nixos =
|
||||||
|
{ nixos, ... }:
|
||||||
|
{
|
||||||
|
programs.gamemode = {
|
||||||
|
enable = true;
|
||||||
|
enableRenice = true;
|
||||||
|
settings = {
|
||||||
|
general = {
|
||||||
|
renice = 10;
|
||||||
|
ioprio = 0;
|
||||||
|
inhibit_screensaver = 1;
|
||||||
|
disable_splitlock = 1;
|
||||||
|
};
|
||||||
|
cpu = {
|
||||||
|
park_cores = "no";
|
||||||
|
pin_cores = "yes";
|
||||||
|
};
|
||||||
|
gpu = {
|
||||||
|
apply_gpu_optimisations = "accept-responsibility";
|
||||||
|
gpu_device = 1;
|
||||||
|
nv_powermizer_mode = 1;
|
||||||
|
nv_perf_level = -1;
|
||||||
|
};
|
||||||
|
script = {
|
||||||
|
gamestart = "nvidia-smi --power-limit=175";
|
||||||
|
gamestop = "nvidia-smi --power-limit=125";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -4,6 +4,18 @@
|
|||||||
nixos =
|
nixos =
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
|
programs.gamescope = {
|
||||||
|
enable = true;
|
||||||
|
package = (
|
||||||
|
pkgs.gamescope.overrideAttrs {
|
||||||
|
enableWsi = true;
|
||||||
|
# Fixes some games being blurry under wayland backend
|
||||||
|
NIX_CFLAGS_COMPILE = [ "-fno-fast-math" ];
|
||||||
|
}
|
||||||
|
);
|
||||||
|
# Breaks steam launching gamescope
|
||||||
|
# capSysNice = true;
|
||||||
|
};
|
||||||
programs.steam = {
|
programs.steam = {
|
||||||
enable = true;
|
enable = true;
|
||||||
remotePlay.openFirewall = true;
|
remotePlay.openFirewall = true;
|
||||||
@@ -11,14 +23,14 @@
|
|||||||
localNetworkGameTransfers.openFirewall = true;
|
localNetworkGameTransfers.openFirewall = true;
|
||||||
# Ensure gamescope is inside the steam "fhs"
|
# Ensure gamescope is inside the steam "fhs"
|
||||||
package = pkgs.steam.override {
|
package = pkgs.steam.override {
|
||||||
extraLibraries = pkgs: [ pkgs.xorg.libxcb ];
|
extraLibraries = pkgs: [ pkgs.libxcb ];
|
||||||
extraPkgs =
|
extraPkgs =
|
||||||
pkgs: with pkgs; [
|
pkgs: with pkgs; [
|
||||||
attr
|
attr
|
||||||
xorg.libXcursor
|
libxcursor
|
||||||
xorg.libXi
|
libxi
|
||||||
xorg.libXinerama
|
libxinerama
|
||||||
xorg.libXScrnSaver
|
libxscrnsaver
|
||||||
libpng
|
libpng
|
||||||
libpulseaudio
|
libpulseaudio
|
||||||
libvorbis
|
libvorbis
|
||||||
@@ -26,13 +38,8 @@
|
|||||||
libkrb5
|
libkrb5
|
||||||
keyutils
|
keyutils
|
||||||
mangohud
|
mangohud
|
||||||
gamemode
|
# gamemode
|
||||||
lsof
|
lsof
|
||||||
(gamescope.overrideAttrs {
|
|
||||||
enableWsi = true;
|
|
||||||
# Fixes some games being blurry under wayland backend
|
|
||||||
NIX_CFLAGS_COMPILE = [ "-fno-fast-math" ];
|
|
||||||
})
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -16,10 +16,39 @@
|
|||||||
modules.helium = settings: {
|
modules.helium = settings: {
|
||||||
homeManager =
|
homeManager =
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
|
let
|
||||||
|
heliumPkg = inputs.heliumFlake.packages.${pkgs.stdenv.hostPlatform.system}.helium;
|
||||||
|
# The upstream `helium` launcher is a plain Nix wrapper that ignores any
|
||||||
|
# *-flags.conf file (that convention is Arch-specific, not NixOS). So to
|
||||||
|
# actually pass command-line flags we re-wrap the launcher here.
|
||||||
|
#
|
||||||
|
# Flag names verified against this Helium build's binary strings.
|
||||||
|
# - AcceleratedVideoDecodeLinuxGL / ...ZeroCopyGL: the VA-API GL decode
|
||||||
|
# path (renamed from the old Vaapi* names, which are no-ops here).
|
||||||
|
# - VaapiOnNvidiaGPUs: required. Chromium disables VA-API on NVIDIA by
|
||||||
|
# default and hard-skips the nvidia-drm device ("Should skip nVidia
|
||||||
|
# device named: nvidia-drm" in the logs); this re-enables it, routing
|
||||||
|
# decode to NVDEC through the nvidia-vaapi-driver bridge.
|
||||||
|
# - VaapiIgnoreDriverChecks: bypass the driver allowlist.
|
||||||
|
# HEVC decode itself needs no runtime flag in this build (enable_platform_hevc
|
||||||
|
# is compiled in and on by default). Wayland-only: the NVIDIA VA-API path
|
||||||
|
# is broken under X11. Upstream considers nvidia-vaapi-driver unsupported,
|
||||||
|
# so confirm via chrome://media-internals (decoder should read VaapiVideoDecoder).
|
||||||
|
helium = pkgs.symlinkJoin {
|
||||||
|
name = "helium-wrapped";
|
||||||
|
paths = [ heliumPkg ];
|
||||||
|
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||||
|
postBuild = ''
|
||||||
|
wrapProgram $out/bin/helium \
|
||||||
|
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ pkgs.vulkan-loader ]}" \
|
||||||
|
--add-flags "--enable-features=AcceleratedVideoDecodeLinuxGL,AcceleratedVideoDecodeLinuxZeroCopyGL,VaapiOnNvidiaGPUs,VaapiIgnoreDriverChecks" \
|
||||||
|
--add-flags "--ignore-gpu-blocklist" \
|
||||||
|
--add-flags "--disable-gpu-sandbox"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in
|
||||||
{
|
{
|
||||||
home.packages = [
|
home.packages = [ helium ];
|
||||||
inputs.heliumFlake.packages.${pkgs.stdenv.hostPlatform.system}.helium
|
|
||||||
];
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
nixpkgs.config.allowUnfree = true;
|
||||||
# Gives me widevine support. yay
|
# Gives me widevine support. yay
|
||||||
xdg.configFile."net.imput.helium/WidevineCdm/latest-component-updated-widevine-cdm" = {
|
xdg.configFile."net.imput.helium/WidevineCdm/latest-component-updated-widevine-cdm" = {
|
||||||
|
|||||||
@@ -7,7 +7,11 @@
|
|||||||
modules.dunst
|
modules.dunst
|
||||||
];
|
];
|
||||||
homeManager =
|
homeManager =
|
||||||
{ pkgs, home, ... }:
|
{
|
||||||
|
pkgs,
|
||||||
|
home,
|
||||||
|
...
|
||||||
|
}:
|
||||||
{
|
{
|
||||||
home.packages = [
|
home.packages = [
|
||||||
pkgs.hyprcursor
|
pkgs.hyprcursor
|
||||||
@@ -24,6 +28,22 @@
|
|||||||
package = pkgs.rose-pine-hyprcursor;
|
package = pkgs.rose-pine-hyprcursor;
|
||||||
hyprcursor.enable = true;
|
hyprcursor.enable = true;
|
||||||
};
|
};
|
||||||
|
services.hyprpaper = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
splash = true;
|
||||||
|
wallpaper = [
|
||||||
|
{
|
||||||
|
monitor = "HDMI-A-1";
|
||||||
|
path = "/home/doloro/Wallpaper.jpg";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
monitor = "DP-2";
|
||||||
|
path = "/home/doloro/Wallpaper.jpg";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
wayland.windowManager.hyprland.settings = {
|
wayland.windowManager.hyprland.settings = {
|
||||||
env = [
|
env = [
|
||||||
"XCURSOR_THEME,BreezeX-RosePine-Linux"
|
"XCURSOR_THEME,BreezeX-RosePine-Linux"
|
||||||
@@ -62,7 +82,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
cursor = {
|
cursor = {
|
||||||
no_hardware_cursors = true;
|
no_hardware_cursors = false;
|
||||||
};
|
};
|
||||||
animations = {
|
animations = {
|
||||||
enabled = true;
|
enabled = true;
|
||||||
@@ -95,7 +115,7 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
dwindle = {
|
dwindle = {
|
||||||
pseudotile = true;
|
# pseudotile = true;
|
||||||
preserve_split = true;
|
preserve_split = true;
|
||||||
};
|
};
|
||||||
# master = {
|
# master = {
|
||||||
@@ -105,7 +125,7 @@
|
|||||||
force_default_wallpaper = -1;
|
force_default_wallpaper = -1;
|
||||||
disable_hyprland_logo = false;
|
disable_hyprland_logo = false;
|
||||||
enable_anr_dialog = false;
|
enable_anr_dialog = false;
|
||||||
vfr = true;
|
# vfr = true;
|
||||||
};
|
};
|
||||||
"$mainMod" = "SUPER";
|
"$mainMod" = "SUPER";
|
||||||
bind = [
|
bind = [
|
||||||
@@ -136,8 +156,8 @@
|
|||||||
"$mainMod, M, exec, uwsm stop"
|
"$mainMod, M, exec, uwsm stop"
|
||||||
"$mainMod, Q, exec, kitty"
|
"$mainMod, Q, exec, kitty"
|
||||||
"$mainMod, V, togglefloating,"
|
"$mainMod, V, togglefloating,"
|
||||||
"$mainMod, P, pseudo, # dwindle"
|
# "$mainMod, P, pseudo, # dwindle"
|
||||||
"$mainMod, J, togglesplit, # dwindle"
|
# "$mainMod, J, togglesplit, # dwindle"
|
||||||
"$mainMod, left, movefocus, l"
|
"$mainMod, left, movefocus, l"
|
||||||
"$mainMod, right, movefocus, r"
|
"$mainMod, right, movefocus, r"
|
||||||
"$mainMod, up, movefocus, u"
|
"$mainMod, up, movefocus, u"
|
||||||
@@ -180,6 +200,7 @@
|
|||||||
"match:class .*, suppress_event maximize"
|
"match:class .*, suppress_event maximize"
|
||||||
"match:class ^(gamescope)$, workspace 5"
|
"match:class ^(gamescope)$, workspace 5"
|
||||||
"match:class ^(gamescope)$, immediate true"
|
"match:class ^(gamescope)$, immediate true"
|
||||||
|
"match:class ^(gamescope)$, confine_pointer true"
|
||||||
"match:class ^(steam)$, workspace 6 silent"
|
"match:class ^(steam)$, workspace 6 silent"
|
||||||
"match:class ^(vesktop)$, workspace 8 silent"
|
"match:class ^(vesktop)$, workspace 8 silent"
|
||||||
"match:class ^(org.telegram.desktop)$, workspace 8 silent"
|
"match:class ^(org.telegram.desktop)$, workspace 8 silent"
|
||||||
|
|||||||
@@ -3,16 +3,13 @@
|
|||||||
inputs,
|
inputs,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}:
|
}: {
|
||||||
{
|
|
||||||
flake-file.inputs = {
|
flake-file.inputs = {
|
||||||
hyprland.url = "github:hyprwm/Hyprland";
|
hyprland.url = "github:hyprwm/Hyprland";
|
||||||
};
|
};
|
||||||
modules.hyprland = {
|
modules.hyprland = {
|
||||||
nixos =
|
nixos = {pkgs, ...}: {
|
||||||
{ pkgs, ... }:
|
imports = [inputs.hyprland.nixosModules.default];
|
||||||
{
|
|
||||||
imports = [ inputs.hyprland.nixosModules.default ];
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
wayfreeze
|
wayfreeze
|
||||||
grim
|
grim
|
||||||
@@ -46,15 +43,15 @@
|
|||||||
# package32 = pkgs-unstable.pkgsi686Linux.mesa;
|
# package32 = pkgs-unstable.pkgsi686Linux.mesa;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
homeManager =
|
homeManager = {pkgs, ...}: {
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
gtk = {
|
gtk = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
|
# backupFileExtension = "backupHM";
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
enable = true;
|
enable = true;
|
||||||
systemd.variables = [ "--all" ];
|
systemd.variables = ["--all"];
|
||||||
|
configType = "lua";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
den,
|
||||||
|
modules,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
flake-file.inputs = {
|
||||||
|
hytale-launcher.url = "github:JPyke3/hytale-launcher-nix";
|
||||||
|
};
|
||||||
|
modules.hytale-launcher = {
|
||||||
|
homeManager =
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [
|
||||||
|
inputs.hytale-launcher.packages.${pkgs.system}.default
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
{ den, modules, ... }:
|
|
||||||
{
|
{
|
||||||
|
den,
|
||||||
|
modules,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
modules.kitty = {
|
modules.kitty = {
|
||||||
homeManager = {
|
homeManager = {
|
||||||
programs.kitty = {
|
programs.kitty = {
|
||||||
@@ -12,6 +15,7 @@
|
|||||||
sync_to_monitor = "yes";
|
sync_to_monitor = "yes";
|
||||||
background_opacity = 0.6;
|
background_opacity = 0.6;
|
||||||
cursor_trail = 1;
|
cursor_trail = 1;
|
||||||
|
auto_reload_config = -1;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3,17 +3,17 @@
|
|||||||
modules,
|
modules,
|
||||||
inputs,
|
inputs,
|
||||||
...
|
...
|
||||||
}:
|
}: {
|
||||||
{
|
|
||||||
flake-file.inputs = {
|
flake-file.inputs = {
|
||||||
nik-pkgs = {
|
nik-pkgs = {
|
||||||
url = "git+https://git.scug.io/nikkuss/pkgs.git";
|
url = "git+https://git.scug.io/nikkuss/pkgs.git?ref=main";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
modules.nikpkgs = {
|
modules.nikpkgs = {
|
||||||
nixos = {
|
nixos = {
|
||||||
nixpkgs.overlays = [ inputs.nik-pkgs.overlays.default ];
|
nixpkgs.overlays = [inputs.nik-pkgs.overlays.default];
|
||||||
};
|
};
|
||||||
|
# debug = inputs.nik-pkgs;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
+21
-21
@@ -24,19 +24,19 @@
|
|||||||
systemd
|
systemd
|
||||||
|
|
||||||
# My own additions
|
# My own additions
|
||||||
xorg.libXcomposite
|
libxcomposite
|
||||||
xorg.libXtst
|
libxtst
|
||||||
xorg.libXrandr
|
libxrandr
|
||||||
xorg.libXext
|
libxext
|
||||||
xorg.libX11
|
libx11
|
||||||
xorg.libXfixes
|
libxfixes
|
||||||
libGL
|
libGL
|
||||||
libva
|
libva
|
||||||
pipewire
|
pipewire
|
||||||
xorg.libxcb
|
libxcb
|
||||||
xorg.libXdamage
|
libxdamage
|
||||||
xorg.libxshmfence
|
libxshmfence
|
||||||
xorg.libXxf86vm
|
libxxf86vm
|
||||||
libelf
|
libelf
|
||||||
|
|
||||||
# Required
|
# Required
|
||||||
@@ -56,13 +56,13 @@
|
|||||||
# glibc_multi.bin # Seems to cause issue in ARM
|
# glibc_multi.bin # Seems to cause issue in ARM
|
||||||
|
|
||||||
# # Without these it silently fails
|
# # Without these it silently fails
|
||||||
xorg.libXinerama
|
libxinerama
|
||||||
xorg.libXcursor
|
libxcursor
|
||||||
xorg.libXrender
|
libxrender
|
||||||
xorg.libXScrnSaver
|
libxscrnsaver
|
||||||
xorg.libXi
|
libxi
|
||||||
xorg.libSM
|
libsm
|
||||||
xorg.libICE
|
libice
|
||||||
gnome2.GConf
|
gnome2.GConf
|
||||||
nspr
|
nspr
|
||||||
nss
|
nss
|
||||||
@@ -88,13 +88,13 @@
|
|||||||
# other issue: (Unity:377230): GLib-GIO-CRITICAL **: 21:09:04.706: g_dbus_proxy_call_sync_internal: assertion 'G_IS_DBUS_PROXY (proxy)' failed
|
# 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
|
# Verified games requirements
|
||||||
xorg.libXt
|
libxt
|
||||||
xorg.libXmu
|
libxmu
|
||||||
libogg
|
libogg
|
||||||
libvorbis
|
libvorbis
|
||||||
SDL
|
SDL
|
||||||
SDL2_image
|
SDL2_image
|
||||||
glew110
|
glew_1_10
|
||||||
libidn
|
libidn
|
||||||
tbb
|
tbb
|
||||||
|
|
||||||
@@ -123,7 +123,7 @@
|
|||||||
libgcrypt
|
libgcrypt
|
||||||
libvpx
|
libvpx
|
||||||
librsvg
|
librsvg
|
||||||
xorg.libXft
|
libxft
|
||||||
libvdpau
|
libvdpau
|
||||||
# ...
|
# ...
|
||||||
# Some more libraries that I needed to run programs
|
# Some more libraries that I needed to run programs
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
{ ... }:
|
{...}: {
|
||||||
{
|
flake-file.inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
};
|
||||||
modules.nix = {
|
modules.nix = {
|
||||||
nixos =
|
nixos = {...}: {
|
||||||
{ ... }:
|
|
||||||
{
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
nixpkgs.config.allowUnfree = true;
|
||||||
nix.settings = {
|
nix.settings = {
|
||||||
substituters = [
|
extra-substituters = [
|
||||||
"https://hyprland.cachix.org"
|
"https://hyprland.cachix.org"
|
||||||
"https://nix-community.cachix.org"
|
"https://nix-community.cachix.org"
|
||||||
"https://cache.nixos.org/"
|
"https://cache.nixos.org/"
|
||||||
@@ -14,6 +14,7 @@
|
|||||||
"https://cache.nixos-cuda.org"
|
"https://cache.nixos-cuda.org"
|
||||||
"https://niri.cachix.org"
|
"https://niri.cachix.org"
|
||||||
"https://attic.xuyh0120.win/lantian"
|
"https://attic.xuyh0120.win/lantian"
|
||||||
|
"https://nixos-raspberrypi.cachix.org"
|
||||||
];
|
];
|
||||||
trusted-public-keys = [
|
trusted-public-keys = [
|
||||||
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
||||||
@@ -22,6 +23,7 @@
|
|||||||
"cache.nixos-cuda.org:74DUi4Ye579gUqzH4ziL9IyiJBlDpMRn9MBN8oNan9M="
|
"cache.nixos-cuda.org:74DUi4Ye579gUqzH4ziL9IyiJBlDpMRn9MBN8oNan9M="
|
||||||
"niri.cachix.org-1:Wv0OmO7PsuocRKzfDoJ3mulSl7Z6oezYhGhR+3W2964="
|
"niri.cachix.org-1:Wv0OmO7PsuocRKzfDoJ3mulSl7Z6oezYhGhR+3W2964="
|
||||||
"lantian:EeAUQ+W+6r7EtwnmYjeVwx5kOGEBpjlBfPlzGlTNvHc="
|
"lantian:EeAUQ+W+6r7EtwnmYjeVwx5kOGEBpjlBfPlzGlTNvHc="
|
||||||
|
"nixos-raspberrypi.cachix.org-1:4iMO9LXa8BqhU+Rpg6LQKiGa2lsNh/j2oiYLNOQ5sPI="
|
||||||
];
|
];
|
||||||
experimental-features = [
|
experimental-features = [
|
||||||
"flakes"
|
"flakes"
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
flake-file.inputs = {
|
flake-file.inputs = {
|
||||||
nixvim = {
|
nixvim = {
|
||||||
url = "github:nix-community/nixvim";
|
url = "github:nix-community/nixvim";
|
||||||
# inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
modules = {
|
modules = {
|
||||||
@@ -21,6 +21,18 @@
|
|||||||
};
|
};
|
||||||
homeManager =
|
homeManager =
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
|
let
|
||||||
|
tiny-code-action = pkgs.vimUtils.buildVimPlugin {
|
||||||
|
name = "tiny-code-action.nvim";
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "rachartier";
|
||||||
|
repo = "tiny-code-action.nvim";
|
||||||
|
rev = "0d040ed81f7953118b81cd12681fcdfcac069803";
|
||||||
|
hash = "sha256-UF9zeO5Uujdt2MEwy2d2Lhk6JRnEN4vrEvYslv0/zaA";
|
||||||
|
};
|
||||||
|
nvimSkipModules = [ "tiny-code-action.previewers.snacks" ];
|
||||||
|
};
|
||||||
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
inputs.nixvim.homeModules.nixvim
|
inputs.nixvim.homeModules.nixvim
|
||||||
@@ -32,17 +44,24 @@
|
|||||||
config = {
|
config = {
|
||||||
allowUnfree = true;
|
allowUnfree = true;
|
||||||
};
|
};
|
||||||
|
# source = inputs.nixpkgs;
|
||||||
};
|
};
|
||||||
colorschemes.gruvbox-material.enable = true;
|
colorschemes.gruvbox-material.enable = true;
|
||||||
|
# colorschemes.melange = {
|
||||||
|
# enable = true;
|
||||||
|
# autoLoad = false;
|
||||||
|
# };
|
||||||
extraPackages = with pkgs; [
|
extraPackages = with pkgs; [
|
||||||
# formatters
|
# formatters
|
||||||
nixfmt
|
nixfmt-rs
|
||||||
rustfmt
|
rustfmt
|
||||||
# misc
|
# misc
|
||||||
ripgrep
|
ripgrep
|
||||||
# misc
|
|
||||||
nixd
|
nixd
|
||||||
tree-sitter
|
tree-sitter
|
||||||
|
rust-analyzer
|
||||||
|
rustc
|
||||||
|
cargo
|
||||||
];
|
];
|
||||||
performance.byteCompileLua = {
|
performance.byteCompileLua = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -52,10 +71,15 @@
|
|||||||
configs = true;
|
configs = true;
|
||||||
};
|
};
|
||||||
plugins = {
|
plugins = {
|
||||||
|
luasnip.enable = true;
|
||||||
|
cmp_luasnip.enable = true;
|
||||||
|
fidget.enable = true;
|
||||||
|
mini-comment.enable = true;
|
||||||
|
# cord.enable = true;
|
||||||
todo-comments.enable = true;
|
todo-comments.enable = true;
|
||||||
lsp-status.enable = true;
|
|
||||||
transparent.enable = true;
|
transparent.enable = true;
|
||||||
which-key.enable = true;
|
which-key.enable = true;
|
||||||
|
snacks.enable = true;
|
||||||
conform-nvim = {
|
conform-nvim = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
@@ -86,12 +110,12 @@
|
|||||||
lsp = {
|
lsp = {
|
||||||
enable = true;
|
enable = true;
|
||||||
servers = {
|
servers = {
|
||||||
qmlls = {
|
# qmlls = {
|
||||||
enable = true;
|
# enable = true;
|
||||||
config = {
|
# config = {
|
||||||
cmd = "-E";
|
# cmd = "-E";
|
||||||
};
|
# };
|
||||||
};
|
# };
|
||||||
rust_analyzer = {
|
rust_analyzer = {
|
||||||
enable = true;
|
enable = true;
|
||||||
installCargo = false;
|
installCargo = false;
|
||||||
@@ -99,14 +123,26 @@
|
|||||||
};
|
};
|
||||||
nixd = {
|
nixd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
nixd = {
|
||||||
|
nixpkgs.expr = "import (builtins.getFlake \"${toString /home/doloro/dotfiles}\").inputs.nixpkgs { }";
|
||||||
|
options = {
|
||||||
|
nixos.expr = "(builtins.getFlake \"${toString /home/doloro/dotfiles}\").nixosConfigurations.desktop.options";
|
||||||
|
home_manager.expr = "(builtins.getFlake \"${toString /home/doloro/dotfiles}\").homeConfigurations.doloro-desktop.options";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
astro = {
|
astro = {
|
||||||
enable = true;
|
enable = false;
|
||||||
};
|
};
|
||||||
ts_ls = {
|
ts_ls = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
cssls.enable = true;
|
cssls = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.vscode-langservers-extracted;
|
||||||
|
};
|
||||||
svelte.enable = true;
|
svelte.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -138,7 +174,7 @@
|
|||||||
"fileformat"
|
"fileformat"
|
||||||
"filetype"
|
"filetype"
|
||||||
];
|
];
|
||||||
lualine_y = [ "lsp_status" ];
|
lualine_y = [ "progress" ];
|
||||||
lualine_z = [ "location" ];
|
lualine_z = [ "location" ];
|
||||||
};
|
};
|
||||||
inactive_sections = {
|
inactive_sections = {
|
||||||
@@ -153,7 +189,10 @@
|
|||||||
};
|
};
|
||||||
web-devicons.enable = true;
|
web-devicons.enable = true;
|
||||||
vim-dadbod-completion.enable = true;
|
vim-dadbod-completion.enable = true;
|
||||||
telescope.enable = true;
|
telescope = {
|
||||||
|
enable = true;
|
||||||
|
extensions.file-browser.enable = true;
|
||||||
|
};
|
||||||
lazygit.enable = true;
|
lazygit.enable = true;
|
||||||
mini-indentscope = {
|
mini-indentscope = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -171,29 +210,82 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
trouble.enable = true;
|
lsp-lines.enable = true;
|
||||||
|
trouble = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
auto_close = true;
|
||||||
|
use_diagnostic_signs = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
cmp = {
|
cmp = {
|
||||||
enable = true;
|
enable = true;
|
||||||
autoEnableSources = true;
|
autoEnableSources = true;
|
||||||
settings = {
|
cmdline = {
|
||||||
|
":" = {
|
||||||
|
mapping.__raw = "cmp.mapping.preset.cmdline()";
|
||||||
sources = [
|
sources = [
|
||||||
{ name = "nvim_lsp"; }
|
|
||||||
{ name = "path"; }
|
{ name = "path"; }
|
||||||
|
{ name = "cmdline"; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"/" = {
|
||||||
|
mapping.__raw = "cmp.mapping.preset.cmdline()";
|
||||||
|
sources = [
|
||||||
{ name = "buffer"; }
|
{ name = "buffer"; }
|
||||||
];
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
settings = {
|
||||||
|
snippet.expand.__raw = "function(args) require('luasnip').lsp_expand(args.body) end";
|
||||||
|
sources = [
|
||||||
|
{
|
||||||
|
name = "nvim_lsp";
|
||||||
|
priority = 100;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "nvim_lsp_signature_help";
|
||||||
|
priority = 90;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "luasnip";
|
||||||
|
priority = 75;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "buffer";
|
||||||
|
priority = 50;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "path";
|
||||||
|
priority = 40;
|
||||||
|
}
|
||||||
|
];
|
||||||
mapping = {
|
mapping = {
|
||||||
"<C-Space>" = "cmp.mapping.complete()";
|
"<C-Space>" = "cmp.mapping.complete()";
|
||||||
"<C-d>" = "cmp.mapping.scroll_docs(-4)";
|
"<C-d>" = "cmp.mapping.scroll_docs(-4)";
|
||||||
"<C-e>" = "cmp.mapping.close()";
|
"<C-e>" = "cmp.mapping.close()";
|
||||||
"<C-f>" = "cmp.mapping.scroll_docs(4)";
|
"<C-f>" = "cmp.mapping.scroll_docs(4)";
|
||||||
"<CR>" = "cmp.mapping.confirm({ select = true })";
|
"<CR>" = "cmp.mapping.confirm({ select = true })";
|
||||||
"<S-Tab>" = "cmp.mapping(cmp.mapping.select_prev_item(), {'i', 's'})";
|
"<S-Tab>" =
|
||||||
"<Tab>" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})";
|
"cmp.mapping(function(fallback) if cmp.visible() then cmp.select_prev_item() elseif require('luasnip').jumpable(-1) then require('luasnip').jump(-1) else fallback() end end, {'i', 's'})";
|
||||||
|
"<Tab>" =
|
||||||
|
"cmp.mapping(function(fallback) if cmp.visible() then cmp.select_next_item() elseif require('luasnip').expand_or_jumpable() then require('luasnip').expand_or_jump() else fallback() end end, {'i', 's'})";
|
||||||
|
};
|
||||||
|
window = {
|
||||||
|
completion = {
|
||||||
|
border = "rounded";
|
||||||
|
winhighlight = "Normal:Pmenu,FloatBorder:Pmenu,CursorLine:PmenuSel,Search:None";
|
||||||
|
};
|
||||||
|
documentation = {
|
||||||
|
border = "rounded";
|
||||||
|
winhighlight = "Normal:Pmenu,FloatBorder:Pmenu";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
lspkind.enable = true;
|
lspkind.enable = true;
|
||||||
tiny-inline-diagnostic.enable = true;
|
tiny-inline-diagnostic.enable = true;
|
||||||
|
# tiny-code-action.enable = true;
|
||||||
# persisted.enable = true;
|
# persisted.enable = true;
|
||||||
auto-session = {
|
auto-session = {
|
||||||
enable = false;
|
enable = false;
|
||||||
@@ -208,6 +300,9 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
grammarPackages = with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [
|
grammarPackages = with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [
|
||||||
bash
|
bash
|
||||||
|
css
|
||||||
|
html
|
||||||
|
javascript
|
||||||
json
|
json
|
||||||
lua
|
lua
|
||||||
make
|
make
|
||||||
@@ -216,6 +311,8 @@
|
|||||||
nix
|
nix
|
||||||
regex
|
regex
|
||||||
toml
|
toml
|
||||||
|
tsx
|
||||||
|
typescript
|
||||||
vim
|
vim
|
||||||
vimdoc
|
vimdoc
|
||||||
xml
|
xml
|
||||||
@@ -224,15 +321,13 @@
|
|||||||
];
|
];
|
||||||
settings = {
|
settings = {
|
||||||
highlight.enable = true;
|
highlight.enable = true;
|
||||||
|
indent.enable = false;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
extraPlugins = with pkgs; [
|
extraPlugins = with pkgs; [
|
||||||
# vimPlugins.mini-completion
|
vimPlugins.cmp-nvim-lsp-signature-help
|
||||||
vimPlugins.mini-comment
|
tiny-code-action
|
||||||
vimPlugins.melange-nvim
|
|
||||||
vimPlugins.telescope-file-browser-nvim
|
|
||||||
vimPlugins.lsp-progress-nvim
|
|
||||||
];
|
];
|
||||||
opts = {
|
opts = {
|
||||||
number = true;
|
number = true;
|
||||||
@@ -240,10 +335,25 @@
|
|||||||
tabstop = 2;
|
tabstop = 2;
|
||||||
shiftwidth = 2;
|
shiftwidth = 2;
|
||||||
termguicolors = true;
|
termguicolors = true;
|
||||||
|
completeopt = "menu,menuone,noselect";
|
||||||
};
|
};
|
||||||
globals = {
|
globals = {
|
||||||
mapleader = " ";
|
mapleader = " ";
|
||||||
};
|
};
|
||||||
|
extraConfigLua = ''
|
||||||
|
-- tree-sitter-nix uses (#is-not? local) which the new nvim-treesitter main branch no longer registers
|
||||||
|
vim.treesitter.query.add_predicate("is-not?", function() return true end, { force = true })
|
||||||
|
|
||||||
|
require('tiny-code-action').setup({
|
||||||
|
backend = 'vim',
|
||||||
|
picker = 'snacks',
|
||||||
|
resolve_timeout = 100,
|
||||||
|
notify = {
|
||||||
|
enabled = true,
|
||||||
|
on_empty = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
'';
|
||||||
keymaps = [
|
keymaps = [
|
||||||
{
|
{
|
||||||
action = "<cmd>Telescope persisted<cr>";
|
action = "<cmd>Telescope persisted<cr>";
|
||||||
@@ -292,6 +402,111 @@
|
|||||||
key = "<leader>fd";
|
key = "<leader>fd";
|
||||||
options = {
|
options = {
|
||||||
silent = true;
|
silent = true;
|
||||||
|
desc = "Toggle diagnostics (Trouble)";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
action = "<cmd>lua require('tiny-code-action').code_action()<cr>";
|
||||||
|
key = "<leader>ca";
|
||||||
|
mode = [
|
||||||
|
"n"
|
||||||
|
"x"
|
||||||
|
];
|
||||||
|
options = {
|
||||||
|
silent = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
# LSP
|
||||||
|
{
|
||||||
|
action = "<cmd>lua vim.lsp.buf.definition()<cr>";
|
||||||
|
key = "gd";
|
||||||
|
options = {
|
||||||
|
silent = true;
|
||||||
|
desc = "Go to definition";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
action = "<cmd>lua vim.lsp.buf.declaration()<cr>";
|
||||||
|
key = "gD";
|
||||||
|
options = {
|
||||||
|
silent = true;
|
||||||
|
desc = "Go to declaration";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
action = "<cmd>lua vim.lsp.buf.implementation()<cr>";
|
||||||
|
key = "gi";
|
||||||
|
options = {
|
||||||
|
silent = true;
|
||||||
|
desc = "Go to implementation";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
action = "<cmd>lua vim.lsp.buf.type_definition()<cr>";
|
||||||
|
key = "<leader>D";
|
||||||
|
options = {
|
||||||
|
silent = true;
|
||||||
|
desc = "Go to type definition";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
action = "<cmd>Telescope lsp_references<cr>";
|
||||||
|
key = "gr";
|
||||||
|
options = {
|
||||||
|
silent = true;
|
||||||
|
desc = "LSP references";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
action = "<cmd>lua vim.lsp.buf.hover()<cr>";
|
||||||
|
key = "K";
|
||||||
|
options = {
|
||||||
|
silent = true;
|
||||||
|
desc = "Hover docs";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
action = "<cmd>lua vim.lsp.buf.signature_help()<cr>";
|
||||||
|
key = "<C-k>";
|
||||||
|
mode = [
|
||||||
|
"n"
|
||||||
|
"i"
|
||||||
|
];
|
||||||
|
options = {
|
||||||
|
silent = true;
|
||||||
|
desc = "Signature help";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
action = "<cmd>lua vim.lsp.buf.rename()<cr>";
|
||||||
|
key = "<leader>rn";
|
||||||
|
options = {
|
||||||
|
silent = true;
|
||||||
|
desc = "Rename symbol";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
action = "<cmd>lua vim.diagnostic.goto_prev()<cr>";
|
||||||
|
key = "[d";
|
||||||
|
options = {
|
||||||
|
silent = true;
|
||||||
|
desc = "Previous diagnostic";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
action = "<cmd>lua vim.diagnostic.goto_next()<cr>";
|
||||||
|
key = "]d";
|
||||||
|
options = {
|
||||||
|
silent = true;
|
||||||
|
desc = "Next diagnostic";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
action = "<cmd>lua vim.diagnostic.open_float()<cr>";
|
||||||
|
key = "<leader>e";
|
||||||
|
options = {
|
||||||
|
silent = true;
|
||||||
|
desc = "Show diagnostic float";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|||||||
+26
-7
@@ -1,4 +1,8 @@
|
|||||||
{ den, modules, ... }:
|
{
|
||||||
|
den,
|
||||||
|
modules,
|
||||||
|
...
|
||||||
|
}:
|
||||||
{
|
{
|
||||||
modules.obs = settings: {
|
modules.obs = settings: {
|
||||||
homeManager =
|
homeManager =
|
||||||
@@ -12,14 +16,29 @@
|
|||||||
programs = {
|
programs = {
|
||||||
obs-studio = {
|
obs-studio = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = (
|
# package = (
|
||||||
pkgs.obs-studio.override {
|
# (pkgs.obs-studio.overrideAttrs (old: {
|
||||||
cudaSupport = true;
|
# version = "32.2.0-beta2-unstable";
|
||||||
}
|
# src = pkgs.fetchFromGitHub {
|
||||||
);
|
# owner = "obsproject";
|
||||||
|
# repo = "obs-studio";
|
||||||
|
# rev = "27ac23ef750aafb2bb7ddd499ede5755a5a3087f";
|
||||||
|
# hash = "sha256-3wPHNgYzR+ZIbCYMh5ocyK/nsQxy24Wfa03kheYOU88=";
|
||||||
|
# fetchSubmodules = true;
|
||||||
|
# };
|
||||||
|
# cmakeFlags = (old.cmakeFlags or []) ++ [
|
||||||
|
# "-DOBS_VERSION_OVERRIDE=32.2.0-beta2"
|
||||||
|
# ];
|
||||||
|
# })).override
|
||||||
|
# {
|
||||||
|
# cudaSupport = true;
|
||||||
|
# }
|
||||||
|
# );
|
||||||
|
package = pkgs.obs-studio.override { cudaSupport = true; };
|
||||||
plugins = with pkgs.obs-studio-plugins; [
|
plugins = with pkgs.obs-studio-plugins; [
|
||||||
obs-pipewire-audio-capture
|
obs-pipewire-audio-capture
|
||||||
obs-vkcapture
|
obs-vkcapture
|
||||||
|
obs-gstreamer
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -63,7 +82,7 @@
|
|||||||
lib.mergeAttrsList [ audio-set ];
|
lib.mergeAttrsList [ audio-set ];
|
||||||
|
|
||||||
wayland.windowManager.hyprland.settings = {
|
wayland.windowManager.hyprland.settings = {
|
||||||
exec-once = [ "${config.programs.obs-studio.finalPackage}/bin/obs --startreplaybuffer" ];
|
# exec-once = ["${config.programs.obs-studio.finalPackage}/bin/obs --startreplaybuffer"];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
# Most energy efficent scheduler setup..
|
# Most energy efficent scheduler setup..
|
||||||
systemd.services.scx.environment = {
|
systemd.services.scx.environment = {
|
||||||
SCX_SCHEDULER_OVERRIDE = "scx_lavd";
|
SCX_SCHEDULER_OVERRIDE = "scx_lavd";
|
||||||
SCX_FLAGS_OVERRIDE = "--powersave --cpu-pref-order=0-4,5-11";
|
SCX_FLAGS_OVERRIDE = "--powersave --no-core-compaction";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
/run/user/1000/quickshell/vfs/6e389f6b800776b0595d9d90e42ebd04/.qmlls.ini
|
/run/user/1000/quickshell/vfs/ca6d8e2cdd46bffdf799708f31d409fa/.qmlls.ini
|
||||||
@@ -22,15 +22,31 @@ Rectangle {
|
|||||||
id: content
|
id: content
|
||||||
height: 20
|
height: 20
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
|
spacing: 4
|
||||||
|
Rectangle {
|
||||||
|
implicitWidth: 24
|
||||||
|
implicitHeight: 20
|
||||||
|
color: "transparent"
|
||||||
Text {
|
Text {
|
||||||
id: speaker
|
anchors.centerIn: parent
|
||||||
text: root.defaultSpeaker.audio.muted ? "muted" : "unmuted"
|
text: root.defaultSpeaker.audio.muted ? "" : ""
|
||||||
|
font.family: "CaskaydiaCove NF"
|
||||||
|
font.pixelSize: 20
|
||||||
color: Colors.textPrimary
|
color: Colors.textPrimary
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
Rectangle {
|
||||||
|
implicitWidth: 24
|
||||||
|
implicitHeight: 20
|
||||||
|
color: "transparent"
|
||||||
|
radius: 3
|
||||||
Text {
|
Text {
|
||||||
id: mic
|
anchors.centerIn: parent
|
||||||
text: root.defaultMic.audio.muted ? "muted" : "unmuted"
|
text: root.defaultMic.audio.muted ? "" : ""
|
||||||
|
font.family: "CaskaydiaCove NFM"
|
||||||
|
font.pixelSize: 30
|
||||||
color: Colors.textPrimary
|
color: Colors.textPrimary
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,33 +7,28 @@
|
|||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
flake-file.inputs = {
|
flake-file.inputs = {
|
||||||
raspberry-pi-nix.url = "github:nix-community/raspberry-pi-nix";
|
raspberry-pi-nix.url = "github:cmyk/raspberry-pi-nix";
|
||||||
|
nixos-raspberrypi.url = "github:nvmd/nixos-raspberrypi/main";
|
||||||
|
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||||
};
|
};
|
||||||
modules.raspberry-pi = {
|
modules.raspberry-pi = {
|
||||||
provides = {
|
provides = {
|
||||||
"5" = {
|
"5" = {
|
||||||
nixos =
|
nixos =
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
let
|
|
||||||
rpi-pi = inputs.raspberry-pi-nix;
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
rpi-pi.nixosModules.raspberry-pi
|
inputs.nixos-hardware.nixosModules.raspberry-pi-5
|
||||||
rpi-pi.nixosModules.sd-image
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
boot.kernelPackages = pkgs.linuxPackages;
|
||||||
|
boot.kernel.sysctl."vm.mmap_rnd_bits" = pkgs.lib.mkForce 16;
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
libraspberrypi
|
libraspberrypi
|
||||||
];
|
];
|
||||||
|
|
||||||
sdImage.compressImage = false;
|
boot.supportedFilesystems.zfs = 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;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ root-hashed_password: ENC[AES256_GCM,data:vzVtz1Ht4XD+omdKjU/Zvoaftq8jKE4kxOjAGZ
|
|||||||
wakatime-scug-io-api-key: ENC[AES256_GCM,data:XQUccNW4210U8ZpHSGVcsdbAirzyTvmcy4y6emk7n4N6MO/W,iv:9/f9ceLshA7l8hJB+IDIPvEwYwSkFlPOLmpvtYXLTpU=,tag:x7hESZCouzYVNef2C+iCSA==,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]
|
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]
|
meoww: ENC[AES256_GCM,data:WPeszDfMWxY=,iv:JJMOror5wj7cTNKfrUj2LDXlO3WCKzb7jk4AeZ0oD+Q=,tag:qs3oyM7K1FGy5cXvS6OHpQ==,type:str]
|
||||||
|
scug-io-ai-key: ENC[AES256_GCM,data:b2AT2+A5eoGa1eZsCYKDFg449sOgffDcQA==,iv:NDIS3x1unq6/UtjtsyBTHx5v12utagDA3BbNzs5v3L0=,tag:MhbJGATIDWyOZUqXqRAeVA==,type:str]
|
||||||
sops:
|
sops:
|
||||||
age:
|
age:
|
||||||
- recipient: age1ykcy2r4kk729e7adqxu8s24ujc60z5eux7ma0ca4ruzydwgm5p6qmdp838
|
- enc: |
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBiZC9ZVlY2T0tXdy90b2hV
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBiZC9ZVlY2T0tXdy90b2hV
|
||||||
dDUxUjNyMjllQStaa0tKRy9YVkNIdFJyWTI4CitYNnhxN3JHQ3lsWXp2Tmgwek9n
|
dDUxUjNyMjllQStaa0tKRy9YVkNIdFJyWTI4CitYNnhxN3JHQ3lsWXp2Tmgwek9n
|
||||||
@@ -14,8 +14,8 @@ sops:
|
|||||||
MkVQY3h2OGhGaGNnYkVJUU1kK3F3VWMKs9B74KovGxx8KL5q/lGA/imVRM/i3mo/
|
MkVQY3h2OGhGaGNnYkVJUU1kK3F3VWMKs9B74KovGxx8KL5q/lGA/imVRM/i3mo/
|
||||||
a6Rbxufscp3WWGMbo70w8tWuRsAnIpUGh3EvWCekZ9nOzeMiVA8I2Q==
|
a6Rbxufscp3WWGMbo70w8tWuRsAnIpUGh3EvWCekZ9nOzeMiVA8I2Q==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
- recipient: age1e6vws55p0g23qzthm4qa93hpt6lqmck6670gkygph0sc0j7my4uq5wqjfh
|
recipient: age1ykcy2r4kk729e7adqxu8s24ujc60z5eux7ma0ca4ruzydwgm5p6qmdp838
|
||||||
enc: |
|
- enc: |
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB0dXJzYndvSC92aElvTVpz
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB0dXJzYndvSC92aElvTVpz
|
||||||
SUtTOWFzcUJxOHVrTk5scm5tcGkzRmEvK1hVClNVbmp3ZjBRTW5ZNXVNNGh3dSti
|
SUtTOWFzcUJxOHVrTk5scm5tcGkzRmEvK1hVClNVbmp3ZjBRTW5ZNXVNNGh3dSti
|
||||||
@@ -23,8 +23,8 @@ sops:
|
|||||||
Tk5Zd0h3OHRpQzZjazJKUStPUVdERzQKGnoKYKq7pPJUrcAWJ4/tm8mSxuthjssz
|
Tk5Zd0h3OHRpQzZjazJKUStPUVdERzQKGnoKYKq7pPJUrcAWJ4/tm8mSxuthjssz
|
||||||
7IsjH4t6VCyug2c7XnLJpcE64yPD+GrXHYixP0r2qj80WMjpv7N7qA==
|
7IsjH4t6VCyug2c7XnLJpcE64yPD+GrXHYixP0r2qj80WMjpv7N7qA==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
- recipient: age1x3lahhkefkap67cdmdjcqaxan9hp62er78akr79v9m73nvgugpeqk0y32a
|
recipient: age1e6vws55p0g23qzthm4qa93hpt6lqmck6670gkygph0sc0j7my4uq5wqjfh
|
||||||
enc: |
|
- enc: |
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLbGQ3MkVCUldqa3dYRTg0
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLbGQ3MkVCUldqa3dYRTg0
|
||||||
NjVoUDdIc0RvSU02R0o0ZVk4KzVQMkZmeXpjClJaUUU3WTJVQmJkRzV4UTc3bXFI
|
NjVoUDdIc0RvSU02R0o0ZVk4KzVQMkZmeXpjClJaUUU3WTJVQmJkRzV4UTc3bXFI
|
||||||
@@ -32,8 +32,8 @@ sops:
|
|||||||
QzhtM3V3VGFzdk9UenV6akxGNDh5d3cKdIKNPvM0GRJamiS4AXRNU+TbuZUnM6K7
|
QzhtM3V3VGFzdk9UenV6akxGNDh5d3cKdIKNPvM0GRJamiS4AXRNU+TbuZUnM6K7
|
||||||
FtC1dmHlyU/tXlFHv6TNlMZQtDgIVnE72Jvk48maq3oKiJAXWk11fg==
|
FtC1dmHlyU/tXlFHv6TNlMZQtDgIVnE72Jvk48maq3oKiJAXWk11fg==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
- recipient: age1exzngtk4d9vcsmcq6ap5xx3ca9qacqjkrv86ymged7msx9z6vfyqsf5sjq
|
recipient: age1x3lahhkefkap67cdmdjcqaxan9hp62er78akr79v9m73nvgugpeqk0y32a
|
||||||
enc: |
|
- enc: |
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBoOHlRcnRwWUYwUGRSVW9s
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBoOHlRcnRwWUYwUGRSVW9s
|
||||||
cmdDZjN1RGFRVWtlODBudGpaemd3UDBZcnhRCksyWlk3VW91a3pnOGNQQVppM09z
|
cmdDZjN1RGFRVWtlODBudGpaemd3UDBZcnhRCksyWlk3VW91a3pnOGNQQVppM09z
|
||||||
@@ -41,8 +41,8 @@ sops:
|
|||||||
bWFTMlhCL2IrZjlEOUFydmE4cHBzSmMKhIk8TZtRsIFKzopZCyp27SWYeHmf6jKn
|
bWFTMlhCL2IrZjlEOUFydmE4cHBzSmMKhIk8TZtRsIFKzopZCyp27SWYeHmf6jKn
|
||||||
VoIXQ6/VRRQjCYBsseZE5N+ycnr4ZC/RpXJ577G4TfGMCcixX67AfA==
|
VoIXQ6/VRRQjCYBsseZE5N+ycnr4ZC/RpXJ577G4TfGMCcixX67AfA==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
- recipient: age1fw4xnh2q52juce94ffn54js708cr6umfwpv0mykuddkea7kr4f0q7a9h05
|
recipient: age1exzngtk4d9vcsmcq6ap5xx3ca9qacqjkrv86ymged7msx9z6vfyqsf5sjq
|
||||||
enc: |
|
- enc: |
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBuTG9LKzVvUjZEZ1lkMVJN
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBuTG9LKzVvUjZEZ1lkMVJN
|
||||||
eldHSkRXQ241bnZmbHBmSXFNMU1seGcyaVNRCjNPaS9ITEJtdGRwOENDRytEMFk1
|
eldHSkRXQ241bnZmbHBmSXFNMU1seGcyaVNRCjNPaS9ITEJtdGRwOENDRytEMFk1
|
||||||
@@ -50,8 +50,8 @@ sops:
|
|||||||
WTR2RU9GUVdsZHdleW1Gd2lyRENzSm8KznMUQ6Ah8O03AzZcCXgUIjjrV1cdkAnq
|
WTR2RU9GUVdsZHdleW1Gd2lyRENzSm8KznMUQ6Ah8O03AzZcCXgUIjjrV1cdkAnq
|
||||||
Pbr2BwdLzJvlF5lzmymIZEt35euv/HzhJGWDLWGpYJmYj/N8qZgBuA==
|
Pbr2BwdLzJvlF5lzmymIZEt35euv/HzhJGWDLWGpYJmYj/N8qZgBuA==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
- recipient: age1pa8cecxaw4y4zea6zjnt0k0mz38g4qunmp6trwy5fvdvw88ttcgsv2dgrv
|
recipient: age1fw4xnh2q52juce94ffn54js708cr6umfwpv0mykuddkea7kr4f0q7a9h05
|
||||||
enc: |
|
- enc: |
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAxSDNMRlNaMXB2ZXBPTlNu
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAxSDNMRlNaMXB2ZXBPTlNu
|
||||||
eG5BWE5xRTNnVUFtN2psUFVHejZVbFVCQTBFCkRXQitoL0VJaXZmMlI3Q0JHVWk1
|
eG5BWE5xRTNnVUFtN2psUFVHejZVbFVCQTBFCkRXQitoL0VJaXZmMlI3Q0JHVWk1
|
||||||
@@ -59,8 +59,8 @@ sops:
|
|||||||
Q0x4bDFBTzV2L0E3UXQxMUdubVJZRTgKcPQZ9zHQAFwP/Odnh5INleUsHSN06U+x
|
Q0x4bDFBTzV2L0E3UXQxMUdubVJZRTgKcPQZ9zHQAFwP/Odnh5INleUsHSN06U+x
|
||||||
X98535uapyJR/Wswxj6ukdciMOou8cLfOInLwJgWOf6mZklEhecVXA==
|
X98535uapyJR/Wswxj6ukdciMOou8cLfOInLwJgWOf6mZklEhecVXA==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
- recipient: age1kc0xu0ue2nrrr7w4gam7wlzackv8jv243rxwwndgxjqklgtnp5csdtpgzp
|
recipient: age1pa8cecxaw4y4zea6zjnt0k0mz38g4qunmp6trwy5fvdvw88ttcgsv2dgrv
|
||||||
enc: |
|
- enc: |
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBTaE1mUUlyVUxKQmhPMnlT
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBTaE1mUUlyVUxKQmhPMnlT
|
||||||
eS81cE5TeE1WWFVIRkdWT3c0ckhNMnFYZGxrCnp4My9nK20zcGVxUFZ0cnVVTDBS
|
eS81cE5TeE1WWFVIRkdWT3c0ckhNMnFYZGxrCnp4My9nK20zcGVxUFZ0cnVVTDBS
|
||||||
@@ -68,7 +68,8 @@ sops:
|
|||||||
bzJvaUg2VkFrazBoWmlIY2hKeUdhTjQKbgW+ysm3TWBKfVoKAeqvaPio29SyzjJP
|
bzJvaUg2VkFrazBoWmlIY2hKeUdhTjQKbgW+ysm3TWBKfVoKAeqvaPio29SyzjJP
|
||||||
61QsSqCuJyEwSPpOzeWa5NChcCjitOUG1jEMsSHlpIslKA1P7g/P9g==
|
61QsSqCuJyEwSPpOzeWa5NChcCjitOUG1jEMsSHlpIslKA1P7g/P9g==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
lastmodified: "2026-02-14T00:08:39Z"
|
recipient: age1kc0xu0ue2nrrr7w4gam7wlzackv8jv243rxwwndgxjqklgtnp5csdtpgzp
|
||||||
mac: ENC[AES256_GCM,data:lp9ZeDxt5gkOkDmYk+F0VQrVhkR0tQiQlYXbygoA8Dcq+gV0IIKKLwRqr5CVfgfRlo3239IwmKLsGaS6zYC1xX4toZ8oqw3Ic2UvP2CiWt6M7HTrlL+3Y2+PKOUvGl7RAqQxQAw7QaoxB4esqdIiWnMDueVHk5BTKrkay+afhno=,iv:NAMaZ9SMBAtROTBSQtU0RJDB60MAuE82AFoPtDqVHVM=,tag:RGBUTQC1pM+LcBweSJbc6w==,type:str]
|
lastmodified: "2026-07-22T22:45:05Z"
|
||||||
|
mac: ENC[AES256_GCM,data:jfbsnWcZ6yJSUbRn8VbONhj3oin1+DsHzJ590BbdPtikZwjD/0f06NQ86b0DI5/M+LKP4Dy5Cyf7xyJ99iWuOKbF9y12qK17IqMaNZCmPkw8Y+v7q38ESsW/Iizr3hfQ2L2GwJNTWsoifCeQphxGby7s2lKjMPYGKhYrgicZ5Fs=,iv:bbL+59d0S1fdfDInLS5z9Vx+AVW6nb0z2BNgZ+5PbUM=,tag:jJYnLsORyEuClRm/t4mwcA==,type:str]
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
version: 3.11.0
|
version: 3.13.2
|
||||||
|
|||||||
@@ -15,7 +15,8 @@
|
|||||||
inputs.sops-nix.homeManagerModules.sops
|
inputs.sops-nix.homeManagerModules.sops
|
||||||
];
|
];
|
||||||
sops = {
|
sops = {
|
||||||
age.keyFile = "/home/doloro/.config/sops/age/key.txt"; # must have no password!
|
age.keyFile = "/home/doloro/.config/sops/age/keys.txt"; # must have no password!
|
||||||
|
# I HATE YOU
|
||||||
defaultSopsFile = ./content/secrets.yaml;
|
defaultSopsFile = ./content/secrets.yaml;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3,17 +3,17 @@
|
|||||||
__findFile,
|
__findFile,
|
||||||
modules,
|
modules,
|
||||||
...
|
...
|
||||||
}:
|
}: {
|
||||||
{
|
|
||||||
# Basic caddy
|
# Basic caddy
|
||||||
modules.services.provides.caddy = {
|
modules.services.provides.caddy = {
|
||||||
nixos =
|
nixos = {config, ...}: {
|
||||||
{ config, ... }:
|
|
||||||
{
|
|
||||||
services.caddy = {
|
services.caddy = {
|
||||||
enable = true;
|
enable = true;
|
||||||
email = "doloroo@proton.me";
|
email = "doloroo@proton.me";
|
||||||
enableReload = true;
|
enableReload = true;
|
||||||
|
globalConfig = ''
|
||||||
|
acme_ca https://acme-v02.api.letsencrypt.org/directory
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3,13 +3,14 @@
|
|||||||
__findFile,
|
__findFile,
|
||||||
modules,
|
modules,
|
||||||
...
|
...
|
||||||
}:
|
}: {
|
||||||
{
|
|
||||||
# Basic traefik
|
# Basic traefik
|
||||||
modules.services.provides.ddns = {
|
modules.services.provides.ddns = {
|
||||||
nixos =
|
nixos = {
|
||||||
{ config, pkgs, ... }:
|
config,
|
||||||
let
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
ddnsImg = pkgs.dockerTools.pullImage {
|
ddnsImg = pkgs.dockerTools.pullImage {
|
||||||
imageName = "qmcgaw/ddns-updater";
|
imageName = "qmcgaw/ddns-updater";
|
||||||
imageDigest = "sha256:ee16ab4f6203bf9e5b0925d38a0b4ebf2d9f23771f933cfb2f5a2dbd5f9a2f88";
|
imageDigest = "sha256:ee16ab4f6203bf9e5b0925d38a0b4ebf2d9f23771f933cfb2f5a2dbd5f9a2f88";
|
||||||
@@ -18,8 +19,7 @@
|
|||||||
sha256 = "sha256-dMCHkvoFaORmGwbIM9io4Vc9fq+wBks25k2dmnW7naI=";
|
sha256 = "sha256-dMCHkvoFaORmGwbIM9io4Vc9fq+wBks25k2dmnW7naI=";
|
||||||
arch = "arm64";
|
arch = "arm64";
|
||||||
};
|
};
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
virtualisation.oci-containers.containers = {
|
virtualisation.oci-containers.containers = {
|
||||||
ddns = {
|
ddns = {
|
||||||
image = "qmcgaw/ddns-updater";
|
image = "qmcgaw/ddns-updater";
|
||||||
@@ -28,10 +28,18 @@
|
|||||||
"/data/ddns:/updater/data"
|
"/data/ddns:/updater/data"
|
||||||
"/etc/localtime:/etc/localtime:ro"
|
"/etc/localtime:/etc/localtime:ro"
|
||||||
];
|
];
|
||||||
# ports = [ "0.0.0.0:8123:8123" ];
|
ports = ["0.0.0.0:8125:8000"];
|
||||||
# networks = [ "meow" ];
|
# networks = [ "meow" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
services.caddy = pkgs.lib.mkIf config.services.caddy.enable {
|
||||||
|
virtualHosts."ddns.h.doloro.co.uk".extraConfig = ''
|
||||||
|
reverse_proxy :8125
|
||||||
|
basic_auth {
|
||||||
|
doloro $2a$14$FH.UkwC0PUsQ7IEV9XLAf.6/11KLsugCbrX/o6dPTx7NBlJWv3aiO
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,49 @@
|
|||||||
|
{
|
||||||
|
den,
|
||||||
|
__findFile,
|
||||||
|
modules,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# Basic traefik
|
||||||
|
modules.services.provides.docker-registry = {
|
||||||
|
nixos = {
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
registryImg = pkgs.dockerTools.pullImage {
|
||||||
|
imageName = "registry";
|
||||||
|
imageDigest = "sha256:85347ed2ecde64161c7a4788a4d7d3dcc9d6f86f7be95834022e3c6a423a945a";
|
||||||
|
finalImageName = "registry";
|
||||||
|
finalImageTag = "3";
|
||||||
|
sha256 = "sha256-rLG0q/MVVz52veqZuZs5W0Qke6FugXkx7fMe3QnE3gU";
|
||||||
|
arch = "arm64";
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
virtualisation.oci-containers.containers = {
|
||||||
|
docker-registry = {
|
||||||
|
image = "registry";
|
||||||
|
imageFile = registryImg;
|
||||||
|
volumes = [
|
||||||
|
"/data/dockerRegistry:/var/lib/registry"
|
||||||
|
"/run/dbus:/run/dbus:ro"
|
||||||
|
"/etc/localtime:/etc/localtime:ro"
|
||||||
|
];
|
||||||
|
ports = ["0.0.0.0:5000:5000"];
|
||||||
|
# networks = [ "meow" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
networking.firewall = {
|
||||||
|
allowedTCPPorts = [
|
||||||
|
5000
|
||||||
|
];
|
||||||
|
allowedUDPPortRanges = [];
|
||||||
|
};
|
||||||
|
services.caddy = pkgs.lib.mkIf config.services.caddy.enable {
|
||||||
|
virtualHosts."https://reg.h.doloro.co.uk".extraConfig = ''
|
||||||
|
reverse_proxy :5000
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,105 @@
|
|||||||
|
{
|
||||||
|
den,
|
||||||
|
__findFile,
|
||||||
|
modules,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
modules.services.provides.rtmp-to-whip = {
|
||||||
|
nixos =
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
systemd.services.init-rtmp-to-whip-network = {
|
||||||
|
description = "Create rtmp-to-whip docker network";
|
||||||
|
after = [
|
||||||
|
"docker.service"
|
||||||
|
"docker.socket"
|
||||||
|
];
|
||||||
|
requires = [
|
||||||
|
"docker.service"
|
||||||
|
"docker.socket"
|
||||||
|
];
|
||||||
|
before = [
|
||||||
|
"docker-rtmp-to-whip.service"
|
||||||
|
"docker-rtmp-to-whip-frontend.service"
|
||||||
|
];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
};
|
||||||
|
script = ''
|
||||||
|
${pkgs.docker}/bin/docker network inspect rtmp-to-whip >/dev/null 2>&1 || \
|
||||||
|
${pkgs.docker}/bin/docker network create rtmp-to-whip
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
virtualisation.oci-containers.containers = {
|
||||||
|
rtmp-to-whip = {
|
||||||
|
image = "reg.h.doloro.co.uk/doloro/rtmp-to-whip:latest-aarch64";
|
||||||
|
ports = [
|
||||||
|
"0.0.0.0:1935:1935"
|
||||||
|
"0.0.0.0:6969:6969/udp"
|
||||||
|
"127.0.0.1:3001:3000"
|
||||||
|
];
|
||||||
|
environment = {
|
||||||
|
PUBLIC_DOMAIN = "stream.h.doloro.co.uk";
|
||||||
|
RTC_PORT = "6969";
|
||||||
|
SIGNUP_CODE = "mreowmreow-pawsatyou";
|
||||||
|
RUST_LOG = "info,warn";
|
||||||
|
};
|
||||||
|
volumes = [
|
||||||
|
"/data/rtmp-to-whip/db:/db"
|
||||||
|
];
|
||||||
|
extraOptions = [ "--network=rtmp-to-whip" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
rtmp-to-whip-frontend = {
|
||||||
|
image = "reg.h.doloro.co.uk/doloro/rtmp-to-whip-frontend:latest-aarch64";
|
||||||
|
ports = [
|
||||||
|
"127.0.0.1:3002:3000"
|
||||||
|
];
|
||||||
|
environment = {
|
||||||
|
VITE_API_URL = "https://stream.h.doloro.co.uk/api";
|
||||||
|
};
|
||||||
|
extraOptions = [ "--network=rtmp-to-whip" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
rtmp-to-whip-watchtower = {
|
||||||
|
image = "ghcr.io/nicholas-fedor/watchtower:latest";
|
||||||
|
volumes = [
|
||||||
|
"/var/run/docker.sock:/var/run/docker.sock"
|
||||||
|
];
|
||||||
|
environment = {
|
||||||
|
WATCHTOWER_CLEANUP = "true";
|
||||||
|
WATCHTOWER_POLL_INTERVAL = "300";
|
||||||
|
};
|
||||||
|
cmd = [
|
||||||
|
"rtmp-to-whip"
|
||||||
|
"rtmp-to-whip-frontend"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall = {
|
||||||
|
allowedTCPPorts = [ 1935 ];
|
||||||
|
allowedUDPPorts = [ 6969 ];
|
||||||
|
};
|
||||||
|
|
||||||
|
services.caddy = pkgs.lib.mkIf config.services.caddy.enable {
|
||||||
|
virtualHosts."stream.h.doloro.co.uk".extraConfig = ''
|
||||||
|
handle /api* {
|
||||||
|
reverse_proxy :3001
|
||||||
|
}
|
||||||
|
handle {
|
||||||
|
reverse_proxy :3002
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -8,10 +8,10 @@
|
|||||||
ssh = {
|
ssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableDefaultConfig = false;
|
enableDefaultConfig = false;
|
||||||
matchBlocks = {
|
settings = {
|
||||||
"*" = {
|
"*" = {
|
||||||
addKeysToAgent = "yes";
|
AddKeysToAgent = "yes";
|
||||||
identityFile = [
|
IdentityFile = [
|
||||||
"~/.ssh/id_ed25519"
|
"~/.ssh/id_ed25519"
|
||||||
"~/.ssh/id_gitea_scug"
|
"~/.ssh/id_gitea_scug"
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -3,8 +3,7 @@
|
|||||||
modules,
|
modules,
|
||||||
inputs,
|
inputs,
|
||||||
...
|
...
|
||||||
}:
|
}: {
|
||||||
{
|
|
||||||
flake-file.inputs = {
|
flake-file.inputs = {
|
||||||
stylix = {
|
stylix = {
|
||||||
url = "github:nix-community/stylix";
|
url = "github:nix-community/stylix";
|
||||||
@@ -12,11 +11,9 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
modules.stylix = {
|
modules.stylix = {
|
||||||
homeManager =
|
homeManager = {pkgs, ...}: {
|
||||||
{ pkgs, ... }:
|
imports = [inputs.stylix.homeModules.stylix];
|
||||||
{
|
# gtk.gtk4.theme = null;
|
||||||
imports = [ inputs.stylix.homeModules.stylix ];
|
|
||||||
gtk.gtk4.theme = null;
|
|
||||||
stylix = {
|
stylix = {
|
||||||
enable = true;
|
enable = true;
|
||||||
autoEnable = false;
|
autoEnable = false;
|
||||||
@@ -32,10 +29,8 @@
|
|||||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-hard.yaml";
|
base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-hard.yaml";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
nixos =
|
nixos = {pkgs, ...}: {
|
||||||
{ pkgs, ... }:
|
imports = [inputs.stylix.nixosModules.stylix];
|
||||||
{
|
|
||||||
imports = [ inputs.stylix.nixosModules.stylix ];
|
|
||||||
stylix.enable = false;
|
stylix.enable = false;
|
||||||
stylix.autoEnable = false;
|
stylix.autoEnable = false;
|
||||||
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-hard.yaml";
|
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-hard.yaml";
|
||||||
|
|||||||
@@ -2,7 +2,11 @@
|
|||||||
{
|
{
|
||||||
modules.tmux = {
|
modules.tmux = {
|
||||||
homeManager =
|
homeManager =
|
||||||
{ home, pkgs, ... }:
|
{
|
||||||
|
home,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
{
|
{
|
||||||
programs.tmux = {
|
programs.tmux = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -11,10 +15,12 @@
|
|||||||
minimal-tmux-status
|
minimal-tmux-status
|
||||||
];
|
];
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
set-option -g default-terminal "xterm-256color"
|
set-option -g default-terminal "tmux-256color"
|
||||||
set -a terminal-features "xterm-256color:RGB"
|
set -as terminal-features ",xterm-256color:RGB"
|
||||||
set -g status-bg black
|
set -g status-bg black
|
||||||
set -g status-fg white
|
set -g status-fg white
|
||||||
|
set -g mouse on
|
||||||
|
set -g extended-keys on
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
default_session = {
|
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 --greeting 'meow meow meow' --time";
|
command = "${pkgs.tuigreet}/bin/tuigreet --sessions ${config.services.displayManager.sessionData.desktops}/share/xsessions:${config.services.displayManager.sessionData.desktops}/share/wayland-sessions --remember --remember-user-session --greeting 'meow meow meow' --time";
|
||||||
user = "greeter";
|
user = "greeter";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{modules, ...}: {
|
||||||
|
modules.unity = {
|
||||||
|
homeManager = {pkgs, ...}: {
|
||||||
|
home.packages = [pkgs.unityhub pkgs.alcom pkgs.unityhub.fhsEnv];
|
||||||
|
home.file."unityExec" = {
|
||||||
|
source = "${pkgs.unityhub}/bin/unityhub";
|
||||||
|
recursive = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -7,6 +7,7 @@
|
|||||||
users.users.${user.userName} = {
|
users.users.${user.userName} = {
|
||||||
extraGroups = [
|
extraGroups = [
|
||||||
"wheel"
|
"wheel"
|
||||||
|
"libvirtd"
|
||||||
"networkmanager"
|
"networkmanager"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
modules,
|
||||||
|
den,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
flake-file.inputs = {
|
||||||
|
nixos-wsl.url = "github:nix-community/NixOS-WSL";
|
||||||
|
};
|
||||||
|
modules.wsl = {
|
||||||
|
nixos = {
|
||||||
|
imports = [inputs.nixos-wsl.nixosModules.default];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Generated
+615
-288
File diff suppressed because it is too large
Load Diff
@@ -4,11 +4,12 @@
|
|||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
den.url = "github:vic/den?ref=8101ec865c0bf4027d40b9fd8951e3e435a86d64";
|
den.url = "github:vic/den?ref=8101ec865c0bf4027d40b9fd8951e3e435a86d64";
|
||||||
|
direnv-instant.url = "github:Mic92/direnv-instant";
|
||||||
disko.url = "github:nix-community/disko";
|
disko.url = "github:nix-community/disko";
|
||||||
flake-file.url = "github:vic/flake-file";
|
flake-file.url = "github:vic/flake-file";
|
||||||
flake-parts = {
|
flake-parts = {
|
||||||
url = "github:hercules-ci/flake-parts";
|
url = "github:hercules-ci/flake-parts";
|
||||||
inputs.nixpkgs-lib.follows = "nixpkgs-lib";
|
inputs.nixpkgs-lib.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
font-patcher.url = "github:Doloro1978/nix-nerd-fonts-patcher";
|
font-patcher.url = "github:Doloro1978/nix-nerd-fonts-patcher";
|
||||||
heliumFlake = {
|
heliumFlake = {
|
||||||
@@ -20,9 +21,10 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
hyprland.url = "github:hyprwm/Hyprland";
|
hyprland.url = "github:hyprwm/Hyprland";
|
||||||
|
hytale-launcher.url = "github:JPyke3/hytale-launcher-nix";
|
||||||
import-tree.url = "github:vic/import-tree";
|
import-tree.url = "github:vic/import-tree";
|
||||||
nik-pkgs = {
|
nik-pkgs = {
|
||||||
url = "git+https://git.scug.io/nikkuss/pkgs.git";
|
url = "git+https://git.scug.io/nikkuss/pkgs.git?ref=main";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
niri-flake = {
|
niri-flake = {
|
||||||
@@ -30,13 +32,18 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
nix-cachyos-kernel.url = "github:xddxdd/nix-cachyos-kernel/release";
|
nix-cachyos-kernel.url = "github:xddxdd/nix-cachyos-kernel/release";
|
||||||
nixpkgs.url = "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz";
|
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=latest";
|
||||||
nixpkgs-lib.follows = "nixpkgs";
|
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||||
|
nixos-raspberrypi.url = "github:nvmd/nixos-raspberrypi/main";
|
||||||
|
nixos-wsl.url = "github:nix-community/NixOS-WSL";
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
nixpkgs-master.url = "github:NixOS/nixpkgs/master";
|
||||||
nixvim = {
|
nixvim = {
|
||||||
url = "github:nix-community/nixvim";
|
url = "github:nix-community/nixvim";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
raspberry-pi-nix.url = "github:nix-community/raspberry-pi-nix";
|
omp-nix.url = "git+https://git.molez.org/mandlm/omp-nix?ref=main";
|
||||||
|
raspberry-pi-nix.url = "github:cmyk/raspberry-pi-nix";
|
||||||
sops-nix = {
|
sops-nix = {
|
||||||
url = "github:Mic92/sops-nix";
|
url = "github:Mic92/sops-nix";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|||||||
Reference in New Issue
Block a user