6 Commits

Author SHA1 Message Date
Tom Alexander
78c54171b3 Update instawow. 2026-10-10 12:09:46 -04:00
Tom Alexander
1a05ffd770 Update aiohttp-client-cache.
The current version in nixpkgs has not been updated for aiohttp 3.14.

Error: TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'
2026-10-10 11:16:16 -04:00
Tom Alexander
349dad753c Add install of instawow. 2026-10-10 11:16:16 -04:00
Tom Alexander
1597d0e3d6 Cut down hydra to only build odo.
I am going to rebuild the binary cache, so I want to isolate a single build to make testing easier.
2026-10-09 13:33:55 -04:00
Tom Alexander
a722e05669 Merge branch 'moonlight' into nix 2026-10-09 10:46:58 -04:00
Tom Alexander
db58de0e20 Add configs for installing sunshine (server) and moonlight (client). 2026-10-09 10:46:25 -04:00
7 changed files with 233 additions and 26 deletions

View File

@@ -51,6 +51,7 @@ in
./roles/graphviz
./roles/hydra
./roles/image_based_appliance
./roles/instawow
./roles/iso
./roles/iso_mount
./roles/jujutsu
@@ -65,6 +66,7 @@ in
./roles/memtest86
./roles/minimal_base
./roles/mitmproxy
./roles/moonlight
./roles/network
./roles/nix_index
./roles/nix_repl
@@ -95,6 +97,7 @@ in
./roles/sshd
./roles/steam
./roles/steam_run_free
./roles/sunshine
./roles/sway
./roles/tekton
./roles/terraform
@@ -279,6 +282,53 @@ in
(disableOptimizationsPython3 "zopfli") # /nix/store/idjhlmljrapzm3i1svl5x9mdwfxxj51v-pytest-check-hook/nix-support/setup-hook: line 23: 280 Segmentation fault (core dumped) /nix/store/87l6i0czch42nzv39ydwld5hnhcq0b65-python3-3.14.7/bin/python3.14 "${flagsArray[@]}"
(disableOptimizations "zopfli")
(disableOptimizations "nototools") # Needs to use the same version of python as the zopfli package
(final: prev: {
instawow = prev.instawow.overrideAttrs (
finalAttrs: prevAttrs:
let
version = "7.2.1";
in
{
inherit version;
src = final.fetchFromGitHub {
owner = "layday";
repo = "instawow";
tag = "v${finalAttrs.version}";
hash = "sha256-5y+oJfzWwaUc3p4fzsQ4j8a6YJEsI+3Qy3gK6VPkjA4=";
};
propagatedBuildInputs = prevAttrs.propagatedBuildInputs ++ [ final.python3.pkgs.versioningit ];
postPatch = ''
# Upstream uses versioningit to set the version
sed -i '/^name =.*/a version = "${version}"' pyproject.toml
sed -i "/dynamic =/,+2d" pyproject.toml
'';
}
);
})
(final: prev: {
pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [
(python-final: python-prev: {
aiohttp-client-cache = python-prev.aiohttp-client-cache.overridePythonAttrs (
oldAttrs:
let
version = "0.15.0";
in
{
inherit version;
src = final.fetchPypi {
pname = "aiohttp_client_cache";
inherit version;
hash = "sha256-Jk+n1pvNsuT+mZTn9Bq17sfLuipfXiYNRE0AL5Ym43Q=";
};
}
);
})
];
})
];
# This option defines the first version of NixOS you have installed on this particular machine,

View File

@@ -107,6 +107,7 @@
me.graphical = true;
me.graphics_card_type = "amd";
me.graphviz.enable = true;
me.instawow.enable = true;
me.iso_mount.enable = true;
me.jujutsu.config = ../../roles/jujutsu/files/jujutsu_config_home.toml;
me.jujutsu.enable = true;
@@ -119,6 +120,7 @@
me.media.enable = true;
me.memtest.enable = true;
me.mitmproxy.enable = true;
me.moonlight.enable = true;
me.network.enable = true;
me.nix_index.enable = true;
me.nix_repl.enable = true;

View File

@@ -100,6 +100,7 @@
me.graphical = true;
me.graphics_card_type = "amd";
me.graphviz.enable = true;
me.instawow.enable = true;
me.iso_mount.enable = true;
me.jujutsu.config = ../../roles/jujutsu/files/jujutsu_config_home.toml;
me.jujutsu.enable = true;
@@ -137,6 +138,7 @@
me.sshd.enable = true;
me.steam.enable = true;
me.steam_run_free.enable = true;
me.sunshine.enable = true;
me.sway.enable = true;
me.tekton.enable = true;
me.terraform.enable = true;

View File

@@ -65,33 +65,33 @@
systemd.services."build-cache" =
let
enabled_targets = [
"wip"
# "wip"
"odo"
"odo_update"
"odowork"
"odowork_update"
"quark"
"quark_update"
"hydra"
"hydra_update"
"controller0"
"controller0_update"
"controller1"
"controller1_update"
"controller2"
"controller2_update"
"worker0"
"worker0_update"
"worker1"
"worker1_update"
"worker2"
"worker2_update"
"family_disks"
"family_disks_update"
"nixbsd"
"nix_builder_develop"
"organic_develop"
"natter_develop"
# "odo_update"
# "odowork"
# "odowork_update"
# "quark"
# "quark_update"
# "hydra"
# "hydra_update"
# "controller0"
# "controller0_update"
# "controller1"
# "controller1_update"
# "controller2"
# "controller2_update"
# "worker0"
# "worker0_update"
# "worker1"
# "worker1_update"
# "worker2"
# "worker2_update"
# "family_disks"
# "family_disks_update"
# "nixbsd"
# "nix_builder_develop"
# "organic_develop"
# "natter_develop"
];
build_flags = lib.concatMap (target: [
"--target"

View File

@@ -0,0 +1,53 @@
{
config,
lib,
pkgs,
...
}:
{
imports = [ ];
options.me = {
instawow.enable = lib.mkOption {
type = lib.types.bool;
default = false;
example = true;
description = "Whether we want to install instawow.";
};
};
config = lib.mkIf config.me.instawow.enable {
environment.systemPackages = with pkgs; [
instawow
];
environment.persistence."/persist" = lib.mkIf (config.me.mountPersistence) {
hideMounts = true;
users.talexander = {
directories = [
{
directory = ".config/instawow";
user = "talexander";
group = "talexander";
mode = "0755";
}
];
};
};
environment.persistence."/state" = lib.mkIf (config.me.mountPersistence) {
hideMounts = true;
users.talexander = {
directories = [
{
directory = ".cache/instawow";
user = "talexander";
group = "talexander";
mode = "0755";
}
];
};
};
};
}

View File

@@ -0,0 +1,53 @@
{
config,
lib,
pkgs,
...
}:
{
imports = [ ];
options.me = {
moonlight.enable = lib.mkOption {
type = lib.types.bool;
default = false;
example = true;
description = "Whether we want to install moonlight.";
};
};
config = lib.mkIf (config.me.moonlight.enable && config.me.graphical) {
environment.systemPackages = with pkgs; [
moonlight-qt
];
environment.persistence."/persist" = lib.mkIf (config.me.mountPersistence) {
hideMounts = true;
users.talexander = {
directories = [
{
directory = ".config/Moonlight Game Streaming Project";
user = "talexander";
group = "talexander";
mode = "0755";
}
];
};
};
environment.persistence."/state" = lib.mkIf (config.me.mountPersistence) {
hideMounts = true;
users.talexander = {
directories = [
{
directory = ".cache/Moonlight Game Streaming Project";
user = "talexander";
group = "talexander";
mode = "0755";
}
];
};
};
};
}

View File

@@ -0,0 +1,47 @@
{
config,
lib,
pkgs,
...
}:
{
imports = [ ];
options.me = {
sunshine.enable = lib.mkOption {
type = lib.types.bool;
default = false;
example = true;
description = "Whether we want to install sunshine.";
};
};
config = lib.mkIf (config.me.sunshine.enable && config.me.graphical) {
services.sunshine = {
enable = true;
autoStart = true;
# capSysAdmin = true; # Only needed on non-wlroots wayland compositors
openFirewall = true;
};
# Add user to uinput group to allow sunshine to create virtual input devices like mice/keyboards.
users.users.talexander = {
extraGroups = [ "uinput" ];
};
environment.persistence."/persist" = lib.mkIf (config.me.mountPersistence) {
hideMounts = true;
users.talexander = {
directories = [
{
directory = ".config/sunshine";
user = "talexander";
group = "talexander";
mode = "0755";
}
];
};
};
};
}