Compare commits

...

13 Commits

17 changed files with 174 additions and 38 deletions

View File

@@ -18,7 +18,8 @@
sane.programs.sane-private-unlock-remote.config.hosts = [ "servo" ];
sane.programs.firefox.config.formFactor = "laptop";
sane.programs.stepmania.enableFor.user.colin = true;
sane.programs.itgmania.enableFor.user.colin = true;
# sane.programs.stepmania.enableFor.user.colin = true; #< TODO: fix build
sane.programs.sway.enableFor.user.colin = true;
sops.secrets.colin-passwd.neededForUsers = true;

View File

@@ -89,6 +89,8 @@
sane.ids.smartd.gid = 2010;
sane.ids.radicale.uid = 2011;
sane.ids.radicale.gid = 2011;
sane.ids.named.uid = 2012;
sane.ids.named.gid = 2012;
# found on graphical hosts
sane.ids.nm-iodine.uid = 2101; # desko/moby/lappy

View File

@@ -0,0 +1,15 @@
{ lib, ... }:
{
services.bind.enable = lib.mkDefault true;
services.bind.forwarders = []; #< don't forward queries to upstream resolvers
services.bind.cacheNetworks = [
"127.0.0.0/24"
"::1/128"
"10.0.0.0/16"
];
services.bind.extraOptions = ''
port 953;
'';
networking.resolvconf.useLocalResolver = false; #< undo bind making this default true
}

View File

@@ -23,6 +23,7 @@
{ config, pkgs, ... }:
{
imports = [
./bind.nix
./hickory-dns.nix
./unbound.nix
];

View File

@@ -65,6 +65,7 @@ in
rev = "b924a57e8eeb24e8b9afc5fd0fb9b51d5993fe5d";
hash = "sha256-1VbKV+eAJ80IMlubNl7774B7QvLv4hE8SXANDSD9sRU=";
};
patches = [];
});
}).overrideAttrs (upstream: {
# src = lib.warnIf (lib.versionOlder "47.0" upstream.version) "gnome-calls outdated; remove src override? (keep UI patches though!)" pkgs.fetchFromGitLab {

View File

@@ -96,6 +96,7 @@
./iio-sensor-proxy.nix
./imagemagick.nix
./inkscape.nix
./itgmania.nix
./jellyfin-media-player.nix
./kdenlive.nix
./keymapp.nix

View File

@@ -0,0 +1,59 @@
# itgmania is a (slightly) better-maintained fork of stepmania
# - <https://github.com/itgmania/itgmania>
#
# configuration:
# - things like calibration data live in ~/.itgmania/Save/Preferences.ini
# - GlobalOffsetSeconds = difference between audio and video delay.
# Hit F6 twice in-game to being auto calibration
# Usually the result will be negative (i.e. the higher the latency of the pad, the more negative the offset)
# - SoundDevice: use `pactl list sources` (or `pacmd list-sources`) and select alsa_output.pci-xxxxx
# e.g. `alsa_output.pci-0000_00_1f.3.hdmi-surround.monitor`
# - VisualOffset: if video is coming LATE, then use a negative number
#
# songs/packs:
# - find pad packs:
# - <https://docs.google.com/spreadsheets/d/1F1IURV1UAYiICTLhAOKIJfwUN1iG12ZOufHZuDKiP48/edit#gid=27038621>
# - https://www.reddit.com/r/Stepmania/comments/aku3lb/best_pad_packs_on_stepmaniaonlinenet_or_elsewhere/
# - https://fitupyourstyle.com/
# allows search by difficulty
# - dl packs from <https://stepmaniaonline.net>
{ lib, pkgs, ... }:
{
sane.programs.itgmania = {
buildCost = 1;
packageUnwrapped = pkgs.itgmania.overrideAttrs (upstream: {
# XXX(2024-12-29): itgmania (and stepmania) have to be run from their bin directory, else they silently exit
nativeBuildInputs = upstream.nativeBuildInputs ++ [
pkgs.makeWrapper
];
postInstall = lib.replaceStrings
[ "ln -s $out/itgmania/itgmania $out/bin/itgmania" ]
[ "makeWrapper $out/itgmania/itgmania $out/bin/itgmania --run 'cd ${placeholder "out"}/itgmania'" ]
upstream.postInstall
;
});
sandbox.whitelistAudio = true;
sandbox.whitelistDri = true;
sandbox.whitelistX = true; #< TODO: is this needed? try QT_QPA_PLATFORM=wayland or SDL_VIDEODRIVER=wayland
sandbox.extraPaths = [
# for the pad input (/dev/input/js*)
"/dev/input"
"/sys/class/input"
];
# on launch, itgmania will copy templates for any missing files out of its data directory and into ~/.itgmania
sandbox.extraHomePaths = [
".itgmania"
];
persist.byStore.plaintext = [
".itgmania/Cache" #< otherwise gotta index all the songs every launch
".itgmania/Save"
];
# TODO: setup ~/.local/share/itgmania/Themes
fs.".itgmania/Courses".symlink.target = "/mnt/servo/media/games/stepmania/Courses";
fs.".itgmania/Songs".symlink.target = "/mnt/servo/media/games/stepmania/Songs";
};
}

View File

@@ -1,10 +1,11 @@
# configuration:
# - things like calibration data live in ~/.stepmania-5.1/Save/Preferences.ini
# - GlobalOffsetSeconds = difference between audio and video delay.
# Hit F6 twice in-game to being auto calibration
# Usually the result will be negative (i.e. the higher the latency of the pad, the more negative the offset)
# - SoundDevice: use pacmd list-sources and select alsa_output.pci-xxxxx
# - VisualOffset: if video is coming LATE, then use a negative number
# - GlobalOffsetSeconds = difference between audio and video delay.
# Hit F6 twice in-game to being auto calibration
# Usually the result will be negative (i.e. the higher the latency of the pad, the more negative the offset)
# - SoundDevice: use `pactl list sources` (or `pacmd list-sources`) and select alsa_output.pci-xxxxx
# e.g. `alsa_output.pci-0000_00_1f.3.hdmi-surround.monitor`
# - VisualOffset: if video is coming LATE, then use a negative number
#
# songs/packs:
# - find pad packs:

View File

@@ -1,17 +1,6 @@
# quirks: temporary patches with the goal of eventually removing them
{ ... }:
{
# bug in linux 6.8(?), fixed by linux 6.9. see: <https://github.com/axboe/liburing/issues/1113>
# - <https://github.com/neovim/neovim/issues/28149>
# - <https://git.kernel.dk/cgit/linux/commit/?h=io_uring-6.9&id=e5444baa42e545bb929ba56c497e7f3c73634099>
# when removing, try starting and suspending (ctrl+z) two instances of neovim simultaneously.
# if the system doesn't freeze, then this is safe to remove.
# added 2024-04-04
# removed 2024-08-31
# sane.user.fs.".profile".symlink.text = lib.mkBefore ''
# export UV_USE_IO_URING=0
# '';
# powertop will default to putting USB devices -- including HID -- to sleep after TWO SECONDS
powerManagement.powertop.enable = false;
# linux CPU governor: <https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt>

View File

@@ -396,6 +396,11 @@ in with final; {
# buildInputs = orig.buildInputs ++ [ pcre2 ];
# });
# 2024/12/29: blocked on psqlodbc
# used by hyprland (which is an indirect dep of waybar, nwg-panel, etc),
# which it shells out to at runtime (and hence, not ever used by me).
hyprland-qtutils = null;
# 2024/05/31: upstreaming is blocked on openjdk
# "setup: line 1595: ant: command not found"
# i2p = mvToNativeInputs [ ant gettext ] prev.i2p;

View File

@@ -66,6 +66,50 @@
# samba = null;
# };
# XXX(2024-12-29): avoid temporary pysaml2 build failure; optional SSO feature which i probably don't even have enabled on my matrix
# see: <https://github.com/NixOS/nixpkgs/issues/367976>
matrix-synapse-unwrapped = super.matrix-synapse-unwrapped.overridePythonAttrs (upstream: {
# nativeCheckInputs = lib.remove python3.pkgs.pysaml2 upstream.nativeCheckInputs;
nativeCheckInputs = lib.subtractLists upstream.optional-dependencies.saml2 upstream.nativeCheckInputs;
# `tests.storage.databases.main.test_events_worker.DatabaseOutageTestCase.test_recovery` is failing,
# apparently independent of pysaml2. can't find how to disable that except by disabling ALL tests.
doCheck = false;
# env.NIX_BUILD_CORES = 1;
# disabledTests = [
# "tests.storage.databases.main.test_events_worker.DatabaseOutageTestCase.test_recovery"
# "storage.databases.main.test_events_worker.DatabaseOutageTestCase.test_recovery"
# "databases.main.test_events_worker.DatabaseOutageTestCase.test_recovery"
# "main.test_events_worker.DatabaseOutageTestCase.test_recovery"
# "test_events_worker.DatabaseOutageTestCase.test_recovery"
# "DatabaseOutageTestCase.test_recovery"
# "test_recovery"
# "tests.storage.databases.main.test_events_worker.DatabaseOutageTestCase"
# "storage.databases.main.test_events_worker.DatabaseOutageTestCase"
# "databases.main.test_events_worker.DatabaseOutageTestCase"
# "main.test_events_worker.DatabaseOutageTestCase"
# "test_events_worker.DatabaseOutageTestCase"
# "DatabaseOutageTestCase"
# "tests.storage.databases.main.test_events_worker"
# "storage.databases.main.test_events_worker"
# "databases.main.test_events_worker"
# "main.test_events_worker"
# "test_events_worker"
# "tests.storage.databases"
# "storage.databases"
# "databases"
# ];
# disabledTestPaths = [
# "tests/storage/databases/main/test_events_worker.py"
# "storage/databases/main/test_events_worker.py"
# "databases/main/test_events_worker.py"
# "main/test_events_worker.py"
# "test_events_worker.py"
# ];
});
# phog = super.phog.override {
# # disable squeekboard because it takes 20 minutes to compile when emulated
# squeekboard = null;

View File

@@ -13,7 +13,7 @@
# - support for "meta" keys found in /etc/fstab
# my (fuse3 branch) fork includes the above plus:
# - implements the fuse3 API. this means it also supports `-o drop_privileges`
version = "0-unstable-2024-12-26";
version = "0.9.2-unstable-2024-12-26";
src = fetchFromGitea {
domain = "git.uninsane.org";
owner = "colin";

View File

@@ -8,8 +8,8 @@
mkNixpkgs ? import ./mkNixpkgs.nix {}
}:
mkNixpkgs {
rev = "39bf1ee9e546b11fe191e5c842e1b882fe6b01a6";
sha256 = "sha256-UoXrxKpxeTLLDEZlWYlBN6dDzFQl/2aRwDqwpP2gHDQ=";
version = "0-unstable-2024-12-26";
rev = "788f5d7711e9d6ac73bdba4935644a6c46eaaef8";
sha256 = "sha256-SJAuYWg7vRfrMPnFE6KAcNHHU7gz5o/wrKoLJ9AOYDI=";
version = "0-unstable-2024-12-29";
branch = "master";
}

View File

@@ -55,10 +55,16 @@ in
})
(fetchpatch' {
# 2024-12-26: required to build `picocom`
name = "lrzsz: fix build on gcc14";
prUrl = "https://github.com/NixOS/nixpkgs/pull/367989";
hash = "sha256-+tNqqaOhywKs0MW7Jmj8CVvQmeMnRIR0cHx2cVOZjYY=";
# merged into staging 2024-12-28
name = "python3Packages.meson-python: honor mesonFlagsArray";
saneCommit = "38681f9dbd65e92bc4c3f49f0ce9c7b15dcbe9ea";
hash = "sha256-YzS6eX6sPbEx3CzAGaz8alz/s8O5JjkXtg+/Wk7ndZ0=";
})
(fetchpatch' {
name = "coturn: remove unnecessary libpromhttp dependency, fix build";
prUrl = "https://github.com/NixOS/nixpkgs/pull/369142";
hash = "sha256-arauwlYZjhV7r/k/2hAmHdx4bbwD1A+ymhurarTF1fs=";
})
(fetchpatch' {
@@ -69,9 +75,10 @@ in
})
(fetchpatch' {
name = "python3Packages.meson-python: honor mesonFlagsArray";
saneCommit = "38681f9dbd65e92bc4c3f49f0ce9c7b15dcbe9ea";
hash = "sha256-YzS6eX6sPbEx3CzAGaz8alz/s8O5JjkXtg+/Wk7ndZ0=";
name = "mesa: fix cross compilation";
prUrl = "https://github.com/NixOS/nixpkgs/pull/369171";
saneCommit = "4c672bfc7eef1cd0e45158f1e99e71ebbb68bb85";
hash = "sha256-+G5/zfYlyVLebgK/IC3QL1eY19v28+cgvjgk+RrpvGQ=";
})
(fetchpatch' {
@@ -82,6 +89,12 @@ in
hash = "sha256-3mvNFvOgUtzWwPEHGBSv9UEANxVfD1/fXbiV/mlq0l8=";
})
(fetchpatch' {
name = "itgmania: init at 0.9.0";
prUrl = "https://github.com/NixOS/nixpkgs/pull/355725";
hash = "sha256-pN14eynQizhGPPiF4bj9e/HdNEmW/gJHvK59ihwM/vA=";
})
(fetchpatch' {
# TODO: send to upstream nixpkgs once tested (branch: lappy: pr-stepmania-wrapper)
name = "stepmania: wrap the program so it knows where to find its data files";

View File

@@ -2,8 +2,8 @@
mkNixpkgs ? import ./mkNixpkgs.nix {}
}:
mkNixpkgs {
rev = "9f8cd33f094f1316d69a4c6f946ec52d02e70081";
sha256 = "sha256-PyG86sL3uRKD0fEAYp314VeEwrHJA7WL8yUnz3Y3PX8=";
version = "0-unstable-2024-12-26";
rev = "e39a96633389958a895c04435a68de1d098787a7";
sha256 = "sha256-z6U6iY8MnRU+DN7j70uPpy2ZIxXC7NGrIBQB3A2aRjQ=";
version = "0-unstable-2024-12-29";
branch = "staging-next";
}

View File

@@ -2,8 +2,8 @@
mkNixpkgs ? import ./mkNixpkgs.nix {}
}:
mkNixpkgs {
rev = "24c287ca6471e041c306cd8f4b0e80e1137667b2";
sha256 = "sha256-AzH1rZFqEH8sovZZfJykvsEmCedEZWigQFHWHl6/PdE=";
version = "0-unstable-2024-12-26";
rev = "4e1d4f49f2aeb5fe0a5a9694bfb96dac99045149";
sha256 = "sha256-EBlotppgK4cIoadWWnscE23tmYD47nbvgaOo2vHEQvQ=";
version = "0-unstable-2024-12-29";
branch = "staging";
}

View File

@@ -53,7 +53,7 @@ getPkgs() {
# nix-instantiate -A nix "$NIX_FILES_TOP"
# nix-instantiate -A nixpkgs-bootstrap.master "$NIX_FILES_TOP"
debug "querying packages to update as part of '$attrPrefix'"
local attrs=$(nix eval --raw -f "$NIX_FILES_TOP" 'updateTargets."'"$attrPrefix"'"' --apply 'builtins.concatStringsSep " "')
local attrs=$(nix eval --raw -f "$NIX_FILES_TOP" 'updateTargets."'"$attrPrefix"'"' --apply 'builtins.concatStringsSep " "' "${nixFlags[@]}")
debug "got: $attrs"
attrsArr+=($attrs)
}
@@ -61,17 +61,17 @@ getPkgs() {
updateOnePkg() {
local attrPath="$1"
local updateScript=$(nix eval --raw -f "$NIX_FILES_TOP" 'updateScripts."'"$attrPath"'"')
local updateScript=$(nix eval --raw -f "$NIX_FILES_TOP" 'updateScripts."'"$attrPath"'"' "${nixFlags[@]}")
if [ -z "$updateScript" ]; then
warn "don't know how to update '$attrPath'"
return
fi
# make sure everything needed to invoke the update script exists in-store
local context=$(nix eval --raw -f "$NIX_FILES_TOP" 'updateScripts."'"$attrPath"'"' --apply 's: builtins.concatStringsSep " " (builtins.attrNames (builtins.getContext s))')
local context=$(nix eval --raw -f "$NIX_FILES_TOP" 'updateScripts."'"$attrPath"'"' --apply 's: builtins.concatStringsSep " " (builtins.attrNames (builtins.getContext s))' "${nixFlags[@]}")
for c in $context; do
debug "realizing updateScript requisite: $context"
nix-store --realize "$c" || true
nix-store --realize "$c" "${nixFlags[@]}" || true
done
info "updating: '$attrPath'"
@@ -87,6 +87,7 @@ updatePkgsInParallel() {
}
scriptFlags=()
nixFlags=()
dryRun=
toplevelsToUpdate=()
verbose=
@@ -106,6 +107,9 @@ parseArgs() {
scriptFlags+=(--verbose)
verbose=1
;;
(--*)
nixFlags+=("$arg")
;;
(*)
toplevelsToUpdate+=("$arg")
;;