Compare commits
13 Commits
2024-12-26
...
2024-12-29
Author | SHA1 | Date | |
---|---|---|---|
424f61f782 | |||
d2540f97ee | |||
d7be319067 | |||
43df4e1574 | |||
2a6ed9adb9 | |||
925d49efcc | |||
3fe4831f89 | |||
38372c60a1 | |||
3815f069fa | |||
bd647bd62b | |||
4606b00b73 | |||
f7ee19042e | |||
4ad470469f |
@@ -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;
|
||||
|
@@ -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
|
||||
|
15
hosts/common/net/dns/bind.nix
Normal file
15
hosts/common/net/dns/bind.nix
Normal 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
|
||||
}
|
@@ -23,6 +23,7 @@
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
imports = [
|
||||
./bind.nix
|
||||
./hickory-dns.nix
|
||||
./unbound.nix
|
||||
];
|
||||
|
@@ -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 {
|
||||
|
@@ -96,6 +96,7 @@
|
||||
./iio-sensor-proxy.nix
|
||||
./imagemagick.nix
|
||||
./inkscape.nix
|
||||
./itgmania.nix
|
||||
./jellyfin-media-player.nix
|
||||
./kdenlive.nix
|
||||
./keymapp.nix
|
||||
|
59
hosts/common/programs/itgmania.nix
Normal file
59
hosts/common/programs/itgmania.nix
Normal 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";
|
||||
};
|
||||
}
|
@@ -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:
|
||||
|
@@ -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>
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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";
|
||||
|
@@ -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";
|
||||
}
|
||||
|
@@ -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";
|
||||
|
@@ -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";
|
||||
}
|
||||
|
@@ -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";
|
||||
}
|
||||
|
@@ -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")
|
||||
;;
|
||||
|
Reference in New Issue
Block a user