Compare commits

..

15 Commits

Author SHA1 Message Date
a7d3111d3e
nixos/workflows/a-happy-gnome: add Valent to applications list
Some checks failed
Check flake outputs / check-outputs (push) Has been cancelled
Publish every Git push to master to FlakeHub / flakehub-publish (push) Has been cancelled
Build personalized bootstrap ISO / build-iso (x86_64-linux) (push) Has been cancelled
Build project site / build (push) Has been cancelled
Build devcontainers / build-devcontainers (push) Has been cancelled
Cache outputs / build-custom-packages (push) Has been cancelled
Build project site / deploy (push) Has been cancelled
Update flake inputs / update (push) Has been cancelled
Update Firefox addons / update-firefox-addons (push) Has been cancelled
2025-04-03 11:51:07 +08:00
8de6cbe359
users/foo-dogsquared: add Nix garbage collection 2025-04-03 11:49:34 +08:00
0c7fb4aa90
users/foo-dogsquared/setups/research: add Software Heritage tools 2025-04-03 11:49:34 +08:00
c5835bc8a0
users/foo-dogsquared/setups/development: add more applications 2025-04-03 11:49:34 +08:00
3ae1781736
pkgs/distant: remove
Available from upstream nixpkgs unstable branch and it's only used
outside of this project anyways.
2025-04-03 11:49:34 +08:00
6f659999d1
pkgs/tic-80-unstable: init at unstable-2025-03-27
Also updated it since there's another package of the same name with the
latest stable release.
2025-04-03 11:49:34 +08:00
58c393dc1a
nixos/programs/gnome-session: update module 2025-04-03 11:49:34 +08:00
ba9e3c3066
lib: init formats subset 2025-04-03 11:49:34 +08:00
ffafbe1b94
nixos/workflows/a-happy-gnome: update desktop settings 2025-04-03 11:49:34 +08:00
d8bec326cc
pkgs/swh/swh-fuse: 1.0.6 -> 1.1.0 2025-04-03 11:49:34 +08:00
de335fe21c
pkgs/swh/swh-web-client: 0.6.0 -> 0.9.0 2025-04-03 11:49:34 +08:00
e27308dea9
pkgs/swh/swh-model: 6.7.0 -> 7.1.0 2025-04-03 11:49:34 +08:00
9c76f03186
pkgs/swh/swh-auth: 0.7.2 -> 0.10.0 2025-04-03 11:49:34 +08:00
3e8c0852e1
pkgs/swh/swh-core: 2.24.0 -> 4.0.0 2025-04-03 11:49:34 +08:00
72e09c0345
ci: remove magic-nix-cache action 2025-04-03 11:49:25 +08:00
20 changed files with 135 additions and 91 deletions

View File

@ -10,10 +10,6 @@ jobs:
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: DeterminateSystems/nix-installer-action@v16 - uses: DeterminateSystems/nix-installer-action@v16
- uses: DeterminateSystems/magic-nix-cache-action@v9
with:
extra-conf: |
keep-going = true
- name: Build - name: Build
run: | run: |
nix build -f ./devcontainers --print-out-paths --no-link > build_paths nix build -f ./devcontainers --print-out-paths --no-link > build_paths

View File

@ -10,10 +10,6 @@ jobs:
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: DeterminateSystems/nix-installer-action@v16 - uses: DeterminateSystems/nix-installer-action@v16
- uses: DeterminateSystems/magic-nix-cache-action@v9
with:
extra-conf: |
keep-going = true
- name: Prepare push to binary cache - name: Prepare push to binary cache
uses: cachix/cachix-action@v15 uses: cachix/cachix-action@v15
if: ${{ github.ref == 'refs/heads/master' }} if: ${{ github.ref == 'refs/heads/master' }}

View File

@ -15,7 +15,6 @@ jobs:
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: DeterminateSystems/nix-installer-action@v16 - uses: DeterminateSystems/nix-installer-action@v16
- uses: DeterminateSystems/magic-nix-cache-action@v9
- name: Build ISO - name: Build ISO
run: | run: |
nix build .#images.${{ matrix.arch }}.bootstrap-install-iso --out-link build-iso-result nix build .#images.${{ matrix.arch }}.bootstrap-install-iso --out-link build-iso-result

View File

@ -10,7 +10,6 @@ jobs:
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: DeterminateSystems/nix-installer-action@v16 - uses: DeterminateSystems/nix-installer-action@v16
- uses: DeterminateSystems/magic-nix-cache-action@v9
- env: - env:
NIXPKGS_ALLOW_UNFREE: "1" NIXPKGS_ALLOW_UNFREE: "1"
run: nix build .#devPackages.x86_64-linux.website run: nix build .#devPackages.x86_64-linux.website

View File

@ -101,6 +101,13 @@ in {
}; };
}; };
# GARBAGE DAY!
nix.gc = {
automatic = true;
frequency = "weekly";
randomizedDelaySec = "5m";
};
# Set the profile picture. Most of the desktop environments should support # Set the profile picture. Most of the desktop environments should support
# this. # this.
home.file.".face".source = ./files/logo.png; home.file.".face".source = ./files/logo.png;

View File

@ -142,14 +142,18 @@ in {
home.packages = with pkgs; home.packages = with pkgs;
[ [
d-spy # Some GNOME dev probably developed this. d-spy # Some GNOME dev probably developed this.
bustle # Hustle and...
]; ];
}) })
(lib.mkIf cfg.creative-coding.enable { (lib.mkIf cfg.creative-coding.enable {
home.packages = with pkgs; [ home.packages = with pkgs; [
decker
uxn
supercollider-with-plugins supercollider-with-plugins
processing processing
(puredata-with-plugins (with pkgs; [ zexy ])) (puredata-with-plugins (with pkgs; [ zexy ]))
tic-80-unstable
]; ];
}) })
]); ]);

View File

@ -90,6 +90,13 @@ in {
}"; }";
text = "Local sync server"; text = "Local sync server";
}; };
programs.python.modules = ps: with pkgs.swh; [
swh-core
swh-fuse
swh-model
swh-web-client
];
} }
(lib.mkIf userCfg.programs.shell.enable { (lib.mkIf userCfg.programs.shell.enable {

View File

@ -15,6 +15,10 @@ in pkgs.lib.makeExtensible (self:
math = callLib ./math.nix; math = callLib ./math.nix;
xdg = callLib ./xdg.nix; xdg = callLib ./xdg.nix;
# Just like from its inspiration, this contains Nix-representable data
# formats and won't have any attributes exported at the top-level.
formats = callLib ./formats.nix;
# For future references, these are the only attributes that are going to be # For future references, these are the only attributes that are going to be
# exported as part of nixpkgs overlay. # exported as part of nixpkgs overlay.
fetchers = callLib ./fetchers; fetchers = callLib ./fetchers;

21
lib/formats.nix Normal file
View File

@ -0,0 +1,21 @@
{ lib, pkgs, self }:
{
# The gnome-session config files uses one from GLib. See the following link
# at <https://docs.gtk.org/glib/struct.KeyFile.html> for details about the
# keyfile formatting and possibly the Desktop Entry specification at
# <https://freedesktop.org/wiki/Specifications/desktop-entry-spec>.
glibKeyfile = {}: {
type = with lib.types;
let
valueType = oneOf [ bool float int str (listOf valueType) ] // {
description =
"GLib keyfile atom (bool, int, float, string, or a list of the previous atoms)";
};
in attrsOf (attrsOf valueType);
generate = name: value:
pkgs.callPackage
({ lib, writeText }: writeText name (lib.generators.toDconfINI value));
};
}

View File

@ -20,6 +20,9 @@ clock-format = '24h'
[org/gnome/desktop/privacy] [org/gnome/desktop/privacy]
disable-microphone = false disable-microphone = false
max-age = 30
remove-old-temp-files = true
remove-old-trash-files = true
[org/gnome/shell] [org/gnome/shell]
disable-user-extensions = false disable-user-extensions = false

View File

@ -36,6 +36,7 @@ in {
paperwm paperwm
runcat runcat
windownavigator windownavigator
valent
]; ];
example = lib.literalExpression '' example = lib.literalExpression ''
with pkgs.gnomeExtensions; [ with pkgs.gnomeExtensions; [
@ -72,11 +73,12 @@ in {
shortwave # Yer' humble internet radio. shortwave # Yer' humble internet radio.
tangram # Your social media manager, probably. tangram # Your social media manager, probably.
ymuse # Simple MPD client. ymuse # Simple MPD client.
valent # ...ines 'tis season to share... phone data or something.
gnome-backgrounds # Default backgrounds. gnome-backgrounds # Default backgrounds.
gnome-menus # It is required for custom menus in extensions. gnome-menus # It is required for custom menus in extensions.
#gnome-extension-manager # The cooler GNOME extensions app. gnome-extension-manager # The cooler GNOME extensions app.
gnome-search-provider-recoll # This is here for some reason. gnome-search-provider-recoll # This is here for some reason.
# Nautilus extensions # Nautilus extensions

View File

@ -23,7 +23,7 @@ let
generate = name: value: generate = name: value:
pkgs.callPackage pkgs.callPackage
({ writeText }: writeText name (lib.generators.toDconfINI value)); ({ writeText, lib }: writeText name (lib.generators.toDconfINI value)) { };
}; };
# The bulk of the work. Pretty much the main purpose of this module. # The bulk of the work. Pretty much the main purpose of this module.
@ -111,8 +111,8 @@ in {
options.programs.gnome-session = { options.programs.gnome-session = {
package = lib.mkOption { package = lib.mkOption {
type = lib.types.package; type = lib.types.package;
default = pkgs.gnome.gnome-session; default = pkgs.gnome-session;
defaultText = "pkgs.gnome.gnome-session"; defaultText = "pkgs.gnome-session";
description = '' description = ''
The package containing gnome-session binary and systemd units. This The package containing gnome-session binary and systemd units. This
module will use the `gnome-session` executable for the generated module will use the `gnome-session` executable for the generated

View File

@ -20,7 +20,6 @@ in lib.makeScope pkgs.newScope (self: {
fastn = callPackage ./fastn { }; fastn = callPackage ./fastn { };
flatsync = callPackage ./flatsync { }; flatsync = callPackage ./flatsync { };
freerct = callPackage ./freerct.nix { }; freerct = callPackage ./freerct.nix { };
distant = callPackage ./distant.nix { };
gnome-search-provider-recoll = gnome-search-provider-recoll =
callPackage ./gnome-search-provider-recoll.nix { }; callPackage ./gnome-search-provider-recoll.nix { };
#graphite-design-tool = callPackage ./graphite-design-tool { }; #graphite-design-tool = callPackage ./graphite-design-tool { };
@ -50,7 +49,7 @@ in lib.makeScope pkgs.newScope (self: {
#purrdata = callPackage ./purr-data { }; #purrdata = callPackage ./purr-data { };
speki = callPackage ./speki { }; speki = callPackage ./speki { };
sqlc-gen-from-template = callPackage ./sqlc-gen-from-template { }; sqlc-gen-from-template = callPackage ./sqlc-gen-from-template { };
tic-80 = callPackage ./tic-80 { }; tic-80-unstable = callPackage ./tic-80 { };
smile = callPackage ./smile { }; smile = callPackage ./smile { };
sessiond = callPackage ./sessiond { }; sessiond = callPackage ./sessiond { };
uwsm = callPackage ./uwsm { }; uwsm = callPackage ./uwsm { };

View File

@ -1,30 +0,0 @@
{ stdenv, lib, rustPlatform, fetchFromGitHub, pkg-config, openssl }:
rustPlatform.buildRustPackage rec {
version = "0.20.0";
pname = "distant";
src = fetchFromGitHub {
owner = "chipsenkbeil";
repo = "distant";
rev = "v${version}";
hash = "sha256-DcnleJUAeYg3GSLZljC3gO9ihiFz04dzT/ddMnypr48=";
};
cargoHash = "sha256-7MNNdm4b9u5YNX04nBtKcrw+phUlpzIXo0tJVfcgb40=";
# Too many tests failing for now so we'll have to disable them. Much of the
# failed tests require a home directory and network access.
doCheck = false;
# We'll just tell to use the system's openssl to build openssl-sys.
env.OPENSSL_NO_VENDOR = 1;
nativeBuildInputs = [ pkg-config ];
buildInputs = [ openssl ];
meta = with lib; {
description = "Remotely edit files and run programs";
homepage = "https://github.com/chipsenkbeil/distant";
license = lib.licenses.mit;
maintainers = with maintainers; [ foo-dogsquared ];
};
}

View File

@ -4,33 +4,32 @@ with python3Packages;
buildPythonPackage rec { buildPythonPackage rec {
pname = "swh-auth"; pname = "swh-auth";
version = "0.7.2"; version = "0.10.0";
pyproject = true;
src = fetchPypi { src = fetchPypi {
inherit version; inherit version;
pname = "swh.auth"; pname = "swh_auth";
sha256 = "sha256-f0++AuyJggoc19kPA/7UChbFjF/EoR+FztF00r5csLo="; hash = "sha256-J/5oFm0QSPNeEDKIYHEzSXWA/6uSOj9eu3LXYUTZjC0=";
}; };
# Tests require network access. # Tests require network access.
doCheck = false; doCheck = false;
propagatedBuildInputs = [ propagatedBuildInputs = [
django
djangorestframework
sentry-sdk
click click
pyyaml pyyaml
(python-keycloak.overrideAttrs (final: prev: rec { python-keycloak
version = "3.3.0";
src = pkgs.fetchPypi { # Requirements for Django
inherit version; django
pname = "python_keycloak"; djangorestframework
hash = "sha256-zIaBJvU1qk8yDcnqsk5GrzgcE7zIjZsHAbBCk+p1zSQ="; sentry-sdk_2
};
propagatedBuildInputs = prev.propagatedBuildInputs # Requirements for Starlette
++ [ setuptools deprecation ]; starlette
})) httpx
aiocache
swh-core swh-core
]; ];

View File

@ -3,12 +3,13 @@
with python3Packages; with python3Packages;
buildPythonPackage rec { buildPythonPackage rec {
pname = "swh-core"; pname = "swh-core";
version = "2.24.0"; version = "4.0.0";
pyproject = true;
src = fetchPypi { src = fetchPypi {
inherit version; inherit version;
pname = "swh.core"; pname = "swh_core";
sha256 = "sha256-62xFSPxW/XvK5v1i4RA7Iwrr4V5nfxrs+PGHHC56trQ="; hash = "sha256-da0Kx/pyHybW8oSIyH0/UqivGkSsvnQe7OoVY2p0glA=";
}; };
# Tests require network access. # Tests require network access.
@ -19,7 +20,7 @@ buildPythonPackage rec {
deprecated deprecated
pyyaml pyyaml
python-magic python-magic
sentry-sdk sentry-sdk_2
# swh.core.db # swh.core.db
psycopg2 psycopg2
@ -36,6 +37,7 @@ buildPythonPackage rec {
flask flask
iso8601 iso8601
msgpack msgpack
backports-entry-points-selectable
setuptools-scm setuptools-scm
]; ];

View File

@ -3,12 +3,13 @@
with python3Packages; with python3Packages;
buildPythonPackage rec { buildPythonPackage rec {
pname = "swh-fuse"; pname = "swh-fuse";
version = "1.0.6"; version = "1.1.0";
pyproject = true;
src = fetchPypi { src = fetchPypi {
inherit version; inherit version;
pname = "swh.fuse"; pname = "swh.fuse";
sha256 = "sha256-b1k4XJxaSGrdqQnKnu6EAaZoEVkdZqjt0vd6k+q+H3k="; hash = "sha256-pkTZiUm+Sun+7gBNWXJUHUXTmEIz5tjvfGcU4cUL9Xg=";
}; };
doCheck = false; doCheck = false;

View File

@ -3,18 +3,17 @@
with python3Packages; with python3Packages;
buildPythonPackage rec { buildPythonPackage rec {
pname = "swh-model"; pname = "swh-model";
version = "6.7.0"; version = "7.1.0";
pyproject = true;
src = fetchPypi { src = fetchPypi {
inherit version; inherit version;
pname = "swh.model"; pname = "swh_model";
sha256 = "sha256-88xlN/vGXMG858+0A1Wb4EIYC9btRTopY7Ryvw/huDo="; hash = "sha256-MdyhpKm4UzIFVMhIlAT75OMUmfDcOFZzk/dJIZASwmE=";
}; };
doCheck = false; doCheck = false;
propagatedBuildInputs = [ propagatedBuildInputs = [
click
dulwich
deprecated deprecated
typing-extensions typing-extensions
hypothesis hypothesis
@ -22,8 +21,14 @@ buildPythonPackage rec {
python-dateutil python-dateutil
attrs attrs
attrs-strict attrs-strict
aiohttp
pytz
swh-core swh-core
# requirements for CLI
click
dulwich
]; ];
meta = with lib; { meta = with lib; {

View File

@ -3,12 +3,13 @@
with python3Packages; with python3Packages;
buildPythonPackage rec { buildPythonPackage rec {
pname = "swh-web-client"; pname = "swh-web-client";
version = "0.6.0"; version = "0.9.0";
pyproject = true;
src = fetchPypi { src = fetchPypi {
inherit version; inherit version;
pname = "swh.web.client"; pname = "swh_web_client";
sha256 = "sha256-o1FcJh3nmGXWZABRQQUj3qgDPaHXwfazaBv8f3LENpk="; hash = "sha256-nBFbWJ7qLGtnxy2iryWfsi4n4XuxVddqBdtzPFtUQ5w=";
}; };
doCheck = false; doCheck = false;

View File

@ -1,63 +1,92 @@
# Build the TIC-80 virtual computer console with the PRO version. The # Build the TIC-80 virtual computer console with the PRO version. The
# developers are kind enough to make it easy to compile it if you know # developers are kind enough to make it easy to compile it if you know
# how. # how.
{ stdenv, lib, SDL2, SDL2_sound, alsa-lib, cmake, fetchFromGitHub, freeglut, git { stdenv, lib, giflib, SDL2, SDL2_sound, sdl2-compat, alsa-lib, argparse, curl
, gtk3, dbus, libGLU, libX11, libglvnd, libsamplerate, mesa, pkg-config, sndio , cmake, fetchFromGitHub, freeglut, git, gtk3, dbus, libGLU, libX11, libglvnd
, zlib , libsamplerate, mesa, pkg-config, sndio, zlib, lua54Packages
, pulseaudioSupport ? stdenv.isLinux, libpulseaudio , pulseaudioSupport ? stdenv.isLinux, libpulseaudio
, waylandSupport ? true, wayland, libxkbcommon, libdecor , jsSupport ? true, quickjs
, waylandSupport ? true, wayland, wayland-scanner, libxkbcommon, libdecor
, esoundSupport ? true, espeak , esoundSupport ? true, espeak
, jackSupport ? true, jack2 , jackSupport ? true, jack2
# Ruby support requires compiling mruby so we'll skip it for now. # As of 2025-03-26, it is basically required to have a very specific version of
, rubySupport ? false, ruby, rake # mruby so no...
, rubySupport ? false, mruby
, pythonSupport ? true, python3 , pythonSupport ? true
, janetSupport ? true, janet
# This doesn't have the appropriate system library as of nixpkgs 2025-03-26, btw.
, wasmSupport ? true, wasm
, withPro ? true }: , withPro ? true }:
# TODO: Fix the timestamp in the help section. # TODO: Fix the timestamp in the help section.
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "tic-80"; pname = "tic-80";
version = "unstable-2023-07-18"; version = "unstable-2025-03-27";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "nesbox"; owner = "nesbox";
repo = "TIC-80"; repo = "TIC-80";
rev = "68b94ee596e1ac218b8b9685fd0485c7ee8d2f18"; rev = "5aa6c536607a5512ce1913acf3be7be8784fd8db";
hash = "sha256-S3LYuRRFMZYl6dENrV21bowzo7smm+zSHXt77/83oL0="; hash = "sha256-oPubH/dPGDK/ZPY6NjycytAYY4PD2H9MbJg7jGBz3aI=";
fetchSubmodules = true; fetchSubmodules = true;
}; };
nativeBuildInputs = [ cmake pkg-config ]; nativeBuildInputs = [ cmake pkg-config ];
buildInputs = [ buildInputs = [
argparse
alsa-lib alsa-lib
curl
freeglut freeglut
gtk3 gtk3
giflib
libsamplerate libsamplerate
libGLU libGLU
libglvnd libglvnd
lua54Packages.lua
mesa mesa
git git
sdl2-compat
SDL2 SDL2
SDL2_sound SDL2_sound
zlib zlib
sndio sndio
] ++ lib.optional pulseaudioSupport libpulseaudio ] ++ lib.optionals pulseaudioSupport [ libpulseaudio ]
++ lib.optional jackSupport jack2 ++ lib.optional esoundSupport espeak ++ lib.optionals jackSupport [ jack2 ]
++ lib.optionals rubySupport [ ruby rake ] ++ lib.optionals jsSupport [ quickjs ]
++ lib.optional pythonSupport python3 ++ lib.optionals esoundSupport [ espeak ]
++ lib.optionals rubySupport [ mruby ]
++ lib.optionals janetSupport [ janet ]
++ lib.optionals wasmSupport [ wasm ]
++ lib.optionals (stdenv.isLinux && waylandSupport) [ ++ lib.optionals (stdenv.isLinux && waylandSupport) [
wayland wayland
wayland-scanner
libxkbcommon libxkbcommon
libdecor libdecor
]; ];
cmakeFlags = lib.optional withPro "-DBUILD_PRO=ON"; cmakeFlags =
# Just leave the tinier libraries alone for this.
[
"-DPREFER_SYSTEM_LIBRARIES=ON"
"-DBUILD_WITH_FENNEL=ON"
"-DBUILD_WITH_MOON=ON"
"-DBUILD_WITH_SCHEME=ON"
] ++ lib.optionals withPro [ "-DBUILD_PRO=ON" ]
++ lib.optionals jsSupport [ "-DBUILD_WITH_JS=ON" ]
++ lib.optionals rubySupport [ "-DBUILD_WITH_RUBY=ON" ]
++ lib.optionals pythonSupport [ "-DBUILD_WITH_PYTHON=ON" ]
++ lib.optionals wasmSupport [ "-DBUILD_WITH_WASM=ON" ]
++ lib.optionals janetSupport [ "-DBUILD_WITH_JANET=ON" ];
# Export all of the TIC-80-related utilities. # Export all of the TIC-80-related utilities.
outputs = [ "out" "dev" ]; outputs = [ "out" "dev" ];