Compare commits

...

57 Commits

Author SHA1 Message Date
75f0e2993f kitty added 2026-07-03 17:24:58 +01:00
36f5d5cdd7 made aliases proper 2026-07-01 21:19:15 +01:00
0630db91fb fixed zsh HOLY SHIT THIS IS THE COOLEST THING EVER 2026-07-01 21:04:37 +01:00
13119c8f7b maybe zsh works 2026-07-01 20:10:13 +01:00
b4350f2dae zsh experimenting 2026-07-01 20:04:02 +01:00
3609e42d8f hackstation config 2026-07-01 19:37:52 +01:00
8b04d1763e added user config 2026-07-01 19:30:05 +01:00
4fd7db083b added first modules 2026-07-01 19:19:40 +01:00
3644a0f265 fresh 2026-07-01 19:07:57 +01:00
f08555296c added rocm drivers 2026-06-30 20:33:44 +01:00
44404e02a0 changed to alejandra for formatting 2026-06-28 13:55:43 +01:00
65e5fd2d99 added nom 2026-06-28 13:06:12 +01:00
ddb1d3c8d2 added custom patched woomer 2026-06-27 10:39:37 +01:00
e7b1f5acaf moved davinci to a flake and added the ffmpeg encoder 2026-06-25 17:37:35 +01:00
8f97b6ff34 fixed wshowkeys errors 2026-06-23 16:16:15 +01:00
2a0fbdcd16 made nvim input a single line 2026-06-20 14:12:03 +01:00
7c74a61821 changed some wine stuff 2026-06-19 14:25:48 +01:00
1862996855 removed deprecated package 2026-06-17 22:51:41 +01:00
f7058034fe added wshowkeys to pc and fixed deprecated i3 packages 2026-06-17 16:07:55 +01:00
f49745b4e4 updated to new nixpkgs version and changed python version 2026-06-15 13:32:24 +01:00
1a656d3231 updated flake and added quickshell 2026-06-14 17:14:44 +01:00
c0993eb22f removed some stuff and moved some stuff 2026-05-27 11:40:53 +01:00
e252ee0613 updated flake and added the wierd unstable call to flake instead of versionless nonsense 2026-05-18 19:51:19 +01:00
783a29e700 enabled jack and added wayvnc 2026-05-15 15:44:44 +01:00
134914f561 updated hyprland to get hotfix 2026-05-14 19:14:07 +01:00
2f7142135f updated hyprland to 0.55 because i need something to do 2026-05-12 10:14:21 +01:00
38f6ec8305 removed kier starmer again (added unbound resolver) 2026-05-08 20:58:19 +01:00
3dadc29a37 updated nvim 2026-05-04 14:28:53 +01:00
48535bb6d4 added shortcut for flakes and updated nvim 2026-05-03 20:14:15 +01:00
087a924e5a updated flake 2026-05-02 11:10:46 +01:00
2e7541e5c3 removed some useless stuff 2026-05-01 15:00:50 +01:00
0c2d3329cb tried to fix something and added bluetui 2026-04-27 16:46:19 +01:00
80f5b4a8f2 removed useless wivrn stuff 2026-04-18 18:16:19 +01:00
4f14a61b6b updated flake 2026-04-17 23:34:28 +01:00
ae3dbafe8b tried to fix davinci but failed :( 2026-04-17 20:23:09 +01:00
63862ae5d9 added opencode (coolest shit ever) 2026-04-17 19:41:11 +01:00
fea8fde271 added any nix shell 2026-04-16 17:29:40 +01:00
cba857e830 stopped nvim following stable 2026-04-07 12:51:31 +01:00
2e7fa85c5a updated flake.lock 2026-04-06 12:17:16 +01:00
deb946154f added steam to laptop so i can play ultrakil 2026-04-02 22:41:50 +01:00
27285a33e2 updated flake 2026-04-02 10:49:59 +01:00
454977900e added dysk that im never gonna use 2026-04-01 14:40:59 +01:00
8ca322be98 updated norgolith 2026-03-29 13:16:17 +01:00
96452d4a90 cleaned up common config and replaced swaync with dunst 2026-03-28 12:16:24 +00:00
74fe377b0c added omnisearch because fuck google 2026-03-24 20:09:21 +00:00
8118984fac updated flake and increased download buffer to 500mb 2026-03-22 12:03:30 +00:00
911930bcc3 re-organised flake inputs and common config 2026-03-22 12:00:27 +00:00
f3d247f8ca updated slsteam and added norgolith 2026-03-20 21:50:21 +00:00
2dff283566 removed some packages i dont use 2026-03-16 18:13:32 +00:00
5d02f49c43 fixed input remapper 2026-03-16 18:04:25 +00:00
3be9cbe622 added mumble as audio server, wleave and iron bar. config tbd 2026-03-15 19:49:55 +00:00
94f0e793d7 moved hyprland back to nixpkgs unstable 2026-03-13 17:38:16 +00:00
72221d9157 Merge branch 'changes' 2026-03-12 21:49:08 +00:00
f117c77624 chataigne works again!!!! (updated flake) 2026-03-12 21:48:54 +00:00
8553a02ca6 fixed chataigne flake 2026-03-12 19:02:00 +00:00
e3650d5adb chataingne nonsensenes 2026-03-12 18:00:53 +00:00
cd9716a7f2 some nonsense 2026-03-12 09:45:46 +00:00
19 changed files with 328 additions and 1995 deletions

2
.gitignore vendored
View File

@@ -1 +1,3 @@
.session
/nixos.qcow2
/result

View File

@@ -1,375 +0,0 @@
{
config,
lib,
pkgs,
inputs,
...
}:
{
imports = [
/etc/nixos/hardware-configuration.nix
];
# Allow Nix command and flakes (ofc)
nix.settings = {
cores = 6;
experimental-features = [
"nix-command"
"flakes"
];
};
# Allow unfree packages
nixpkgs = {
config = {
allowUnfree = true;
packageOverrides = pkgs: {
unstable = import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/nixos-unstable.tar.gz") {
config = {
allowUnfree = true;
};
};
};
};
};
# Nix store shit
nix.optimise.automatic = true;
nix.gc = {
automatic = true;
dates = "daily";
options = "--delete-older-than 5d";
};
# Boot
boot = {
loader = {
timeout = 2;
efi = {
canTouchEfiVariables = true;
};
grub = {
efiSupport = true;
device = "nodev";
theme = pkgs.catppuccin-grub;
};
};
plymouth = {
enable = true;
theme = "catppuccin-mocha";
themePackages = with pkgs; [
# By default we would install all themes
(catppuccin-plymouth.override {
variant = "mocha";
})
];
};
};
# Use latest kernel.
boot.kernelPackages = pkgs.linuxPackages_latest;
networking.networkmanager.enable = true;
networking.networkmanager.dns = "none";
networking.nameservers = [
"1.1.1.1"
"8.8.8.8"
];
# Enable bluetooth
hardware.bluetooth.enable = true;
hardware.xpadneo.enable = true;
# Set your time zone.
time.timeZone = "Europe/London";
# Locale
i18n.defaultLocale = "en_GB.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "en_GB.UTF-8";
LC_IDENTIFICATION = "en_GB.UTF-8";
LC_MEASUREMENT = "en_GB.UTF-8";
LC_MONETARY = "en_GB.UTF-8";
LC_NAME = "en_GB.UTF-8";
LC_NUMERIC = "en_GB.UTF-8";
LC_PAPER = "en_GB.UTF-8";
LC_TELEPHONE = "en_GB.UTF-8";
LC_TIME = "en_GB.UTF-8";
};
# Windowing Systems
services.xserver.enable = true;
programs.hyprland = {
enable = true;
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.default;
};
security.polkit.enable = true;
# Keymap
services.xserver.xkb = {
layout = "gb";
variant = "";
};
console.keyMap = "uk";
# Pipewire
services.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
# Local User
users.users.user01 = {
isNormalUser = true;
shell = pkgs.zsh;
description = "user01";
extraGroups = [
"input"
"root"
"plugdev"
"bluetooth"
"networkmanager"
"docker"
"wheel"
];
packages =
with pkgs;
let
input =
{
package,
output ? "default",
}:
inputs.${package}.packages.${pkgs.stdenv.hostPlatform.system}.${output};
wrap =
{
name,
pkg,
modules,
}:
pkgs.symlinkJoin {
inherit name;
paths = [ pkg ];
nativeBuildInputs = [ pkgs.makeWrapper ];
postBuild = ''
wrapProgram $out/bin/${name} \
--prefix PATH : ${pkgs.lib.makeBinPath modules}
'';
};
in
[
# Ricing
bibata-cursors
catppuccin-gtk
waybar
hyprlock
cava
cmatrix
swaynotificationcenter
(input {
package = "chataigne";
output = "chataigne";
})
wlogout
wpaperd
kando
oh-my-posh
grimblast
(wrap {
name = "otter-launcher";
pkg = (
input {
package = "otter-launcher";
}
);
modules = [
chafa
jq
];
})
(input {
package = "fsel";
})
# Terminal
carapace
bat
kitty
github-cli
wl-clipboard
p7zip
bluetuith
wget
playerctl
git
fastfetch
zellij
lsd
(input {
package = "doot";
})
stow
fzf
ripgrep
zsh-autocomplete
nodejs
lazygit
tailscale
# Thunar stuff
xfce.thunar
xfce.thunar-volman
xfce.thunar-vcs-plugin
xfce.thunar-archive-plugin
# Apps
pavucontrol
firefox
htop
input-remapper
tor-browser
gotify-desktop
techmino
mpv
prismlauncher
delfin
onlyoffice-desktopeditors
syncthing
blueman
jellyfin-tui
];
};
# Zsh
programs.zsh = {
enable = true;
enableCompletion = true;
enableBashCompletion = true;
autosuggestions.enable = true;
syntaxHighlighting.enable = true;
histSize = 10000;
ohMyZsh = {
enable = true;
plugins = [
"git"
"dirhistory"
"history"
];
};
};
# User programs
programs.dconf.enable = true;
programs.xfconf.enable = true;
# User Services
services.gvfs.enable = true;
services.tailscale.enable = true;
services.printing.enable = true;
services.upower.enable = true;
services.openssh.enable = true;
services.avahi.enable = true;
# Fonts
fonts.packages = with pkgs; [
nerd-fonts.fira-mono
];
fonts.fontconfig.defaultFonts.serif = [ "Fira Mono Nerd Font" ];
environment.systemPackages = with pkgs; [
inputs.nvim-wrapped.packages.${stdenv.hostPlatform.system}.default
# (pkgs.symlinkJoin {
# name = "nvim-with-lsp";
# paths = [ pkgs.neovim ];
# buildInputs = [ pkgs.makeWrapper ];
# postBuild = ''
# export TREE_SITTER_LIB_PATH="/run/current-system/sw/lib"
# wrapProgram $out/bin/nvim \
# --prefix PATH : ${
# pkgs.lib.makeBinPath [
# # lsps
# pkgs.lua-language-server
# pkgs.vscode-langservers-extracted
# pkgs.emmet-ls
# pkgs.prettier
# pkgs.black
# pkgs.nixfmt
# pkgs.nil
# pkgs.python313Packages.python-lsp-server
# pkgs.typescript-language-server
# pkgs.tailwindcss-language-server
# pkgs.stylua
# pkgs.nixd
#
# # other shit
# pkgs.lua5_1
# pkgs.tree-sitter
# pkgs.ripgrep
# pkgs.gcc
# pkgs.gnumake
# pkgs.imagemagick
# pkgs.luajitPackages.magick
# pkgs.ghostscript
# pkgs.luarocks
# (pkgs.texlive.combine {
# inherit (pkgs.texlive)
# scheme-basic
# varwidth
# preview
# mathtools
# amsfonts
# amscdx
# xcolor
# dvisvgm
# dvipng # for preview and export as html
# wrapfig
# standalone
# graphicxbox
# amsmath
# ulem
# hyperref
# capt-of
# ;
# })
# ]
# }
# '';
# })
vim
unzip
python310 # Its python like come on
usbutils
# Graphics Drivers
mesa
vulkan-tools
# FileSystem Dependancies
gvfs
# C copmpiler
clang
# XDG Desktop Portal Etc
xdg-desktop-portal
xdg-desktop-portal-hyprland
# Other things (from gnome)
glib
gnutls
appimage-run
libnotify
gsettings-desktop-schemas
];
# The comment
system.stateVersion = "25.05"; # Did you read the comment?
}

View File

@@ -1,50 +0,0 @@
{
config,
lib,
pkgs,
inputs,
...
}:
{
networking.hostName = "mobile02"; # Define your hostname.
# Opengl and vulkan
hardware.graphics = {
enable = true;
extraPackages = with pkgs; [
intel-vaapi-driver
libva-vdpau-driver
];
};
services.displayManager.sddm = {
enable = true;
theme = "catppuccin-mocha-mauve";
package = pkgs.kdePackages.sddm;
};
environment.systemPackages = with pkgs; [
# Catppuccin sddm theme
(pkgs.catppuccin-sddm.override {
flavor = "mocha";
font = "Fira Mono Nerd Font";
fontSize = "11";
background = null;
})
];
# Local User
users.users.user01 = {
extraGroups = [ ];
packages = with pkgs; [
# Ricing
inputs.way-edges.packages.${stdenv.hostPlatform.system}.way-edges
# Terminal
light
# Apps
];
};
}

View File

@@ -1,106 +0,0 @@
{
config,
lib,
pkgs,
inputs,
...
}:
{
networking.hostName = "HACKSTATION";
# Enable nix-ld to run unpatched binaries
programs.nix-ld.enable = true;
programs.nix-ld.libraries = with pkgs; [
stdenv.cc.cc
zlib
libusb1
];
# Add Samsung USB udev rules
services.udev.extraRules = ''
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0666", GROUP="plugdev"
'';
hardware.amdgpu.initrd.enable = true;
# Opengl and vulkan
hardware.graphics = {
enable = true;
extraPackages = with pkgs; [
libva-vdpau-driver
libvdpau-va-gl
];
enable32Bit = true;
};
hardware.amdgpu.opencl.enable = true;
boot.kernelParams = [
"amdgpu.ppfeaturemask=0xffffffff"
];
# Wake on Lan
networking.interfaces.enp5s0.wakeOnLan.enable = true;
networking.firewall.enable = false;
systemd.services.NetworkManager-wait-online.enable = false;
services.displayManager = {
autoLogin.enable = true;
autoLogin.user = "user01";
sddm = {
enable = true;
};
};
# Local User
users.users.user01 = {
extraGroups = [
"adbusers"
"docker"
];
packages = with pkgs; [
bottles
ferdium
android-tools
anki
vesktop
wine64
delfin
docker
orca-slicer
exiftool
ffmpeg
];
};
environment.systemPackages = [
inputs.sls-steam.packages.${pkgs.stdenv.hostPlatform.system}.wrapped
];
programs.steam = {
enable = true;
package = pkgs.steam.override {
extraEnv = {
LD_AUDIT = "${
inputs.sls-steam.packages.${pkgs.stdenv.hostPlatform.system}.sls-steam
}/library-inject.so:${
inputs.sls-steam.packages.${pkgs.stdenv.hostPlatform.system}.sls-steam
}/SLSsteam.so";
};
};
};
services.wivrn = {
enable = true;
package = pkgs.unstable.wivrn;
openFirewall = true;
defaultRuntime = true;
};
virtualisation.docker = {
enable = true;
enableOnBoot = false;
};
}

1039
flake.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -2,59 +2,13 @@
description = "Master flake for Voidarc nix config";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
# System
nixpkgs.url = "github:nixos/nixpkgs/nixos-26.05";
sls-steam = {
url = "github:AceSLS/SLSsteam";
};
hyprland.url = "github:hyprwm/Hyprland";
chataigne.url = "./modules/chataigne";
nvim-wrapped.url = "git+file:///home/user01/.dotfiles/.config/nvim";
tree-sitter.url = "github:tree-sitter/tree-sitter?ref=8b8199775f96ca8642cf7860da46100875b38453";
doot.url = "github:voidarclabs/nixos.doot";
way-edges.url = "github:way-edges/way-edges";
otter-launcher.url = "github:kuokuo123/otter-launcher";
fsel.url = "github:Mjoyufull/fsel";
mesa-davinci.url = "github:nixos/nixpkgs?ref=599ddd2b79331c1e6153e1659bdaab65d62c4c82";
flake-parts.url = "github:hercules-ci/flake-parts";
import-tree.url = "github:vic/import-tree";
wrappers.url = "github:BirdeeHub/nix-wrapper-modules";
};
outputs =
{
self,
nixpkgs,
...
}@inputs:
let
system = "x86_64-linux";
hardwareConfig = import /etc/nixos/hardware-configuration.nix;
common = import ./configs/common.nix;
mkSystem =
extraModules:
nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = { inherit inputs; };
modules = [
common
hardwareConfig
]
++ extraModules;
};
in
{
nixosConfigurations = {
mobile02 = mkSystem [ ./configs/configuration-laptop.nix ];
hackstation = mkSystem [
./configs/configuration-pc.nix
./modules/davinci/davinci.nix
./modules/i3/i3.nix
];
};
};
outputs = inputs: inputs.flake-parts.lib.mkFlake {inherit inputs;} (inputs.import-tree ./modules);
}

View File

@@ -1,131 +0,0 @@
{ pkgs, pinnedPkgs, ... }:
let
# 1. Define the AppImage source.
appImageSrc = ./Chataigne-linux-x64-bleedingedge.AppImage;
# 2a. Libraries pulled from the modern, current Nixpkgs (for small size).
modernLibs = with pkgs; [
alsa-lib
freetype
avahi
libglvnd
curl
SDL2
hidapi
libXrandr
];
# 2b. Libraries pulled from the older, pinned package set (ONLY the ones that failed).
pinnedCurlLibs = with pinnedPkgs; [
curlWithGnuTls # This is the critical component for the CURL_GNUTLS_3 symbol.
gnutls
];
# 3. Combine the modern runtime dependencies with the pinned compatibility libraries.
appImageDeps = [
pkgs.steam-run
pkgs.stdenv.cc.cc.lib # Ensures the modern C++ runtime is available
]
++ modernLibs
++ pinnedCurlLibs;
chataigneDesktopItem = {
desktopName = "Chataigne";
name = "chataigne";
exec = "chataigne"; # The name of the wrapper script in $out/bin
icon = "chataigne"; # The name of the icon file (without extension)
genericName = "Creative Control Software";
comment = "Control and experiment with creative applications, hardware, and media.";
categories = [
"AudioVideo"
"Development"
];
};
in
# 4. Create the final runnable derivation
pkgs.stdenv.mkDerivation {
pname = "chataigne-runner";
version = "1.0";
# --- Attributes needed for AppImage running (not compiling) ---
src = ./.;
dontUnpack = true;
dontBuild = true;
# --------------------------------------------------
# Inject the combined dependencies into the environment
buildInputs = appImageDeps;
# The install phase creates an executable wrapper script, extracts the AppImage,
# and now handles the desktop file and icon.
installPhase = ''
mkdir -p $out/bin
# --- STRATEGY: Extract AppImage contents to bypass FUSE, then fix LD_LIBRARY_PATH ---
echo "Extracting AppImage contents to bypass FUSE requirement..."
# Use the absolute Nix Store path of the AppImage
${appImageSrc} --appimage-extract
echo "appimage extracted"
# 2. Check if extraction worked and move the content to $out
if [ ! -d "squashfs-root" ]; then
echo "Extraction failed. The AppImage may not support --appimage-extract."
exit 1
fi
# 2. CRITICAL FIX: Manually create and install the .desktop file
mkdir -p $out/share/applications
# pkgs.lib.makeDesktopItem takes the metadata and creates a small derivation
# We copy the resulting .desktop file from that derivation's output path ($desktop_file_path)
local desktop_file_path="${pkgs.makeDesktopItem chataigneDesktopItem}"
# The file is typically named $name.desktop inside the share/applications folder of the new derivation
cp $desktop_file_path/share/applications/chataigne.desktop $out/share/applications/
# Copy the extracted contents into the output directory
cp -r squashfs-root $out/
# --- DESKTOP ENTRY & ICON (NEW) ---
echo "Processing icon and desktop file..."
# AppImages usually place the icon in squashfs-root/.DirIcon or similar
# We will assume it's in the root of the extracted content.
local icon_source="$out/squashfs-root/.DirIcon"
local icon_target="$out/share/icons/hicolor/128x128/apps/chataigne.png" # Standard location
# Use the icon if it exists (AppImages often use a .png or .svg)
if [ -f "$icon_source" ]; then
mkdir -p "$(dirname "$icon_target")"
cp "$icon_source" "$icon_target"
else
echo "Warning: Could not find icon at $icon_source. Using default/no icon."
fi
# ----------------------------------
# 3. Create the 'chataigne' executable wrapper
cat > $out/bin/chataigne << EOF
#!${pkgs.stdenv.shell}
# The LD_LIBRARY_PATH is created using all dependencies (excluding the wrapper 'steam-run').
# This ensures the AppImage finds the pinned CURL library.
export LD_LIBRARY_PATH="${pkgs.lib.makeLibraryPath (pkgs.lib.remove pkgs.steam-run appImageDeps)}:$LD_LIBRARY_PATH"
# Use steam-run to launch the main execution script inside the extracted folder.
exec ${pkgs.steam-run}/bin/steam-run "$out/squashfs-root/AppRun" "\$@"
EOF
chmod +x $out/bin/chataigne
'';
meta = {
description = "Declarative runner for the Chataigne AppImage, providing necessary dependencies.";
homepage = "https://chataigne.io/"; # Example: Add the actual homepage
license = pkgs.lib.licenses.unfree; # AppImages are often proprietary/unfree
platforms = [ "x86_64-linux" ];
};
}

View File

@@ -1,51 +0,0 @@
{
description = "A flake for running the Chataigne AppImage with necessary patched dependencies.";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; # Modern Nixpkgs
# Pinned Nixpkgs for compatibility (the commit that fixes the CURL_GNUTLS_3 issue)
pinned-nixpkgs = {
url = "github:NixOS/nixpkgs/5171d7b0a9fbaaf216c873622eb5115b6db97957";
flake = false; # Treat as a tarball input, not a flake
};
};
outputs =
{
self,
nixpkgs,
pinned-nixpkgs,
...
}:
let
# Supported systems
supportedSystems = [ "x86_64-linux" ];
# The main package definition logic is imported as a function
chataigne-appimage-runner = import ./chataigne.nix;
# Function to generate the package set for each system
forAllSystems = f: nixpkgs.lib.genAttrs supportedSystems (system: f system);
in
{
packages = forAllSystems (
system:
let
pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
};
pinnedPkgs = import pinned-nixpkgs { inherit system; };
in
{
chataigne = chataigne-appimage-runner {
inherit pkgs pinnedPkgs;
};
# Also expose the default package for convenience
default = self.packages.${system}.chataigne;
}
);
};
}

View File

@@ -1,199 +0,0 @@
# Tested on Davinci 20.2.2. It works for loading videos and exporting in H264/5 & AV1
# Even if following this guide https://www.reddit.com/r/LinuxCrackSupport/comments/1nfqhld/davinci_resolve_studio_202_fix_linux_crack_guide/
# nixpkgs rev used for this tests: 4652ba995a945108fb891191c1e910b9a6ed9064
{ lib, inputs, ... }:
let
mesa-good-pkg = inputs.mesa-davinci.legacyPackages.x86_64-linux.mesa;
pkgs = import (builtins.fetchTarball {
url = "https://github.com/NixOS/nixpkgs/archive/ec7c70d12ce2fc37cb92aff673dcdca89d187bae.tar.gz";
}) { config.allowUnfree = true; };
pkgs-pinned =
import
(builtins.fetchTarball {
url = "https://github.com/NixOS/nixpkgs/archive/497ee3c70707fd71b45c37d48ae1d45e79751047.tar.gz";
})
{
config = {
allowUnfree = true;
};
};
ffmpeg-encoder-plugin = pkgs.stdenv.mkDerivation (finalAttrs: {
pname = "ffmpeg-encoder-plugin";
version = "1.2.1";
src = pkgs.fetchFromGitHub {
owner = "EdvinNilsson";
repo = "ffmpeg_encoder_plugin";
tag = "v${finalAttrs.version}";
hash = "sha256-F4Q8YCXD5UldTwLbWK4nHacNPQ/B+4yLL96sq7xZurM=";
};
nativeBuildInputs = with pkgs; [
cmake
ffmpeg-full
];
buildInputs = with pkgs; [ ffmpeg ];
installPhase = ''
runHook preInstall
mkdir -p $out
cp ffmpeg_encoder_plugin.dvcp $out/
runHook postInstall
'';
});
davinci-resolve-studio-cracked =
let
davinci-patched = pkgs-pinned.davinci-resolve-studio.davinci.overrideAttrs (old: {
# script based on https://www.reddit.com/r/LinuxCrackSupport/comments/1nfqhld/davinci_resolve_studio_202_fix_linux_crack_guide/
#
# Additionally, it will install ffmpeg_encoder_plugin to enable H264/5 & AV1 exports:
# https://github.com/EdvinNilsson/ffmpeg_encoder_plugin
#
# Note: $out IS /opt/resolve
postInstall = ''
${old.postInstall or ""}
${lib.getExe pkgs.perl} -pi -e 's/\x74\x11\xe8\x21\x23\x00\x00/\xeb\x11\xe8\x21\x23\x00\x00/g' $out/bin/resolve
${lib.getExe pkgs.perl} -pi -e 's/\x03\x00\x89\x45\xFC\x83\x7D\xFC\x00\x74\x11\x48\x8B\x45\xC8\x8B/\x03\x00\x89\x45\xFC\x83\x7D\xFC\x00\xEB\x11\x48\x8B\x45\xC8\x8B/' $out/bin/resolve
${lib.getExe pkgs.perl} -pi -e 's/\x74\x11\x48\x8B\x45\xC8\x8B\x55\xFC\x89\x50\x58\xB8\x00\x00\x00/\xEB\x11\x48\x8B\x45\xC8\x8B\x55\xFC\x89\x50\x58\xB8\x00\x00\x00/' $out/bin/resolve
${lib.getExe pkgs.perl} -pi -e 's/\x41\xb6\x01\x84\xc0\x0f\x84\xb0\x00\x00\x00\x48\x85\xdb\x74\x08\x45\x31\xf6\xe9\xa3\x00\x00\x00/\x41\xb6\x00\x84\xc0\x0f\x84\xb0\x00\x00\x00\x48\x85\xdb\x74\x08\x45\x31\xf6\xe9\xa3\x00\x00\x00/' $out/bin/resolve
touch $out/.license/blackmagic.lic
echo -e "LICENSE blackmagic davinciresolvestudio 999999 permanent uncounted\n hostid=ANY issuer=CGP customer=CGP issued=28-dec-2023\n akey=0000-0000-0000-0000 _ck=00 sig=\"00\"" > $out/.license/blackmagic.lic
mkdir -p $out/IOPlugins/ffmpeg_encoder_plugin.dvcp.bundle/Contents/Linux-x86-64/
cp ${ffmpeg-encoder-plugin}/ffmpeg_encoder_plugin.dvcp $out/IOPlugins/ffmpeg_encoder_plugin.dvcp.bundle/Contents/Linux-x86-64/
'';
});
in
# the following was copied from davinci's derivation from nixpkgs.
# if davinci updates, this should be updated too
# but remember to replace "davinci" with "davinci-patched"
pkgs.buildFHSEnv {
inherit (davinci-patched) pname version;
targetPkgs =
pkgs:
with pkgs;
[
alsa-lib
aprutil
bzip2
dbus
expat
fontconfig
freetype
glib
libGL
libGLU
libarchive
libcap
librsvg
libtool
libuuid
libxcrypt # provides libcrypt.so.1
libxkbcommon
nspr
ocl-icd
opencl-headers
python3
python3.pkgs.numpy
udev
xdg-utils # xdg-open needed to open URLs
libICE
libSM
libX11
libXcomposite
libXcursor
libXdamage
libXext
libXfixes
libXi
libXinerama
libXrandr
libXrender
libXt
libXtst
libXxf86vm
libxcb
xcbutil
xcbutilimage
xcbutilkeysyms
xcbutilrenderutil
xcbutilwm
xkeyboardconfig
zlib
ocl-icd
rocmPackages.clr.icd
libGL
libGLU
]
++ [
mesa-good-pkg
davinci-patched
];
extraPreBwrapCmds = ''
mkdir -p ~/.local/share/DaVinciResolve/Extras || exit 1
'';
extraBwrapArgs = [
''--bind "$HOME"/.local/share/DaVinciResolve/Extras ${davinci-patched}/Extras''
];
runScript = "${lib.getExe pkgs.bash} ${pkgs.writeText "davinci-wrapper" ''
export QT_XKB_CONFIG_ROOT="${pkgs.xkeyboard_config}/share/X11/xkb"
export QT_PLUGIN_PATH="${davinci-patched}/libs/plugins:$QT_PLUGIN_PATH"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib:/usr/lib32:${davinci-patched}/libs
# Force Resolve to use X11 (via XWayland) to avoid Aquamarine/Hyprland conflicts
export QT_QPA_PLATFORM=xcb
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${davinci-patched}/libs
# Prevent Resolve from trying to talk to the Wayland socket directly
unset WAYLAND_DISPLAY
${davinci-patched}/bin/resolve
''}";
extraInstallCommands = ''
mkdir -p $out/share/applications $out/share/icons/hicolor/128x128/apps
ln -s ${davinci-patched}/share/applications/*.desktop $out/share/applications/
ln -s ${davinci-patched}/graphics/DV_Resolve.png $out/share/icons/hicolor/128x128/apps/davinci-resolve-studio.png
'';
passthru = {
inherit davinci-patched;
updateScript = lib.getExe (
pkgs.writeShellApplication {
name = "update-davinci-resolve";
runtimeInputs = [
pkgs.curl
pkgs.jq
pkgs.common-updater-scripts
];
text = ''
set -o errexit
drv=pkgs/by-name/da/davinci-resolve/package.nix
currentVersion=${lib.escapeShellArg davinci-patched.version}
downloadsJSON="$(curl --fail --silent https://www.blackmagicdesign.com/api/support/us/downloads.json)"
latestLinuxVersion="$(echo "$downloadsJSON" | jq '[.downloads[] | select(.urls.Linux) | .urls.Linux[] | select(.downloadTitle | test("DaVinci Resolve")) | .downloadTitle]' | grep -oP 'DaVinci Resolve \K\d+\.\d+(\.\d+)?' | sort | tail -n 1)"
update-source-version davinci-resolve "$latestLinuxVersion" --source-key=davinci.src
# Since the standard and studio both use the same version we need to reset it before updating studio
sed -i -e "s/""$latestLinuxVersion""/""$currentVersion""/" "$drv"
latestStudioLinuxVersion="$(echo "$downloadsJSON" | jq '[.downloads[] | select(.urls.Linux) | .urls.Linux[] | select(.downloadTitle | test("DaVinci Resolve")) | .downloadTitle]' | grep -oP 'DaVinci Resolve Studio \K\d+\.\d+(\.\d+)?' | sort | tail -n 1)"
update-source-version davinci-resolve-studio "$latestStudioLinuxVersion" --source-key=davinci.src
'';
}
);
};
};
in
{
environment.systemPackages = [ davinci-resolve-studio-cracked ];
}

View File

@@ -0,0 +1,55 @@
{
self,
inputs,
...
}: {
flake.nixosModules.kitty = {
pkgs,
lib,
...
}: {
programs.kitty = {
enable = true;
package = self.packages.${pkgs.stdenv.hostPlatform.system}.kitty;
};
};
perSystem = {
pkgs,
lib,
self',
...
}: {
packages.kitty = let
myFont = pkgs.nerd-fonts.fira-mono; # or any font-providing package
fontsConf = pkgs.makeFontsConf {
fontDirectories = [myFont];
};
in
inputs.wrappers.wrappers.kitty.wrap {
inherit pkgs;
environment = {
"FONTCONFIG_FILE" = "${fontsConf}";
};
font = {
name = "FiraMono Nerd Font";
size = 11;
};
settings = {
font_size = 11;
window_padding_width = 10;
background_opacity = 0.50;
confirm_os_window_close = 0;
enable_audio_bell = false;
cursor_trail = 1;
cursor_trail_start_threshold = 1;
cursor_trail_color = "#cba6f7";
cursor_shape = "beam";
allow_remote_control = true;
};
keybindings = {
"ctrl+backspace" = "send_text all \\x17";
};
themeFile = "Catppuccin-Mocha";
};
};
}

View File

@@ -0,0 +1,100 @@
console_title_template = '{{ .Shell }} in {{ .Folder }}'
version = 3
final_space = true
[secondary_prompt]
template = ' '
foreground = 'magenta'
background = 'transparent'
[transient_prompt]
template = ' '
background = 'transparent'
foreground_templates = ['{{if gt .Code 0}}red{{end}}', '{{if eq .Code 0}}magenta{{end}}']
[[blocks]]
type = 'prompt'
alignment = 'left'
newline = true
[[blocks.segments]]
type = 'text'
style = 'plain'
template = '''
{{- if .Env.DEVSHELL_NAME -}}
{{- $parts := split "|" .Env.DEVSHELL_NAME -}}
{{- range $part := $parts -}}
{{- if $part -}}
{{- $sub := split "/" $part -}}
{{- if eq (len $sub) 2 -}}
<{{ index $sub "_1" }}>{{ index $sub "_0" }}</> <#7f849c>| </>
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
'''
[[blocks.segments]] # Python venv
type = 'text'
style = 'plain'
template = '{{ if .Env.VIRTUAL_ENV }}<yellow>🐍 venv</> <#7f849c>|</> {{ end }}'
[[blocks.segments]] # Nix shell indicator
type = 'text'
style = 'plain'
template = '{{ if and .Env.IN_NIX_SHELL (not .Env.DEVSHELL_NAME) }}<blue> nsh</> <#7f849c>|</> {{ end }}'
[[blocks.segments]]
template = '{{ .Path }}'
foreground = 'blue'
background = 'transparent'
type = 'path'
style = 'plain'
[blocks.segments.properties]
cache_duration = 'none'
style = 'full'
[[blocks.segments]]
template = ' {{ .HEAD }}{{ if or (.Working.Changed) (.Staging.Changed) }}<yellow> *</>{{ end }} <cyan>{{ if gt .Behind 0 }}󰁅{{ end }}{{ if gt .Ahead 0 }}{{ end }}</>'
foreground = 'green'
background = 'transparent'
type = 'git'
style = 'plain'
[blocks.segments.properties]
branch_icon = ''
cache_duration = 'none'
commit_icon = '@'
fetch_status = true
[[blocks]]
type = 'rprompt'
overflow = 'hidden'
[[blocks.segments]]
template = '{{ .FormattedMs }}'
foreground = 'yellow'
background = 'transparent'
type = 'executiontime'
style = 'plain'
[blocks.segments.properties]
cache_duration = 'none'
threshold = 5000
[[blocks]]
type = 'prompt'
alignment = 'left'
newline = true
[[blocks.segments]]
template = ''
background = 'transparent'
type = 'text'
style = 'plain'
foreground_templates = ['{{if gt .Code 0}}red{{end}}', '{{if eq .Code 0}}magenta{{end}}']
[blocks.segments.properties]
cache_duration = 'none'

View File

@@ -0,0 +1,53 @@
{
self,
inputs,
...
}: {
flake.nixosModules.zsh = {
pkgs,
lib,
...
}: {
programs.zsh = {
enable = true;
package = self.packages.${pkgs.stdenv.hostPlatform.system}.myZsh;
};
};
perSystem = {
pkgs,
lib,
self',
...
}: {
packages = {
myZsh = inputs.wrappers.wrappers.zsh.wrap {
inherit pkgs;
zshAliases = {
ls = lib.getExe pkgs.lsd;
cat = lib.getExe pkgs.bat;
lg = lib.getExe pkgs.lazygit;
man = "man -P \"${lib.getExe pkgs.bat} -p\"";
nsh = "nix-shell -p";
};
zshrc.content = ''
export CARAPACE_BRIDGES='zsh,fish,bash,inshellisense' # optional
zstyle ':completion:*' format $'\e[2;37mCompleting %d\e[m'
source <(${pkgs.carapace}/bin/carapace _carapace)
setopt NO_CASE_GLOB
zstyle ':completion:*' matcher-list 'm:{[:lower:]}={[:upper:]}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
export EDITOR=nvim
eval "$(${pkgs.devenv}/bin/devenv hook zsh)"
eval "$(${self.packages.${pkgs.host.stdenv.hostPlatform.system}.ohMyPosh}/bin/oh-my-posh init zsh)"
${pkgs.any-nix-shell}/bin/any-nix-shell zsh --info-right | source /dev/stdin
'';
};
ohMyPosh = inputs.wrappers.wrappers.oh-my-posh.wrap {
inherit pkgs;
configFile = ./config.toml;
};
};
};
}

View File

@@ -0,0 +1,12 @@
{
self,
inputs,
...
}: {
flake.nixosConfigurations.HACKSTATION = inputs.nixpkgs.lib.nixosSystem {
modules = with self.nixosModules; [
core
hackstationConfiguration
];
};
}

View File

@@ -0,0 +1,9 @@
{
self,
inputs,
...
}: {
flake.nixosModules.hackstationConfiguration = {pkgs, ...}: {
networking.hostName = "HACKSTATION";
};
}

View File

@@ -1,28 +0,0 @@
{
config,
lib,
pkgs,
inputs,
...
}:
{
services.libinput.enable = true;
services.displayManager.defaultSession = "hyprland";
services.xserver = {
enable = true;
desktopManager = {
xterm.enable = false;
};
windowManager.i3 = {
enable = true;
extraPackages = with pkgs; [
dmenu # application launcher most people use
i3status # gives you the default i3 status bar
xorg.xinit
];
};
};
}

10
modules/parts.nix Normal file
View File

@@ -0,0 +1,10 @@
{
config = {
systems = [
"x86_64-linux"
"x86_64-darwin"
"aarch64-linux"
"aarch64-darwin"
];
};
}

23
modules/system/core.nix Normal file
View File

@@ -0,0 +1,23 @@
{
self,
inputs,
...
}: {
flake.nixosModules.core = {
pkgs,
lib,
...
}: let
modules = with self.nixosModules; [
userConfiguration
];
in {
imports =
[
/etc/nixos/hardware-configuration.nix
]
++ modules;
programs.zsh.enable = true;
};
}

View File

@@ -0,0 +1,22 @@
{
self,
inputs,
...
}: {
flake.nixosModules.userConfiguration = {
pkgs,
lib,
...
}: {
users.users.user01 = {
isNormalUser = true;
initialPassword = "password";
shell = pkgs.zsh;
description = "user01";
extraGroups = [
"root"
"wheel"
];
};
};
}