Compare commits

...

19 Commits

Author SHA1 Message Date
cybrneko c71a64b8e0 athena low latency 2026-07-25 05:25:35 -05:00
cybrneko a1368bd3d1 added gnome-tweaks 2026-07-25 04:43:54 -05:00
cybrneko 34af65951f athena hardware config 2026-07-25 04:41:17 -05:00
cybrneko fa292da0f0 separated out the bits of my config so I can have two computers 2026-07-25 03:58:23 -05:00
cybrneko e27621c910 fixed typo 2026-07-07 20:23:33 -05:00
cybrneko df81919851 nintendo switch game backup udev rules 2026-07-07 20:22:10 -05:00
cybrneko 2460fe2183 musnix integration 2026-07-07 20:21:56 -05:00
cybrneko 8f706b5683 delared dock order 2026-07-06 00:06:57 -05:00
cybrneko 8b6678817e realtime audio stuff 2026-07-06 00:06:45 -05:00
cybrneko 090547a5bd made gnome always show the log-out button 2026-07-05 16:38:27 -05:00
cybrneko 7cb7cee7b2 added audio role to cybrneko 2026-07-05 16:32:40 -05:00
cybrneko 22ce460a57 fixed semicolon misplacements 2026-07-05 16:16:42 -05:00
cybrneko f4b2650aee disabled gnome-hotcorners within home.nix 2026-07-05 16:16:05 -05:00
cybrneko d8dc1f6ed5 fixed issue with dconf settings for two extensions 2026-07-05 16:15:14 -05:00
cybrneko bf1053c4a7 added automatic wallpaper setting 2026-07-05 16:08:32 -05:00
cybrneko cded37b1bd added firewall support for KDE connect 2026-07-04 16:08:08 -05:00
cybrneko 6e01ff9341 added some apps to user flatpak list 2026-07-04 16:07:48 -05:00
cybrneko 78cb017442 added wine 2026-07-04 13:34:17 -05:00
cybrneko 5f3719e671 added readme 2026-07-04 13:00:02 -05:00
13 changed files with 334 additions and 32 deletions
+10
View File
@@ -0,0 +1,10 @@
{ ... }:
{
imports = [
./configuration.nix
./artemis-hardware-configuration.nix
];
networking.hostName = "artemis";
}
+31
View File
@@ -0,0 +1,31 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/c5614bab-0755-48a2-9cb0-0dc31b98371f";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/1965-42F3";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices = [ ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}
+19
View File
@@ -0,0 +1,19 @@
{ ... }:
{
imports = [
./configuration.nix
./athena-hardware-configuration.nix
];
networking.hostName = "athena";
services.pipewire.extraConfig.pipewire."10-low-latency" = {
"context.properties" = {
"default.clock.rate" = 48000;
"default.clock.quantum" = 64;
"default.clock.min-quantum" = 64;
"default.clock.max-quantum" = 64;
};
};
}
+61 -10
View File
@@ -5,19 +5,12 @@
{ config, pkgs, ... }: { config, pkgs, ... }:
{ {
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
];
# Bootloader. # Bootloader.
boot.loader.systemd-boot.enable = true; boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true; boot.loader.efi.canTouchEfiVariables = true;
# Use latest kernel. # Use latest kernel.
boot.kernelPackages = pkgs.linuxPackages_latest; boot.kernelPackages = pkgs.linuxPackages_zen;
networking.hostName = "artemis"; # Define your hostname.
networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# Configure network proxy if necessary # Configure network proxy if necessary
@@ -25,7 +18,12 @@
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Enable networking # Enable networking
networking.networkmanager.enable = true; networking.networkmanager = {
enable = true;
plugins = with pkgs; [
networkmanager-openvpn
];
};
# Set your time zone. # Set your time zone.
time.timeZone = "America/Chicago"; time.timeZone = "America/Chicago";
@@ -76,6 +74,33 @@
# no need to redefine it in your config for now) # no need to redefine it in your config for now)
#media-session.enable = true; #media-session.enable = true;
}; };
musnix.enable = true;
musnix.kernel.realtime = false; # force non-RT while we tune everything else
musnix.rtirq.enable = true; # IRQ thread priority tuning — helps USB audio specifically
musnix.rtirq.nameList = "snd usb"; # prioritize sound + USB IRQs
# realtime audio shenanigans
security.pam.loginLimits = [
{
domain = "@audio";
type = "-";
item = "rtprio";
value = "95";
}
{
domain = "@audio";
type = "-";
item = "memlock";
value = "unlimited";
}
];
systemd.user.services.pipewire.serviceConfig.CPUAffinity = "8-15";
systemd.user.services.wireplumber.serviceConfig.CPUAffinity = "8-15";
systemd.services.rtkit-daemon.serviceConfig.CPUAffinity = "8-15";
programs.nix-ld.enable = true;
# Enable touchpad support (enabled default in most desktopManager). # Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true; # services.xserver.libinput.enable = true;
@@ -84,7 +109,7 @@
users.users."cybrneko" = { users.users."cybrneko" = {
isNormalUser = true; isNormalUser = true;
description = "cybrneko"; description = "cybrneko";
extraGroups = [ "networkmanager" "wheel" ]; extraGroups = [ "networkmanager" "wheel" "audio" ];
packages = with pkgs; [ packages = with pkgs; [
# thunderbird # thunderbird
]; ];
@@ -102,12 +127,15 @@
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
wget wget
git git
wine
yabridge yabridge
yabridgectl yabridgectl
qpwgraph qpwgraph
hydrapaper hydrapaper
nextcloud-client nextcloud-client
fastfetch fastfetch
epson-escpr2
gnome-tweaks
]; ];
nix.settings.experimental-features = [ "nix-command" "flakes" ]; nix.settings.experimental-features = [ "nix-command" "flakes" ];
@@ -123,11 +151,34 @@
# List services that you want to enable: # List services that you want to enable:
services.flatpak.enable = true; services.flatpak.enable = true;
# Enable Nintendo Switch Cartridge dumping
services.udev.packages = [
(pkgs.writeTextFile{
name = "nxdumptool-udev";
destination = "/etc/udev/rules.d/71-nxdumptool.rules";
text = builtins.readFile ./udev/71-nxdumptool.rules;
})
];
services.udev.extraRules = ''
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="1235", ATTR{power/control}="on"
'';
# Enable the OpenSSH daemon. # Enable the OpenSSH daemon.
# services.openssh.enable = true; # services.openssh.enable = true;
# Open ports in the firewall. # Open ports in the firewall.
networking.firewall = {
allowedTCPPortRanges = [
{ from = 1714; to = 1764; }
];
allowedUDPPortRanges = [
{ from = 1714; to = 1764; }
];
};
# networking.firewall.allowedTCPPorts = [ ... ]; # networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ]; # networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether. # Or disable the firewall altogether.
Generated
+36 -1
View File
@@ -21,6 +21,24 @@
"type": "github" "type": "github"
} }
}, },
"musnix": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1777848538,
"narHash": "sha256-Dj51C0NWsglqRrCpdmMr2nFiYacFOid1Tor4H9yG2HY=",
"owner": "musnix",
"repo": "musnix",
"rev": "8548782f0d1d0928daa3fffde8a008f72219a3f3",
"type": "github"
},
"original": {
"owner": "musnix",
"repo": "musnix",
"type": "github"
}
},
"nix-flatpak": { "nix-flatpak": {
"locked": { "locked": {
"lastModified": 1780908363, "lastModified": 1780908363,
@@ -37,6 +55,22 @@
} }
}, },
"nixpkgs": { "nixpkgs": {
"locked": {
"lastModified": 1777268161,
"narHash": "sha256-bxrdOn8SCOv8tN4JbTF/TXq7kjo9ag4M+C8yzzIRYbE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "1c3fe55ad329cbcb28471bb30f05c9827f724c76",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1782847225, "lastModified": 1782847225,
"narHash": "sha256-JC9PjqKYG9ve5U8aDOLQipp3+KLANBHUvGdLZlxzdKI=", "narHash": "sha256-JC9PjqKYG9ve5U8aDOLQipp3+KLANBHUvGdLZlxzdKI=",
@@ -55,8 +89,9 @@
"root": { "root": {
"inputs": { "inputs": {
"home-manager": "home-manager", "home-manager": "home-manager",
"musnix": "musnix",
"nix-flatpak": "nix-flatpak", "nix-flatpak": "nix-flatpak",
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs_2"
} }
} }
}, },
+36 -19
View File
@@ -4,6 +4,7 @@
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-26.05"; nixpkgs.url = "github:nixos/nixpkgs/nixos-26.05";
nix-flatpak.url = "github:gmodena/nix-flatpak"; nix-flatpak.url = "github:gmodena/nix-flatpak";
musnix.url = "github:musnix/musnix";
home-manager = { home-manager = {
url = "github:nix-community/home-manager/release-26.05"; url = "github:nix-community/home-manager/release-26.05";
@@ -11,30 +12,46 @@
}; };
}; };
outputs = { self, nixpkgs, home-manager, nix-flatpak, ... }: outputs = { self, nixpkgs, home-manager, nix-flatpak, musnix, ... }:
let let
system = "x86_64-linux"; system = "x86_64-linux";
commonModules = [
musnix.nixosModules.musnix
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.cybrneko = { pkgs, ... }: {
imports = [
nix-flatpak.homeManagerModules.nix-flatpak
./home.nix
./users/cybrneko.nix
];
};
}
];
in { in {
nixosConfigurations.nixos = nixpkgs.lib.nixosSystem { nixosConfigurations = {
inherit system; artemis = nixpkgs.lib.nixosSystem {
inherit system;
modules = [ modules = [
./configuration.nix ./artemis.nix
] ++ commonModules;
};
home-manager.nixosModules.home-manager athena = nixpkgs.lib.nixosSystem {
inherit system;
{ modules = [
home-manager.useGlobalPkgs = true; ./athena.nix
home-manager.useUserPackages = true; ] ++ commonModules;
home-manager.users.cybrneko = { pkgs, ... }: { };
imports = [
nix-flatpak.homeManagerModules.nix-flatpak
./home.nix
./users/cybrneko.nix
];
};
}
];
}; };
}; };
} }
+23 -2
View File
@@ -38,14 +38,35 @@
]; ];
disabled-extensions = [ ]; disabled-extensions = [ ];
always-show-log-out = true;
favorite-apps = [
"io.gitlab.librewolf-community.desktop"
"im.fluffychat.Fluffychat.desktop"
"dev.vencord.Vesktop.desktop"
"steam.desktop"
"org.gnome.Console.desktop"
"org.gnome.Nautilus.desktop"
"com.renoise.Renoise.desktop"
"com.lwks.Lightworks.desktop"
"com.bitwig.BitwigStudio.desktop"
"org.gimp.GIMP.desktop"
"org.libreoffice.LibreOffice.writer.desktop"
"org.libreoffice.LibreOffice.calc.desktop"
];
}; };
"org/gnome/shell/extensions/caffeine" = { "org/gnome/shell/extensions/caffeine" = {
show-indicator = [ "always" ]; show-indicator = "always";
}; };
"org/gnome/shell/extensions/status-tray" = { "org/gnome/shell/extensions/status-tray" = {
icon-mode = [ "original" ]; icon-mode = "original";
};
"org/gnome/desktop/interface" = {
enable-hot-corners = false;
}; };
}; };
+2
View File
@@ -0,0 +1,2 @@
# cybrneko's nixOS config
This is just a repo to store (And back up) my nixOS configuration
+79
View File
@@ -0,0 +1,79 @@
#!/usr/bin/env bash
set -euo pipefail
WP_DIR="$HOME/Pictures/Wallpapers"
aspect_name() {
local w="$1"
local h="$2"
local a="$w"
local b="$h"
local t
local aspect
while (( b != 0 )); do
t=$b
b=$(( a % b ))
a=$t
done
aspect="$(( w / a ))x$(( h / a ))"
case "$aspect" in
64x27|43x18)
echo "21x9"
;;
8x5)
echo "16x10"
;;
*)
echo "$aspect"
;;
esac
}
process_wallpapers() {
wallpapers=()
while read -r line; do
if [[ "$line" == *"+*"* ]]; then
role="primary"
else
role="secondary"
fi
geom="$(awk '{print $3}' <<< "$line")"
width="${geom%%/*}"
rest="${geom#*x}"
height="${rest%%/*}"
aspect="$(aspect_name "$width" "$height")"
wallpapers+=("$WP_DIR/$aspect-$role.png")
done < <(xrandr --listmonitors | tail -n +2)
count="${#wallpapers[@]}"
modes=()
for (( i=0; i<${#wallpapers[@]}; i++ )); do
modes+=("zoom")
done
echo "${wallpapers[@]}"
hydrapaper --cli "${wallpapers[@]}" --mode "${modes[@]}"
}
last_applied=""
pending=""
while true; do
current="$(xrandr --query 2>/dev/null | grep ' connected' || true)"
if [[ "$current" != "$pending" ]]; then
pending="$current"
elif [[ "$current" != "$last_applied" ]]; then
last_applied="$current"
process_wallpapers
fi
sleep 1
done
+2
View File
@@ -0,0 +1,2 @@
# Nintendo SDK debugger, which nxdumptool presents itself as
SUBSYSTEM=="usb", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="3000", TAG+="uaccess"
+6
View File
@@ -1,6 +1,10 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
{ {
imports = [
../utilities/autowallpaper.nix
];
home.activation.createAudioDirectories = home.activation.createAudioDirectories =
lib.hm.dag.entryAfter [ "writeBoundary" ] '' lib.hm.dag.entryAfter [ "writeBoundary" ] ''
mkdir -p \ mkdir -p \
@@ -21,6 +25,8 @@
"dev.vencord.Vesktop" "dev.vencord.Vesktop"
"im.fluffychat.Fluffychat" "im.fluffychat.Fluffychat"
"org.videolan.VLC" "org.videolan.VLC"
"org.libreoffice.LibreOffice"
"org.gimp.GIMP"
]; ];
}; };
} }
+29
View File
@@ -0,0 +1,29 @@
{ config, pkgs, ... }:
let
wallpaperWatch = pkgs.writeShellScriptBin "wallpaper-watch"
(builtins.readFile ../scripts/wallpaper-watch.sh);
in
{
home.packages = [
wallpaperWatch
];
systemd.user.services.wallpaper-watcher = {
Unit = {
Description = "Dynamic wallpaper watcher";
After = [ "graphical-session.target" ];
PartOf = [ "graphical-session.target" ];
};
Service = {
ExecStart = "${wallpaperWatch}/bin/wallpaper-watch";
Restart = "always";
RestartSec = 2;
};
Install = {
WantedBy = [ "graphical-session.target" ];
};
};
}