Skip to content

Instantly share code, notes, and snippets.

View p1xelHer0's full-sized avatar
🔺

Pontus p1xelHer0

🔺
  • Stockholm
  • 07:07 (UTC +02:00)
View GitHub Profile
{
description = "dungeoncrawler";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/master";
flake-utils.url = "github:numtide/flake-utils";
rust-overlay.url = "github:oxalica/rust-overlay";
};
outputs = { self, nixpkgs, rust-overlay, flake-utils, ... }:
@p1xelHer0
p1xelHer0 / FFI-2.md
Created January 3, 2024 11:58
Gerbil macOS ncurses FFI

macOS Ventura 13.6.2

Gerbil v0.18-62-gf7d8efcf on Gambit v4.9.5-78-g8b18ab69

λ echo $CC
gcc-13

Running brew info ncurses gives us the following part:

@p1xelHer0
p1xelHer0 / FFI.md
Created January 2, 2024 07:26
Gerbil ncurses FFI macOS

So, I am a little bit (very) new to C, "systems programming" and the tools surrounding C. I thought it would be fun to try to make a little ncurses thing with Gerbil!

I've installed gcc version 12.3.0 (with Nix if that matters) and ncurses6 with Homebrew. This would be instead of using clang provided by macOS by default? I think I read in the docs that gcc is preferred. Is this still the case on macOS?

I've compiled a C-program using ncurses with gcc and got it to run using the following:

gcc `ncurses6-config --cflags --libs` test.c -o test.out

@p1xelHer0
p1xelHer0 / aoc.4.1.ml
Created December 5, 2023 07:41
aoc.4.1.ml
module Card = struct
type t = { id : int; wins : int list; mine : int list }
[@@deriving show { with_path = false }, eq]
end
module P = struct
open Angstrom
let is_digit = function '0' .. '9' -> true | _ -> false
let int = take_while1 is_digit >>| Int.of_string_exn
@p1xelHer0
p1xelHer0 / dijkstra.ml
Created November 12, 2023 20:01
aoc_2021_15
module Coordinate = struct
type t = { x : int; y : int; value : int }
let make ~x ~y value = { x; y; value }
let compare t1 t2 =
match compare t1.x t2.x with 0 -> compare t1.y t2.y | _ as x -> x
end
module PQ = Psq.Make (Coordinate) (Int)
@p1xelHer0
p1xelHer0 / advent_of_ocaml.ml
Created November 7, 2023 16:19
Advent of OCaml
open ContainersLabels
let read_file name = CCIO.(with_in name read_lines_l)
let rec try_parse parsers line =
match parsers with
| [] -> failwith ("could not parse: " ^ line)
| parse :: parsers -> (
match parse line with
| None -> try_parse parsers line
.
├── core
│   ├── autocmd.lua
│   ├── config.lua
│   ├── init.lua
│   ├── lazy.lua
│   └── options.lua
├── init.lua
├── internal
│   └── lsp.lua
let example a = match a with 1 | 2 | 3 -> Ok a | _ -> Error "ohno"
let test =
(* this only works cuz of >>=, |> woudln't work here:
we would end up with a
`a result result result result`
instead of a
`a result`*)
1 |> example >>= example >>= example >>= example
do shell script "open x-apple.systempreferences:com.apple.preference.displays"
tell application "System Events"
tell application process "System Settings"
repeat until (exists UI element 1 of group 1 of scroll area 2 of group 1 of group 2 of splitter group 1 of group 1 of window 1)
delay 0.1
end repeat
tell window 1 #"Displays"
set displayOptions to UI element 1 of group 1 of scroll area 2 of group 1 of group 2 of splitter group 1 of group 1
set StandardRes to button 4 of displayOptions
set MoreSpaceRes to button 5 of displayOptions
@p1xelHer0
p1xelHer0 / rust-lsp
Created April 29, 2021 12:54
rust-lsp.lua
local nvim_lsp = require("lspconfig")
local function on_attach(client, bufnr)
require("completion").on_attach(client)
local function buf_set_keymap(...)
vim.api.nvim_buf_set_keymap(bufnr, ...)
end
local function buf_set_option(...)