Skip to content

Instantly share code, notes, and snippets.

@Mic92
Mic92 / 0_usage.md
Last active March 8, 2024 13:43
Disko impure image script example

First generate the image script:

$ nix build .#nixosConfigurations.myhost.config.system.build.diskoImagesScript

Next we build the image:

$ sudo ./result --build-memory 2048
@Mic92
Mic92 / scrape-prs.py
Created October 22, 2023 05:57
Scrape all nixpkgs pull requests
#!/usr/bin/env python3
import http.client
import json
import os
import time
import urllib.parse
import urllib.request
from pathlib import Path
from typing import Any
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p sqlite -p bash
SQL=$(cat <<EOF
select * from DerivationOutputs do
inner join ValidPaths vp on vp.id = do.drv
inner join Refs r1 on r1.referrer = vp.id
inner join ValidPaths vp2 on r1.reference = vp2.id
where do.path GLOB '/nix/store/$1-*'
EOF
@Mic92
Mic92 / 00_eval.txt
Last active July 16, 2023 10:19
Evaluation benchmark for benchmark with different batchsizes
# Batch size: 1000
## Query all packages
elapsed: 24.68 s, heap size: 2610.18 MiB
## Evaluating packages in batches
elapsed: 15.04 s, heap size: 1217.18 MiB
elapsed: 18.31 s, heap size: 1377.18 MiB
elapsed: 9.13 s, heap size: 673.18 MiB
elapsed: 11.24 s, heap size: 769.18 MiB
elapsed: 16.69 s, heap size: 1169.18 MiB
elapsed: 3.50 s, heap size: 384.31 MiB
#!/bin/sh
if ! command -v nix >/dev/null; then
echo "Installing Nix..."
if command -v curl; then
curl -L https://nixos.org/nix/install > /tmp/install
elif command -v wget; then
wget -O /tmp/install https://nixos.org/nix/install
else
echo "Please install curl or wget"
@Mic92
Mic92 / 0_description.md
Last active December 15, 2023 19:35
Tvix (79246855d1a0fd9b81be113b16a56379c7641aa1) vs nix (2.19.2) evaluation of the hello package

Tvix is a new implementation of the Nix language and package manager. In this benchmark we test it's performance when instantiating the hello package from nix. Note that at the time tvix does not have its own store implementation yet and it has to execute nix-store whenever it needs to copy files to the store.

#!/usr/bin/env nix-shell
#!nix-shell -i bash -p bash -p qemu_kvm -p iproute2
set -x -eu -o pipefail
VM_IMAGE=""
CPUS="${CPUS:-$(nproc)}"
MEMORY="${MEMORY:-4096}"
SSH_PORT="${SSH_PORT:-2222}"
IMAGE_SIZE="${IMAGE_SIZE:-10G}"
. 242.3 GiB [##########################] /harshanavkis
. 137.1 GiB [############## ] /paul
98.9 GiB [########## ] /julian
. 84.8 GiB [######### ] /dimitrios
. 61.5 GiB [###### ] /maurice
33.0 GiB [### ] /martin
12.1 GiB [# ] /masa
7.8 GiB [ ] /joerg
5.3 MiB [ ] /okelmann
#!/usr/bin/env bash
set -exuo pipefail
PROGRAM_NAME="$0"
inst() {
local system="" host="" action="install" from="auto" mount=""
local -a nixCopyArgs
while [[ "$#" -gt 0 ]] ; do
case "$1" in
@Mic92
Mic92 / default.nix
Created December 19, 2022 19:45
forgejo
{ lib
, buildGoPackage
, fetchurl
, makeWrapper
, git
, bash
, gzip
, openssh
, pam
, sqliteSupport ? true