Compare commits
7 Commits
6e9db83282
...
50cc02d182
Author | SHA1 | Date |
---|---|---|
Simon Bruder | 50cc02d182 | |
Simon Bruder | 0123aa1288 | |
Simon Bruder | 7c09b7cf61 | |
Simon Bruder | 5f48f4cb69 | |
Simon Bruder | b027a2aa0f | |
Simon Bruder | cd364c00e6 | |
Simon Bruder | 551d013b60 |
|
@ -1,30 +0,0 @@
|
||||||
# Hostname Candidates
|
|
||||||
|
|
||||||
| name | relation | special field |
|
|
||||||
| ---- | -------- | ------------- |
|
|
||||||
| ayu | <https://anidb.net/character/7909> | |
|
|
||||||
| maaa | <https://madeinabyss.fandom.com/wiki/Maaa> | |
|
|
||||||
| mayushii | <https://anidb.net/ch23268> | |
|
|
||||||
| sakura | <https://anidb.net/ch96818> | |
|
|
||||||
| shibazaki | <https://anidb.net/character/67927> | |
|
|
||||||
| yuzuru | <https://anidb.net/ch84230> | |
|
|
||||||
|
|
||||||
## In use
|
|
||||||
|
|
||||||
These once were candidates and are now in use. Might be recycled once the
|
|
||||||
system is no longer in use.
|
|
||||||
|
|
||||||
| name | relation | special field |
|
|
||||||
| ---- | -------- | ------------- |
|
|
||||||
| fuuko | <https://anidb.net/ch1120> | |
|
|
||||||
| kanna | <https://anidb.net/ch85811> | |
|
|
||||||
| renge | <https://anidb.net/character/57473> | |
|
|
||||||
| sayuri | <https://anidb.net/ch7914> | |
|
|
||||||
| violet | <https://anidb.net/ch89959> | |
|
|
||||||
| vueko | <https://madeinabyss.fandom.com/wiki/Vueko> | |
|
|
||||||
|
|
||||||
## Host Group names
|
|
||||||
|
|
||||||
| name | relation | special field |
|
|
||||||
| ---- | -------- | ------------- |
|
|
||||||
| shinonome | Shinonome Labs from [Nichijou](https://anidb.net/anime/8168) | lab |
|
|
|
@ -22,6 +22,13 @@
|
||||||
:::shell
|
:::shell
|
||||||
parec [ -d DEVICE ] | flac --endian=little --channels=2 --bps=16 --sample-rate=48000 --sign=signed -o foo.flac -
|
parec [ -d DEVICE ] | flac --endian=little --channels=2 --bps=16 --sample-rate=48000 --sign=signed -o foo.flac -
|
||||||
|
|
||||||
|
### Copy Matroska Chapters to Opus
|
||||||
|
|
||||||
|
Requires the metadata to fit in one ogg page (so no cover art :().
|
||||||
|
|
||||||
|
:::shell
|
||||||
|
mkvextract file.mka chapters | xq -r 'def pad: tostring | (3 - length) as $l | ("0" * $l)[:$l] + .; [[.Chapters.EditionEntry.ChapterAtom[] | {start: .ChapterTimeStart, name: .ChapterDisplay.ChapterString}] | to_entries[] | "CHAPTER\(.key|pad)=\(.value.start)\nCHAPTER\(.key|pad)NAME=\(.value.name)"] | join("\n")' | opustags -i -S file.opus
|
||||||
|
|
||||||
## Video
|
## Video
|
||||||
|
|
||||||
### Copy DVD stream to file [with dvd already copied to local directory]
|
### Copy DVD stream to file [with dvd already copied to local directory]
|
||||||
|
|
|
@ -27,9 +27,35 @@
|
||||||
:::js
|
:::js
|
||||||
[...document.querySelectorAll('#track_table .track_row_view')].map(el => `${el.querySelector('.track_number').innerText} ${el.querySelector('.track-title').innerText} (${el.querySelector('.time').innerText})`).join("\n")
|
[...document.querySelectorAll('#track_table .track_row_view')].map(el => `${el.querySelector('.track_number').innerText} ${el.querySelector('.track-title').innerText} (${el.querySelector('.time').innerText})`).join("\n")
|
||||||
|
|
||||||
|
### Show total purchase value
|
||||||
|
|
||||||
|
Works on https://bandcamp.com/USERNAME/purchases
|
||||||
|
The result needs to be feeded into an intelligent calculator like qalc.
|
||||||
|
|
||||||
|
:::js
|
||||||
|
Array.from(document.querySelectorAll(".col.purchases-item-total div")).map(el => {const raw = el.children[1].innerText.replace("\n", " ").replace(",", ""); return raw.substr(1, raw.len)}).join(" + ")
|
||||||
|
|
||||||
## Ototoy
|
## Ototoy
|
||||||
|
|
||||||
### Get title listing (for MusicBrainz)
|
### Get title listing (for MusicBrainz)
|
||||||
|
|
||||||
:::js
|
:::js
|
||||||
Array.from(document.querySelectorAll('#tracklist tr:not(:nth-child(1))')).map(el => el.querySelector('span[id^="title-"]').innerText + " " + el.querySelector('td:nth-child(3)').innerText).join("\n")
|
Array.from(document.querySelectorAll('#tracklist tr:not(:nth-child(1))')).map(el => el.querySelector('span[id^="title-"]').innerText + " " + el.querySelector('td:nth-child(3)').innerText).join("\n")
|
||||||
|
|
||||||
|
## SteamDB
|
||||||
|
|
||||||
|
### Get stats as json
|
||||||
|
|
||||||
|
:::js
|
||||||
|
console.log(JSON.stringify(Array.from(document.querySelectorAll('#js-achievements table tbody tr')).map(row => { const cols = row.querySelectorAll('td'); return { name: cols[0].innerText, description: cols[1].querySelector('p.i').innerText, displayName: cols[1].childNodes[0].textContent.replace(/\n/g, ''), hidden: "0", icon: "achievements/" + cols[0].innerText + ".jpg", icongray: "achievements/" + cols[0].innerText + "_gray.jpg" } })))
|
||||||
|
|
||||||
|
## YouTube
|
||||||
|
|
||||||
|
### Convert takeout playlists to Invidious format
|
||||||
|
|
||||||
|
Incredibly ugly, but it works™.
|
||||||
|
|
||||||
|
If you want the import to succeed remove the liked video playlist before importing.
|
||||||
|
|
||||||
|
:::shell
|
||||||
|
(echo '{"playlists":['; (for i in *.csv; do echo '{"title": "'"${i%%.csv}"'", "description": "", "privacy": "private", "videos": ["'"$(tail -n +5 "$i" | head -n -1 | cut -d',' -f1| perl -p -e 's/\n/","/' | head -c -3)"'"]},'; done)|head -c -2; echo ']}') > playlists.json
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
# Windows
|
||||||
|
|
||||||
|
## Mapped network drive does not show up in save/open dialogue
|
||||||
|
|
||||||
|
In `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System`,
|
||||||
|
add the new registry key `EnableLinkedConnections` of type `DWORD` with a value of 1.
|
12
flake.lock
12
flake.lock
|
@ -2,11 +2,11 @@
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"flake-utils": {
|
"flake-utils": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1619345332,
|
"lastModified": 1653893745,
|
||||||
"narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=",
|
"narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28",
|
"rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -17,11 +17,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1619796933,
|
"lastModified": 1654694478,
|
||||||
"narHash": "sha256-Tw9QyuOL8ROhMKkpYBmj8r8h9ehEn9JKhZ+VyK4OfMI=",
|
"narHash": "sha256-nFAMETXEhIrqnBe28u6vqy4ixSRr0BRrlZLlS0e7eoM=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "c8dff328e51f62760bf646bc345e3aabcfd82046",
|
"rev": "18de53ca965bd0678aaf09e5ce0daae05c58355a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
149
flake.nix
149
flake.nix
|
@ -7,144 +7,22 @@
|
||||||
|
|
||||||
outputs = { self, flake-utils, nixpkgs }: flake-utils.lib.eachDefaultSystem (system:
|
outputs = { self, flake-utils, nixpkgs }: flake-utils.lib.eachDefaultSystem (system:
|
||||||
let
|
let
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
pkgs = import nixpkgs { inherit system; };
|
||||||
in
|
in
|
||||||
rec {
|
rec {
|
||||||
packages = nixpkgs.lib.mapAttrs
|
packages = nixpkgs.lib.mapAttrs
|
||||||
(name: value: pkgs.python3Packages.callPackage value { })
|
(name: value: pkgs.python3Packages.callPackage value { })
|
||||||
{
|
{
|
||||||
lunr =
|
|
||||||
{ buildPythonPackage, fetchPypi, future, six, mock, pytest }:
|
|
||||||
|
|
||||||
buildPythonPackage rec {
|
|
||||||
pname = "lunr";
|
|
||||||
version = "0.5.8";
|
|
||||||
|
|
||||||
src = fetchPypi {
|
|
||||||
inherit pname version;
|
|
||||||
sha256 = "0vn2j5iyy40sv0f4v8nin5n5xs4a020g6gcbcgfpbxzgk0xhdyy4";
|
|
||||||
};
|
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
|
||||||
future
|
|
||||||
six
|
|
||||||
];
|
|
||||||
|
|
||||||
checkInputs = [
|
|
||||||
mock
|
|
||||||
pytest
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# FIXME: use nixpkgs’s mkdocs once it is ≥1.1
|
|
||||||
mkdocs =
|
|
||||||
{ buildPythonPackage
|
|
||||||
, fetchPypi
|
|
||||||
, backports_tempfile
|
|
||||||
, click
|
|
||||||
, jinja2
|
|
||||||
, livereload
|
|
||||||
, markdown
|
|
||||||
, nltk
|
|
||||||
, pyyaml
|
|
||||||
, tornado
|
|
||||||
}:
|
|
||||||
|
|
||||||
buildPythonPackage rec {
|
|
||||||
pname = "mkdocs";
|
|
||||||
version = "1.1.2";
|
|
||||||
|
|
||||||
src = fetchPypi {
|
|
||||||
inherit pname version;
|
|
||||||
sha256 = "0fgv5zawpyyv0vd4j5y8m4h058lh9jkwfcm0xy4pg7dr09a1xdph";
|
|
||||||
};
|
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
|
||||||
backports_tempfile
|
|
||||||
click
|
|
||||||
jinja2
|
|
||||||
livereload
|
|
||||||
markdown
|
|
||||||
nltk
|
|
||||||
pyyaml
|
|
||||||
tornado
|
|
||||||
|
|
||||||
packages.lunr
|
|
||||||
];
|
|
||||||
|
|
||||||
doCheck = false; # circular depdendency
|
|
||||||
};
|
|
||||||
|
|
||||||
pymdown-extensions =
|
|
||||||
{ buildPythonPackage, fetchPypi, markdown }:
|
|
||||||
|
|
||||||
buildPythonPackage rec {
|
|
||||||
pname = "pymdown-extensions";
|
|
||||||
version = "8.0.1";
|
|
||||||
|
|
||||||
src = fetchPypi {
|
|
||||||
inherit pname version;
|
|
||||||
sha256 = "07p5xks6qf73nbv0qb7jrspkpmxdyr7dpxv3rnkh9p2b5l2h99wv";
|
|
||||||
};
|
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
|
||||||
markdown
|
|
||||||
];
|
|
||||||
|
|
||||||
doCheck = false; # they fail?
|
|
||||||
};
|
|
||||||
|
|
||||||
mkdocs-material-extensions =
|
|
||||||
{ buildPythonPackage, fetchPypi }:
|
|
||||||
|
|
||||||
buildPythonPackage rec {
|
|
||||||
pname = "mkdocs-material-extensions";
|
|
||||||
version = "1.0.1";
|
|
||||||
|
|
||||||
src = fetchPypi {
|
|
||||||
inherit pname version;
|
|
||||||
sha256 = "13y617sql4hqs376c3dfcb6v7q41km9x7fh52k3f74a2brzzniv9";
|
|
||||||
};
|
|
||||||
|
|
||||||
# circular dependency
|
|
||||||
doCheck = false;
|
|
||||||
postPatch = ''
|
|
||||||
sed -i 's/mkdocs-material>=5.0.0//' requirements/project.txt
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
mkdocs-material =
|
|
||||||
{ buildPythonPackage, fetchPypi, markdown, pygments }:
|
|
||||||
|
|
||||||
buildPythonPackage rec {
|
|
||||||
pname = "mkdocs-material";
|
|
||||||
version = "6.1.2";
|
|
||||||
|
|
||||||
src = fetchPypi {
|
|
||||||
inherit pname version;
|
|
||||||
sha256 = "0yifc1df94rsaxy72hqnhjkv4c50c30j5kg0yxybkxy07p7kafic";
|
|
||||||
};
|
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
|
||||||
markdown
|
|
||||||
pygments
|
|
||||||
|
|
||||||
packages.mkdocs
|
|
||||||
packages.mkdocs-material-extensions
|
|
||||||
packages.pymdown-extensions
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
iosevka-web =
|
iosevka-web =
|
||||||
{ stdenv, fetchzip }:
|
{ stdenv, fetchzip }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "iosevka-web";
|
pname = "iosevka-web";
|
||||||
version = "3.7.1";
|
version = "15.5.0";
|
||||||
|
|
||||||
src = fetchzip {
|
src = fetchzip {
|
||||||
url = "https://github.com/be5invis/Iosevka/releases/download/v${version}/pkg-iosevka-${version}.zip";
|
url = "https://github.com/be5invis/Iosevka/releases/download/v15.5.0/webfont-iosevka-15.5.0.zip";
|
||||||
sha256 = "0d012aqfnyqlpl4smfa2x2qz2qmbbfxb6jr4awv8gp6r359rc9k1";
|
sha256 = "sha256-o7JHLs/E6oJGx0WxdHczK65Is7SZ9HdMXef/Am29OoA=";
|
||||||
stripRoot = false;
|
stripRoot = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -152,7 +30,8 @@
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out
|
mkdir -p $out
|
||||||
cp -r woff woff2 ttf *.css $out
|
sed -e "s/url('ttf\/iosevka-.*.ttf') format('truetype'), //" iosevka.css > $out/iosevka.css
|
||||||
|
cp -r woff2 $out
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -166,8 +45,6 @@
|
||||||
|
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
mkdocs build -d $out
|
mkdocs build -d $out
|
||||||
mkdir -p $out/nix-support
|
|
||||||
echo "doc wiki $out" >> $out/nix-support/hydra-build-products
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
|
@ -175,9 +52,9 @@
|
||||||
ln -s ${packages.iosevka-web} $out/assets/fonts/iosevka
|
ln -s ${packages.iosevka-web} $out/assets/fonts/iosevka
|
||||||
'';
|
'';
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = with pkgs; [
|
||||||
packages.mkdocs
|
mkdocs
|
||||||
packages.mkdocs-material
|
python3Packages.mkdocs-material
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -192,13 +69,5 @@
|
||||||
'');
|
'');
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# My hydra only has x86_64-linux builders
|
|
||||||
hydraJobs =
|
|
||||||
if builtins.elem system [ "x86_64-linux" ]
|
|
||||||
then {
|
|
||||||
build = packages.wiki;
|
|
||||||
}
|
|
||||||
else { };
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue