new and impruved

This commit is contained in:
zastian@mrthoddata.com
2025-05-07 15:45:08 +01:00
commit bdf553079b
197 changed files with 5824 additions and 0 deletions

48
system/boot.nix Executable file
View File

@@ -0,0 +1,48 @@
{
config,
lib,
pkgs,
systemName,
...
}:
{
# Use the systemd-boot EFI boot loader.
boot = {
loader = {
systemd-boot = {
enable = true;
};
efi.canTouchEfiVariables = true;
};
initrd.kernelModules = lib.mkMerge [
(lib.mkIf (systemName == "laptop") [
"kvm"
])
(lib.mkIf (systemName == "pc") [
"amdgpu"
"kvm"
])
];
kernelPackages = pkgs.linuxPackages_latest;
kernelParams = lib.mkMerge [
(lib.mkIf (systemName == "laptop") [
"ipv6e=1"
"i915.force_probe=46a6"
])
(lib.mkIf (systemName == "pc") [
"video=2560x1440x32"
"ipv6e=1"
])
];
plymouth = {
enable = true;
themePackages = [
pkgs.plymouth-matrix-theme
];
theme = "matrix";
};
};
}

19
system/fonts.nix Executable file
View File

@@ -0,0 +1,19 @@
{
config,
lib,
pkgs,
...
}:
{
fonts.packages = with pkgs; [
ubuntu_font_family
siji
unifont
noto-fonts
source-han-code-jp
source-han-sans
nerd-fonts.zed-mono
nerd-fonts.symbols-only
];
}

64
system/hardware.nix Executable file
View File

@@ -0,0 +1,64 @@
{
config,
lib,
pkgs,
systemName,
...
}:
{
# hardware stuff
hardware.graphics = lib.mkMerge [
(lib.mkIf (systemName == "laptop") {
enable = true;
enable32Bit = true;
extraPackages = with pkgs; [
intel-media-driver
intel-vaapi-driver
vpl-gpu-rt
libva
vaapiVdpau
libvdpau-va-gl
];
})
(lib.mkIf (systemName == "pc") {
enable = true;
enable32Bit = true;
extraPackages = with pkgs; [
rocmPackages.rocm-runtime
rocmPackages.clr.icd
rocmPackages.rocm-smi
rocmPackages.clr
rocmPackages.hipblas
rocmPackages.rocblas
rocmPackages.rocsolver
rocmPackages.rocm-comgr
rocmPackages.rocsparse
libva
vaapiVdpau
libvdpau-va-gl
];
})
];
hardware.bluetooth.enable = true; # enables support for Bluetooth
hardware.bluetooth.powerOnBoot = true; # powers up the default Bluetooth controller on boot
# hardware.pulseaudio = {
# package = pkgs.pulseaudioFull;
# };
hardware.bluetooth.settings = {
General = {
Enable = "Source,Sink,Media,Socket";
#Experimental = true;
};
};
hardware.opentabletdriver.enable = true;
hardware.opentabletdriver.daemon.enable = true;
# Enable sound.
# sound.enable = true;
#hardware.pulseaudio = {
# enable = true;
# package = pkgs.pulseaudioFull;
#};
}

46
system/inputMethods.nix Executable file
View File

@@ -0,0 +1,46 @@
{
config,
lib,
pkgs,
systemName,
...
}:
{
console.keyMap = "ie";
i18n = lib.mkMerge [
(lib.mkIf (systemName == "laptop") {
defaultLocale = "en_IE.UTF-8";
inputMethod = {
enable = true;
type = "fcitx5";
fcitx5.addons = with pkgs; [
fcitx5-mozc
fcitx5-gtk
];
};
extraLocaleSettings = {
LC_ADDRESS = "en_IE.UTF-8";
LC_IDENTIFICATION = "en_IE.UTF-8";
LC_MEASUREMENT = "en_IE.UTF-8";
LC_MONETARY = "en_IE.UTF-8";
LC_NAME = "en_IE.UTF-8";
LC_NUMERIC = "en_IE.UTF-8";
LC_PAPER = "en_IE.UTF-8";
LC_TELEPHONE = "en_IE.UTF-8";
LC_TIME = "en_IE.UTF-8";
};
})
(lib.mkIf (systemName == "pc") {
inputMethod = {
enable = true;
type = "fcitx5";
fcitx5.addons = with pkgs; [
fcitx5-mozc
fcitx5-gtk
];
};
})
];
}

35
system/network.nix Executable file
View File

@@ -0,0 +1,35 @@
{
config,
lib,
pkgs,
systemName,
...
}:
{
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
#networking.hostName = "mrfluffyLaptop"; # Define your hostname.
networking.hostName = lib.mkMerge [
(lib.mkIf (systemName == "laptop") "mrfluffyLaptop")
(lib.mkIf (systemName == "pc") "mrfluffyPC")
];
networking.firewall.enable = false;
# Pick only one of the below networking options.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
#networking.enableIPv6 = false;
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
networking.extraHosts = ''
127.0.0.0 localhost
'';
networking.nameservers = [ "192.168.1.180" ];
# # environment.etc = {
# # "resolv.conf".text = "nameserver 192.168.1.180\noptions edns0 trust-ad\nsearch home\n";
# # };
}

140
system/nixOSPkgs.nix Executable file
View File

@@ -0,0 +1,140 @@
{
config,
lib,
pkgs,
pkgs-stable,
...
}:
let
inherit (pkgs) anime4k;
# Use writeText instead of writeLua luacheck can't cry about the long lines
autoAnime4k = pkgs.writeText "auto-anime4k-switcher.lua" ''
local function get_nearest(x, numbers)
local min_index = nil
local min_dist = math.huge
for i, n in ipairs(numbers) do
local d = math.abs(n - x)
if d < min_dist then
min_index = i
min_dist = d
end
end
return numbers[min_index]
end
-- Fast
-- local shader_map = {
-- [1080] = "${anime4k}/Anime4K_Clamp_Highlights.glsl:${anime4k}/Anime4K_Restore_CNN_M.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_M.glsl:${anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_S.glsl",
-- [720] = "${anime4k}/Anime4K_Clamp_Highlights.glsl:${anime4k}/Anime4K_Restore_CNN_Soft_M.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_M.glsl:${anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_S.glsl",
-- [480] = "${anime4k}/Anime4K_Clamp_Highlights.glsl:${anime4k}/Anime4K_Upscale_Denoise_CNN_x2_M.glsl:${anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_S.glsl"
-- }
-- HQ
local shader_map = {
[1080] = "${anime4k}/Anime4K_Clamp_Highlights.glsl:${anime4k}/Anime4K_Restore_CNN_VL.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_VL.glsl:${anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_M.glsl",
[720] = "${anime4k}/Anime4K_Clamp_Highlights.glsl:${anime4k}/Anime4K_Restore_CNN_Soft_VL.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_VL.glsl:${anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_M.glsl",
[480] = "${anime4k}/Anime4K_Clamp_Highlights.glsl:${anime4k}/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl:${anime4k}/Anime4K_AutoDownscalePre_x2.glsl:${anime4k}/Anime4K_AutoDownscalePre_x4.glsl:${anime4k}/Anime4K_Upscale_CNN_x2_M.glsl"
}
local resolutions = { 1080, 720, 480 }
mp.register_event("file-loaded", function()
local height = mp.get_property_number("video-params/h")
local shaders = shader_map[height]
if not shaders then
height = get_nearest(height, resolutions)
shaders = shader_map[height]
end
mp.osd_message("Using " .. height .. "p Anime4K shaders")
mp.commandv("change-list", "glsl-shaders", "set", shaders)
end)
'';
in
{
nixpkgs.config = {
allowUnfree = true;
};
nixpkgs.overlays = [
(self: super: {
mpv = super.wrapMpv (super.mpv.unwrapped.override { sixelSupport = true; }) {
scripts = [ self.mpvScripts.mpris ];
};
})
];
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
programs.direnv = {
enable = true;
enableZshIntegration = true;
nix-direnv.enable = true;
silent = true;
};
programs.virt-manager.enable = true;
programs.zsh.enable = true;
programs.corectrl.enable = true;
programs.steam = {
enable = true;
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
};
# enable dynamic bin executables
programs.nix-ld.enable = true;
programs.nix-ld.libraries = with pkgs; [
# add libraries here
libGL
];
#backlight tool
programs.light.enable = true;
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
neovim
wl-clipboard
bat
anime4k
socat
eza
wget
foot
spaceship-prompt
git
bitwarden
zip
xclip
fd
fzf
zotero
jdk11
hunspell
hunspellDicts.en_US
pavucontrol
zoxide
xcp
polkit_gnome
unzip
rocmPackages.rccl
ffmpeg
libva-utils
nixfmt-rfc-style
nil
kdePackages.qt6ct
ripgrep
xwayland-satellite
];
}

220
system/services.nix Executable file
View File

@@ -0,0 +1,220 @@
{
config,
lib,
pkgs,
systemName,
...
}:
{
# Enable CUPS to print documents.
services.printing.enable = true;
# power managment
services.power-profiles-daemon.enable = true;
services.gnome.gnome-keyring.enable = true;
# Configure keymap in X11
# services.xserver.xkb.layout = "us";
# services.xserver.xkb.options = "eurosign:e,caps:escape";
# Enable the X11 windowing system.
# services.xserver.enable = true;
# Enable the GNOME Desktop Environment.
# services.xserver.displayManager.gdm.enable = true;
# services.xserver.desktopManager.gnome.enable = true;
services.pipewire = lib.mkMerge [
(lib.mkIf (systemName == "laptop") {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
extraConfig.pipewire = {
# the key "00-clock-rate" names the drop-in file
"00-clock-rate" = {
# these properties go under [context.properties] in pipewire.conf
context.properties = {
# force the graph sample rate
"default.clock.rate" = 48000;
# tell PipeWire which other rates you allow it to switch to
"default.clock.allowed-rates" = [
44100
48000
96000
];
# quantum = number of frames per period (i.e. buffer size)
"default.clock.min-quantum" = 32;
"default.clock.max-quantum" = 8192;
};
};
"99-input-denoising" = {
"context.modules" = [
{
"name" = "libpipewire-module-filter-chain";
"args" = {
"node.description" = "Noise Canceling source";
"media.name" = "Noise Canceling source";
"filter.graph" = {
"nodes" = [
{
"type" = "ladspa";
"name" = "rnnoise";
"plugin" = "${pkgs.rnnoise-plugin}/lib/ladspa/librnnoise_ladspa.so";
"label" = "noise_suppressor_mono";
"control" = {
"VAD Threshold (%)" = 20.0;
"VAD Grace Period (ms)" = 200;
"Retroactive VAD Grace (ms)" = 0;
};
}
];
};
"capture.props" = {
"node.name" = "effect_input.rnnoise";
"node.passive" = true;
"audio.rate" = 48000;
};
"playback.props" = {
"node.name" = "effect_output.rnnoise";
"media.class" = "Audio/Source";
"audio.rate" = 48000;
};
};
}
];
};
};
})
(lib.mkIf (systemName == "pc") {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
extraConfig.pipewire = {
"92-low-latency" = {
"context.properties" = {
"default.clock.rate" = 48000;
"default.clock.allowed-rates" = [ 48000 ];
};
};
"99-input-denoising" = {
"context.modules" = [
{
"name" = "libpipewire-module-filter-chain";
"args" = {
"node.description" = "Noise Canceling source";
"media.name" = "Noise Canceling source";
"filter.graph" = {
"nodes" = [
{
"type" = "ladspa";
"name" = "rnnoise";
"plugin" = "${pkgs.rnnoise-plugin}/lib/ladspa/librnnoise_ladspa.so";
"label" = "noise_suppressor_mono";
"control" = {
"VAD Threshold (%)" = 50.0;
"VAD Grace Period (ms)" = 200;
"Retroactive VAD Grace (ms)" = 0;
};
}
];
};
"capture.props" = {
"node.name" = "effect_input.rnnoise";
"node.passive" = true;
"audio.rate" = 48000;
};
"playback.props" = {
"node.name" = "effect_output.rnnoise";
"media.class" = "Audio/Source";
"audio.rate" = 48000;
};
};
}
];
};
};
})
];
services.blueman.enable = true;
# Enable touchpad support (enabled default in most desktopManager).
services.libinput = {
enable = true;
touchpad = {
tapping = true;
#horizontalScrolling = false;
};
};
# List services that you want to enable:
services.emacs = {
enable = true;
package = pkgs.emacs30-pgtk; # replace with emacs-gtk, or a version provided by the community overlay if desired.
};
services.sunshine = lib.mkIf (systemName == "pc") {
enable = true;
settings = {
sunshine_name = "nixos";
port = 47989;
};
applications = {
apps = [
{
name = "Steam";
output = "steam.txt";
detached = [ "${pkgs.util-linux}/bin/setsid ${pkgs.steam}/bin/steam steam://open/gamepadui" ];
image-path = "steam.png";
}
];
};
capSysAdmin = true;
openFirewall = true;
};
services.ollama = lib.mkIf (systemName == "pc") {
enable = true;
port = 11434;
host = "0.0.0.0";
acceleration = "rocm";
environmentVariables = {
HSA_OVERRIDE_GFX_VERSION = "11.0.0";
};
};
services.gvfs.enable = true;
# services.resolved = {
# enable = true;
# dnssec = "true";
# domains = [ "~." ];
# fallbackDns = [ "192.168.1.180" ];
# dnsovertls = "true";
# };
virtualisation.libvirtd.enable = true;
# Enable the OpenSSH daemon.
services.openssh.enable = true;
# laptop screen lid colose stuff
services.logind = lib.mkIf (systemName == "laptop") {
lidSwitch = "suspend-then-hibernate";
lidSwitchExternalPower = "suspend-then-hibernate";
lidSwitchDocked = "suspend-then-hibernate";
};
#suspend stuff
systemd.sleep.extraConfig = lib.mkIf (systemName == "laptop") ''
HibernateDelaySec=120min
SuspendState=mem
'';
#udev rules
#services.udev.extraRules = ''
# KERNEL=="hidraw*", KERNELS=="*054C:0CE6*", MODE="0660", TAG+="uaccess"
#'';
}

5
system/wm.nix Executable file
View File

@@ -0,0 +1,5 @@
{ config, lib, pkgs, ... }:
{
}