Nix flake with a dev shell for everything

nix develop: Go, gopls, shellcheck, make, curl, jq, Python, Node.js,
oxipng and ImageMagick; on Linux also Ghostty, Xvfb, xdotool, DejaVu fonts
and Chromium for the README screenshots and the webOS app.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-25 18:16:05 +01:00
co-authored by Claude Opus 5.5
parent 7f6d4d07b9
commit 0dedcb3893
6 changed files with 96 additions and 3 deletions
+62
View File
@@ -0,0 +1,62 @@
{
description = "arr-tui: a terminal UI (and webOS TV app) for Radarr, Sonarr and SABnzbd";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
outputs = { self, nixpkgs }:
let
systems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
forAll = f: nixpkgs.lib.genAttrs systems (system: f nixpkgs.legacyPackages.${system});
in
{
# nix develop: everything make test, the release script, the README
# screenshots (dev/screenshots) and the webOS app (webos/) need.
# Containers for dev/up.sh (docker or podman) come from the system.
devShells = forAll (pkgs: {
default = pkgs.mkShell {
packages = with pkgs; [
# arr-tui
go
gopls
gnumake
shellcheck
git
# scripts/release.sh, dev/up.sh
curl
jq
# dev/screenshots (fake services), webos (app, tests, ares CLI)
python3
nodejs_24
# README pictures: oxipng compresses them
oxipng
imagemagick
] ++ lib.optionals stdenv.hostPlatform.isLinux [
# dev/screenshots/take.sh: Ghostty on a virtual X display
ghostty
xvfb-run
xorg-server
xdotool
fontconfig
dejavu_fonts
# webos/dev/drive.mjs
chromium
];
# posters.sh asks fontconfig for the DejaVu fonts: the system's
# fonts plus DejaVu.
FONTCONFIG_FILE = pkgs.lib.optionalString pkgs.stdenv.hostPlatform.isLinux (pkgs.writeText "fonts.conf" ''
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<include ignore_missing="yes">/etc/fonts/fonts.conf</include>
<dir>${pkgs.dejavu_fonts}/share/fonts</dir>
</fontconfig>
'');
shellHook = pkgs.lib.optionalString pkgs.stdenv.hostPlatform.isLinux ''
export CHROMIUM=${pkgs.chromium}/bin/chromium
'';
};
});
};
}