Skip to content

Instantly share code, notes, and snippets.

View ento's full-sized avatar

ento

View GitHub Profile
@ento
ento / slack-cli.nix
Created December 14, 2023 21:34
Slack CLI for the next-generation Slack apps. The binary is statically linked, so it seems to work without autopatchelf
{ lib, stdenv, fetchurl, ... }:
let
version = "2.11.0";
platform = stdenv.hostPlatform;
archive =
if platform.isLinux then
{
url = "https://downloads.slack-edge.com/slack-cli/slack_cli_${version}_linux_64-bit.tar.gz";
sha256 = "1sk6hb1m6j327fp8zlnw8bd8sni1wfwgc95wxqaxmr5gcg1fxqks";
}
let
parseLine = line:
let
parts = builtins.match "([^[:space:]=#]+)[[:space:]]*=[[:space:]]*(.*)" line;
in
if (!builtins.isNull parts) && (builtins.length parts) == 2 then
{ name = builtins.elemAt parts 0; value = builtins.elemAt parts 1; }
else
null;
in
@ento
ento / chart.md
Created November 12, 2023 20:07
幻字
flowchart TD-->-->|-1| 示
    袱 --> 人
    袱 --> 犬
    猱 --> 犬
    猱 -->-->|-1| 予
    猱 --> 木
    猱 <--> 申
 犬 --&gt; 犬神
FROM python:3.9-slim AS base
RUN apt-get update && apt-get install -y curl git
RUN curl --proto '=https' --tlsv1.2 -fsSL https://static.pantsbuild.org/setup/get-pants.sh | bash
FROM base as env_a
RUN umask 022 \
&& git clone https://github.com/pantsbuild/example-python example_repo \
&& cd example_repo \
&& git checkout 3de75f5 \
&& PATH=$HOME/bin:$PATH pants package ::
@ento
ento / Dockerfile
Last active April 30, 2023 04:19
WIP: Dockerfile that might be able to build Nix dependencies first in a separate layer. Ref: https://mitchellh.com/writing/nix-with-dockerfiles#user-content-fnref-2
FROM nixos/nix:latest AS builder
RUN nix-env --install jq
COPY . /tmp/build
WORKDIR /tmp/build
RUN drvpath=$(nix --extra-experimental-features "nix-command flakes" derivation show | jq -r 'to_entries[0] | .key') \
&& echo $drvpath is the path \
&& closure=$(nix-store --query --requisites $drvpath | grep -v -F $drvpath) \
@ento
ento / include-exclude-precedence.md
Created October 1, 2017 21:56
include-exclude-precedence

Include/exclude precedence in lint-like tools

Ad hoc research for deciding how to implement file inclusion/exclusion logic in elm-doc.

Notes:

  • Listed up lint-like tools I know off the top of my head, and then supplemented by cherry-picking tools from awesome-static-analysis
  • "Included" here means explicitly included by being specified in the command line, not just in a config file.
  • I either tried out each tool to see how it actually behaves, or looked at existing issues or actual code.
  • Numbers
@ento
ento / drmcheck.py
Last active May 11, 2021 05:33 — forked from aallan/drmcheck.py
Python script to check encryption status of various types of ebook formats.
#!/usr/bin/python
#
# Changelog
# 1.00 - Initial version, with code from various other scripts.
# 1.01 - Moved authorship announcement to usage section.
# Written in 2011 by Paul Durrant
#
# 1.02 - Added recognition of Apple Fairplay encryption.
# Modified in 2015 by Alasdair Allan
#
/* This greasemonkey script automatically BCCs (or CCs) outgoing email from
* a gmail address to a specified email address
*
* Author: Jaidev K Sridhar mail<AT>jaidev<DOT>info
*
* Copyright (c) 2005-2008, Jaidev K Sridhar
* Released under the GPL license
* http://www.gnu.org/copyleft/gpl.html
*/
"""
Replace all NEEDEDs of all ELF files in /nix/store with absolute paths.
Requires python-magic.
"""
from __future__ import print_function
import os.path
import subprocess
from collections import namedtuple
import functools
@ento
ento / aws-show-monthly-cost.js
Created June 17, 2020 01:57
Add columns for monthly cost to AWS pricing tables
function findHourlyPriceColumns(table) {
for (const row of table.querySelectorAll("thead tr")) {
const headers = Array.from(row.querySelectorAll("th"));
const columns = headers.reduce(function(acc, current, index) {
if (/hourly/i.test(current.innerText) || /price per hour/i.test(current.innerText)) {
acc.push(index)
}
return acc;
}, []);
if (columns.length > 0) return {hourlyColumns: columns, totalColumns: headers.length};