Reorganize utilities

This commit is contained in:
Christopher Mühl 2025-12-12 10:39:49 +01:00
parent 37f278819a
commit be45864223
No known key found for this signature in database
GPG key ID: E919B0F59E14FD47
28 changed files with 472 additions and 41 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 424 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 KiB

View file

@ -0,0 +1,5 @@
- cat-vibes: https://wall.alphacoders.com/big.php?i=1384032
- yellow-bedroom: https://wall.alphacoders.com/big.php?i=1395930
- sunny-cityscape: https://wall.alphacoders.com/big.php?i=1395929
- chill-room: https://wall.alphacoders.com/big.php?i=1350899
- evening-ambience-cafe: https://wall.alphacoders.com/big.php?i=1349198

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

213
flake.lock generated
View file

@ -73,6 +73,26 @@
"type": "github"
}
},
"awww": {
"inputs": {
"flake-compat": "flake-compat_4",
"nixpkgs": "nixpkgs_4",
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1765147877,
"narHash": "sha256-SoSUY44s2nmg/SGriAIvXGSuVJBUvXlox5jhH1IeB9k=",
"ref": "refs/heads/main",
"rev": "45f9ad2ba04f2bb5656053bc1f285e060d571d79",
"revCount": 1322,
"type": "git",
"url": "https://codeberg.org/LGFae/awww"
},
"original": {
"type": "git",
"url": "https://codeberg.org/LGFae/awww"
}
},
"darwin": {
"inputs": {
"nixpkgs": [
@ -221,6 +241,22 @@
}
},
"flake-compat_4": {
"flake": false,
"locked": {
"lastModified": 1761588595,
"narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_5": {
"flake": false,
"locked": {
"lastModified": 1650374568,
@ -419,7 +455,7 @@
},
"musnix": {
"inputs": {
"nixpkgs": "nixpkgs_4"
"nixpkgs": "nixpkgs_5"
},
"locked": {
"lastModified": 1756852730,
@ -435,6 +471,63 @@
"type": "github"
}
},
"niri": {
"inputs": {
"niri-stable": "niri-stable",
"niri-unstable": "niri-unstable",
"nixpkgs": "nixpkgs_6",
"nixpkgs-stable": "nixpkgs-stable",
"xwayland-satellite-stable": "xwayland-satellite-stable",
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
},
"locked": {
"lastModified": 1764969102,
"narHash": "sha256-b9AEnfuNHbykNw/X4Vqz8uzPg/4S8ZfWE9ggkkz+KR8=",
"owner": "sodiboo",
"repo": "niri-flake",
"rev": "9e59ee80bf92a02423e7ca7b301f969fe230c8d8",
"type": "github"
},
"original": {
"owner": "sodiboo",
"ref": "9e59ee8",
"repo": "niri-flake",
"type": "github"
}
},
"niri-stable": {
"flake": false,
"locked": {
"lastModified": 1756556321,
"narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294",
"type": "github"
},
"original": {
"owner": "YaLTeR",
"ref": "v25.08",
"repo": "niri",
"type": "github"
}
},
"niri-unstable": {
"flake": false,
"locked": {
"lastModified": 1764678181,
"narHash": "sha256-TMs2Px19UAG06zITXAH7efl7X8G7BDyMCy1ilX/8wy0=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "f874b2fce50e0f7ba21e270c86cfa168a1506b82",
"type": "github"
},
"original": {
"owner": "YaLTeR",
"repo": "niri",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1759070547,
@ -466,6 +559,22 @@
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1764831616,
"narHash": "sha256-OtzF5wBvO0jgW1WW1rQU9cMGx7zuvkF7CAVJ1ypzkxA=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "c97c47f2bac4fa59e2cbdeba289686ae615f8ed4",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-25.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-wine": {
"locked": {
"lastModified": 1735834308,
@ -515,6 +624,22 @@
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1763934636,
"narHash": "sha256-9glbI7f1uU+yzQCq5LwLgdZqx6svOhZWkd4JRY265fc=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "ee09932cedcef15aaf476f9343d1dea2cb77e261",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1756542300,
"narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=",
@ -530,18 +655,34 @@
"type": "github"
}
},
"nixpkgs_5": {
"nixpkgs_6": {
"locked": {
"lastModified": 1763334038,
"narHash": "sha256-LBVOyaH6NFzQ3X/c6vfMZ9k4SV2ofhpxeL9YnhHNJQQ=",
"lastModified": 1764667669,
"narHash": "sha256-7WUCZfmqLAssbDqwg9cUDAXrSoXN79eEEq17qhTNM/Y=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "4c8cdd5b1a630e8f72c9dd9bf582b1afb3127d2c",
"rev": "418468ac9527e799809c900eda37cbff999199b6",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-25.05",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_7": {
"locked": {
"lastModified": 1764983851,
"narHash": "sha256-y7RPKl/jJ/KAP/VKLMghMgXTlvNIJMHKskl8/Uuar7o=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d9bc5c7dceb30d8d6fafa10aeb6aa8a48c218454",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-25.11",
"repo": "nixpkgs",
"type": "github"
}
@ -617,19 +758,42 @@
"affinity-nix": "affinity-nix",
"agenix": "agenix",
"agenix-rekey": "agenix-rekey",
"awww": "awww",
"darwin": "darwin_2",
"disko": "disko",
"home-manager": "home-manager_2",
"musnix": "musnix",
"nixpkgs": "nixpkgs_5",
"niri": "niri",
"nixpkgs": "nixpkgs_7",
"quadlet": "quadlet",
"snowfall": "snowfall",
"unstable": "unstable"
}
},
"rust-overlay": {
"inputs": {
"nixpkgs": [
"awww",
"nixpkgs"
]
},
"locked": {
"lastModified": 1764038373,
"narHash": "sha256-M6w2wNBRelcavoDAyFL2iO4NeWknD40ASkH1S3C0YGM=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "ab3536fe850211a96673c6ffb2cb88aab8071cc9",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"snowfall": {
"inputs": {
"flake-compat": "flake-compat_4",
"flake-compat": "flake-compat_5",
"flake-utils-plus": "flake-utils-plus",
"nixpkgs": [
"nixpkgs"
@ -733,6 +897,39 @@
"repo": "nixpkgs",
"type": "github"
}
},
"xwayland-satellite-stable": {
"flake": false,
"locked": {
"lastModified": 1755491097,
"narHash": "sha256-m+9tUfsmBeF2Gn4HWa6vSITZ4Gz1eA1F5Kh62B0N4oE=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"rev": "388d291e82ffbc73be18169d39470f340707edaa",
"type": "github"
},
"original": {
"owner": "Supreeeme",
"ref": "v0.7",
"repo": "xwayland-satellite",
"type": "github"
}
},
"xwayland-satellite-unstable": {
"flake": false,
"locked": {
"lastModified": 1764721075,
"narHash": "sha256-ChH4nq0cMEEkzkHqKlQt5Z7wxrk8ybcEHuA1YKAYmV0=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"rev": "1b918e29b419e89910014054e8b71d54c9235ea5",
"type": "github"
},
"original": {
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"type": "github"
}
}
},
"root": "root",

View file

@ -52,7 +52,7 @@
permittedInsecurePackages = [];
};
overlays = with inputs; [];
overlays = with inputs; [niri.overlays.niri];
outputs-builder = channels: {
formatter = channels.nixpkgs.alejandra;
@ -68,7 +68,7 @@
inputs = {
# nixpkgs.url = "git+file:///home/christopher/code/opensource/nixpkgs";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
# Opinionated flake library for better organization without much boilerplate
@ -100,5 +100,7 @@
affinity-nix.url = "github:mrshmllow/affinity-nix";
quadlet.url = "github:SEIAROTg/quadlet-nix";
musnix.url = "github:musnix/musnix";
niri.url = "github:sodiboo/niri-flake/9e59ee8";
awww.url = "git+https://codeberg.org/LGFae/awww";
};
}

View file

@ -15,6 +15,7 @@
zx # Tool for writing better scripts
# trurl # Parsing and manipulating URLs via CLI
ripgrep # Grep file search
dig # DNS
onefetch # Git information tool
tokei # Like cloc

View file

@ -7,10 +7,13 @@
[
./ssh.nix
./gpg
./niri
./misc/launcher.nix
./misc/browser.nix
./misc/gaming.nix
./misc/onedrive.nix
./misc/creativity.nix
./misc/recording.nix
./misc/everything.nix # TODO: Determine if we really always want all these programs or they should be composable
./global/current-packages.nix
]

View file

@ -0,0 +1,18 @@
{
pkgs,
system,
inputs,
...
}: {
home.packages = with pkgs; [
# 3D printing and engineering
orca-slicer
# Drawing
krita
inputs.affinity-nix.packages.${system}.v3
# Audio
vcv-rack
];
}

View file

@ -16,28 +16,23 @@
grim # Screenshots
slurp # Region selection
# GUI
slack # Work chat
vesktop # Discord client
vlc # Video player
# Productivity
obsidian # Note taking
calibre # eBook Manager
onlyoffice-desktopeditors # libreoffice alternative
filezilla # FTP Client
orca-slicer # Bambu Lab Slicer + Control
krita # Drawing software
inputs.affinity-nix.packages.${pkgs.system}.v3 # Affinity
mochi # SRS flashcards
thunderbird # Email client
speedcrunch # GUI calculator app
naps2 # Scanning
vcv-rack # Eurorack simulator
davinci-resolve # Video editor
cider-2 # Apple music player
todoist-electron # To-Do List app
thunderbird # Email client
onlyoffice-desktopeditors # libreoffice alternative
speedcrunch # GUI calculator app
calibre # eBook Manager
# Viewers
cider-2 # Apple music player
vlc # Video player
xarchiver # Archive viewer/extractor
zathura # Document viewer
evince # Document viewer
vesktop # Discord client
filezilla # FTP Client
mochi # SRS flashcards
];
}

View file

@ -2,6 +2,8 @@
home.packages = with pkgs; [
prismlauncher # minecraft launcher
heroic # gog/epic launcher
protonup-qt
opentrack
# game manager
(lutris.override {
@ -17,5 +19,7 @@
gamemode # performance mode
mangohud # performance overlays
alvr
input-remapper
];
}

View file

@ -0,0 +1,11 @@
{
pkgs,
config,
...
}: {
home.packages = with pkgs; [
droidcam
davinci-resolve
ffmpeg
];
}

View file

@ -0,0 +1,11 @@
{
lib,
pkgs,
...
}: {
programs.niri.settings.spawn-at-startup = with lib._elements; [
{argv = ["kitty"];}
{argv = ["awww-daemon"];}
{argv = ["awww" "img" "${fixture "wallpapers/cat-vibes.webp"}"];}
];
}

View file

@ -0,0 +1,19 @@
{
inputs,
pkgs,
...
}: {
imports = [
inputs.niri.homeModules.niri
./settings.nix
./keybinds.nix
./autostart.nix
];
programs.niri.package = pkgs.niri;
home.packages = with pkgs; [
fuzzel
inputs.awww.packages.${pkgs.stdenv.hostPlatform.system}.awww
];
}

View file

@ -0,0 +1,12 @@
{
lib,
config,
pkgs,
...
}: let
in {
programs.niri.settings.binds = with config.lib.niri.actions; let
in {
"Mod+f".action = fullscreen-window;
};
}

View file

@ -0,0 +1,62 @@
{
config,
pkgs,
...
}: {
programs.niri = {
enable = true;
settings = {
prefer-no-csd = true;
layout = {
background-color = "#ac8887";
focus-ring.enable = true;
gaps = 24;
shadow = {
enable = true;
};
};
window-rules = [
{
clip-to-geometry = true;
geometry-corner-radius = {
bottom-left = 12.0;
bottom-right = 0.0;
top-left = 0.0;
top-right = 12.0;
};
}
{
matches = [{is-focused = true;}];
focus-ring = {
width = 2;
};
}
];
input = {
keyboard.xkb.layout = "en";
};
cursor = {
size = 0;
theme = "Adwaita";
};
environment = {
CLUTTER_BACKEND = "wayland";
GDK_BACKEND = "wayland.x11";
MOZ_ENABLE_WAYLAND = "1";
QT_QPA_PLATFORM = "wayland";
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
ELECTRON_OZONE_PLATFORM_HINT = "auto";
XDG_SESSION_TYPE = "wayland";
XDG_CURRENT_DESKTOP = "niri";
DISPLAY = ":0";
};
};
};
}

View file

@ -3,6 +3,7 @@
secret = name: ./../secrets/${name};
commonHomeModule = module: ./../homes/common + "/${module}";
fixture = path: ./../fixtures + "/${path}";
writeNushellApplication = import ./writeNushellApplication.nix {inherit lib;};
# Determines the file location of the passed in attr set (e.g. `{ sep = "#"; })

View file

@ -28,6 +28,7 @@
config.permittedInsecurePackages = [
"nixos-config"
"electron-27.3.11"
"electron-36.9.5"
"dotnet-sdk-6.0.428"
];
};

View file

@ -22,7 +22,7 @@ in {
defaultEditor = true;
settings = {
theme = "catppuccin";
theme = "rose_pine_dawn";
editor = {
rulers = [80];

View file

@ -31,6 +31,7 @@
enable = true;
enableNushellIntegration = config.programs.nushell.enable;
enableFishIntegration = config.programs.fish.enable;
options = ["--cmd cd"];
};
carapace = {

View file

@ -14,6 +14,7 @@ in {
};
config = mkIf cfg.kitty.enable {
programs.fish.enable = true;
programs.kitty = {
enable = true;
@ -28,11 +29,11 @@ in {
};
extraConfig = ''
shell ${pkgs.nushell}/bin/nu
shell ${pkgs.fish}/bin/fish
modify_font cell_height 7px
'';
themeFile = "Catppuccin-Frappe";
themeFile = "Rosé Pine Dawn";
};
xdg.configFile."kitty/open-actions.conf".text = ''

View file

@ -0,0 +1,5 @@
{pkgs, ...}: {
home.packages = with pkgs; [
slack
];
}

View file

@ -24,11 +24,12 @@ in
in {
# age.secrets.christopher-password = secretFor "christopher" "christopher-password.age";
programs.fish.enable = true;
users = {
users.christopher = mkIfUser "christopher" {
isNormalUser = true;
# passwordFile = config.age.secrets.christopher-password.path;
shell = pkgs.nushell;
shell = pkgs.fish;
extraGroups = [
"wheel"
"docker"

View file

@ -28,18 +28,18 @@ in {
services.xserver = {
enable = true;
# SDDM is broken
displayManager.gdm = {
enable = true;
wayland = true;
};
};
services.desktopManager.plasma6.enable = true;
services.displayManager = {
defaultSession = "plasma";
# SDDM is broken
gdm = {
enable = true;
wayland = true;
};
# sddm = {
# enable = true;
# wayland.enable = true;

View file

@ -1,4 +1,52 @@
{channels, ...}: final: prev: {
# Pull the following packages from unstable instead
inherit (channels.unstable) kitty nu fish cider-2 _1password-gui;
inherit
(channels.unstable)
kitty
nu
cider-2
_1password-gui
orca-slicer
claude-code
lutris
;
bambu-studio = channels.unstable.bambu-studio.overrideAttrs (old: let
newVersion = "02.03.00.70";
in {
version = newVersion;
src = prev.fetchFromGitHub {
owner = "bambulab";
repo = "BambuStudio";
rev = "v${newVersion}";
hash = "sha256-2duNeSBi2WvsAUxkzTbKH+SiliNovc7LVICTzgQkrN8=";
};
nativeBuildInputs = (old.nativeBuildInputs or []) ++ [prev.cmake prev.pkg-config];
postPatch =
(old.postPatch or "")
+ ''
# Remove cereal-Links (link does not work, havent seen anything breaking from this change).
# Disclaimera; This patch is AI generated
grep -RIl "target_link_libraries" . | while read -r f; do
sed -i \
-e 's/\bcereal::cereal\b//g' \
-e 's/[[:space:]]\bcereal\b//g' \
"$f"
done
'';
postInstall =
(old.postInstall or "")
+ ''
wrapProgram $out/bin/bambu-studio --set GBM_BACKEND dri
'';
cmakeFlags =
(old.cmakeFlags or [])
++ [
"-DCMAKE_POLICY_VERSION_MINIMUM=3.5"
];
});
}

View file

@ -90,6 +90,12 @@ with lib._elements; {
# Bluetooth manager
blueman.enable = true;
udev.extraRules = ''
# SpaceMouse Enterprise
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="256f", MODE="0666"
# Thrustmaster T.Flight Rudder Pedals
SUBSYSTEM=="input", ATTRS{idProduct}=="b679", ATTRS{idVendor}=="044f", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1"
'';
udev.packages = [pkgs.platformio-core.udev];
# Linux link via MQTT
@ -152,9 +158,10 @@ with lib._elements; {
gtk3
openrgb-with-all-plugins
lact # GPU tuning
# lact # GPU tuning
libimobiledevice
ifuse
naps2 # Scanning
# Oxidized coreutils
uutils-coreutils-noprefix
@ -173,8 +180,9 @@ with lib._elements; {
users.groups.pico = {};
systemd.packages = [pkgs.lact];
systemd.services.lactd.wantedBy = ["multi-user.target"];
# AMD GPU tooling
# systemd.packages = [pkgs.lact];
# systemd.services.lactd.wantedBy = ["multi-user.target"];
hardware = {
amdgpu = {
@ -190,6 +198,9 @@ with lib._elements; {
graphics = {
enable = true;
enable32Bit = true;
extraPackages = with pkgs; [
mesa.opencl
];
};
# SANE scanner support
@ -219,4 +230,26 @@ with lib._elements; {
efiSupport = true;
};
};
programs.obs-studio = {
enable = true;
enableVirtualCamera = true;
plugins = with pkgs.obs-studio-plugins; [
wlrobs
obs-vaapi
obs-pipewire-audio-capture
obs-backgroundremoval
droidcam-obs
];
};
boot.extraModulePackages = with config.boot.kernelPackages; [
v4l2loopback
];
boot.kernelModules = ["v4l2loopback"];
boot.extraModprobeConfig = ''
options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1
'';
security.polkit.enable = true;
}