Skip to content

Instantly share code, notes, and snippets.

View jackpot51's full-sized avatar

Jeremy Soller jackpot51

View GitHub Profile
@jackpot51
jackpot51 / flatpak_flathub_evaluation.md
Created March 19, 2020 21:16
Flatpak/Flathub Evaluation

Flatpak/Flathub Evaluation

Note that I will use flatpak to refer to the format, and flathub to refer to the flathub repository and packaging done by the flathub organization.

General

Command Line Use

There is basically no supported command line use for flatpak applications.

@jackpot51
jackpot51 / oled_brightness.patch
Created July 22, 2019 19:58
gnome-settings-daemon patch for OLED brightness
Index: gnome-settings-daemon-3.28.1/plugins/color/gsd-color-state.c
===================================================================
--- gnome-settings-daemon-3.28.1.orig/plugins/color/gsd-color-state.c
+++ gnome-settings-daemon-3.28.1/plugins/color/gsd-color-state.c
@@ -20,6 +20,7 @@
#include "config.h"
+#include <ctype.h>
#include <glib/gi18n.h>
Index: gdm3-3.30.1/daemon/gdm-session-worker.c
===================================================================
--- gdm3-3.30.1.orig/daemon/gdm-session-worker.c
+++ gdm3-3.30.1/daemon/gdm-session-worker.c
@@ -884,7 +884,11 @@ on_release_display (int signal)
int fd;
fd = open ("/dev/tty0", O_RDWR | O_NOCTTY);
- ioctl(fd, VT_RELDISP, 1);
+ while (ioctl(fd, VT_RELDISP, 1) < 0) {
# Patch to use gdm3.css stylesheet
Index: gnome-initial-setup-3.28.0/data/initial-setup.json
===================================================================
--- gnome-initial-setup-3.28.0.orig/data/initial-setup.json
+++ gnome-initial-setup-3.28.0/data/initial-setup.json
@@ -4,5 +4,6 @@
"panel": { "left": [],
"center": [],
"right": ["a11yGreeter", "keyboard", "aggregateMenu"]
- }
Building stage0 codegen artifacts (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu, llvm)
running: "/home/jeremy/Projects/redox/cookbook/recipes/rust/build/build/x86_64-unknown-linux-gnu/stage0/bin/cargo" "build" "--target" "x86_64-unknown-linux-gnu" "-j" "12" "--release" "--manifest-path" "/home/jeremy/Projects/redox/cookbook/recipes/rust/build/src/librustc_trans/Cargo.toml" "--features" "" "--message-format" "json"
Compiling cfg-if v0.1.2
Compiling libc v0.2.36
Compiling rustc_trans v0.0.0 (file:///home/jeremy/Projects/redox/cookbook/recipes/rust/build/src/librustc_trans)
Compiling num_cpus v1.8.0
Compiling cmake v0.1.29
Compiling tempdir v0.3.5
Compiling filetime v0.1.15
Compiling build_helper v0.1.0 (file:///home/jeremy/Projects/redox/cookbook/recipes/rust/build/src/build_helper)
#!/usr/bin/env bash
set -e
if [ -z "$1" ]
then
echo "$0 [git repository]"
exit 1
fi

Ideal OS: Rebooting the Desktop Operating System Experience

https://joshondesign.com/2017/08/18/idealos_essay

TL;DR: I disagree with most of this article, except the part where we should start over from scratch, learning the lessons of the past. To do this correctly would be to redesign a system as a microkernel, in a safe, modern language such as Rust.

"Modern" Desktop Operating Systems are Bloated

@jackpot51
jackpot51 / firmware_update_method.md
Created July 26, 2017 21:46
Firmware Update Method

Overview

We have put a good amount of effort into designing the most secure firmware delivery system possible. This has involved looking into how updates are handled by other vendors, or often mishandled: https://duo.com/assets/pdf/out-of-box-exploitation_oem-updaters.pdf. In this document, we hope to explain our method of firmware updates to build confidence in System76's ability to securely and reliably update customer machines.

You can review the public site layout that is described in this document here: http://firmware.system76.com/develop/

Source control

  • We have a private firmware repository where we store the firmware sources, when we can, and blobs when we cannot get source
  • This repository contains a changelog per model that is verified automatically such that changes must be documented in a user-friendly form
  • This repository is built and signed automatically
#!/usr/bin/env python3
import os;
import subprocess;
import sys;
if os.getuid() != 0:
sys.exit('Error: must be run as root')
if len(sys.argv) < 2:
#!/bin/bash -e
# Run a command as the foreground user, with their DISPLAY
if [ "$EUID" -ne "0" ]
then
echo "not running as root"
exit 1
fi