chore: nix fmt

This commit is contained in:
514fpv 2025-01-13 11:52:09 +08:00
parent a80bd4ed3b
commit 7266fff06e
Signed by: koishi
SSH key fingerprint: SHA256:axz0uIzzY+5W19i7QOUuiw5LSqhKfCBKPf3L4xFRxLw
128 changed files with 3402 additions and 2013 deletions

View file

@ -1,14 +1,21 @@
{ inputs, ... }: with inputs; with nixpkgs.lib; let
{ inputs, ... }:
with inputs;
with nixpkgs.lib;
let
mapInputs = fn: map fn (lists.remove "self" (attrNames inputs));
channelPath = "/etc/nix/channels";
in {
in
{
nix = {
nixPath = mapInputs (i: "${i}=${channelPath}/${i}");
registry = listToAttrs
(mapInputs (name: {
registry = listToAttrs (
mapInputs (name: {
inherit name;
value = {flake = inputs.${name};};
}));
value = {
flake = inputs.${name};
};
})
);
};
systemd.tmpfiles.rules = mapInputs (i: "L+ ${channelPath}/${i} - - - - ${inputs.${i}.outPath}");

View file

@ -1,4 +1,5 @@
{ pkgs, ... }: {
{ pkgs, ... }:
{
global = {
id = "5d3c16fe58444e12ad621600039f10af";
fs.esp.uuid = "32A5-6257";
@ -7,7 +8,10 @@
fs.external.enable = true;
fs.external.device = "/dev/disk/by-uuid/af2b8ec5-62d8-4b14-8ba8-083cc4fb33f4";
fs.external.fsType = "btrfs";
fs.external.options = [ "noatime" "compress=zstd" ];
fs.external.options = [
"noatime"
"compress=zstd"
];
fs.cryptsetup.enable = true;
fs.cryptsetup.uuids.nix = "3905f87f-7b11-49ef-8ddf-f4202c555ffd";
fs.cryptsetup.uuids.persist = "b2322f01-1c44-433f-a995-4ddce5845cf9";
@ -38,9 +42,15 @@
nvidiaBusId = "PCI:5:0:0";
};
boot.plymouth.catppuccin.enable = false;
catppuccin.plymouth.enable = false;
hardware.enableRedistributableFirmware = true;
boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" ];
boot.initrd.availableKernelModules = [
"xhci_pci"
"thunderbolt"
"nvme"
"usb_storage"
"sd_mod"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];

View file

@ -2,7 +2,10 @@
i18n.defaultLocale = "en_GB.UTF-8";
time.timeZone = "Asia/Hong_Kong";
environment.etc.nixos.source = "/nix/persist/config";
nix.settings.experimental-features = [ "nix-command" "flakes" ];
nix.settings.experimental-features = [
"nix-command"
"flakes"
];
nixpkgs.config.allowUnfree = true;
system.stateVersion = "23.11";
}

View file

@ -1,31 +1,44 @@
{ inputs, ... }: with inputs; with nixpkgs.lib; {
flake.nixosConfigurations = (lists.foldr (name: spec: spec // {
${name} = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = inputs // { inherit inputs; };
modules = [
../global
../home/profile.nix
../home/user.nix
../package
./constant.nix
./channel.nix
impermanence.nixosModules.impermanence
home-manager.nixosModules.home-manager
catppuccin.nixosModules.catppuccin
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
}
lanzaboote.nixosModules.lanzaboote
{ inputs, ... }:
with inputs;
with nixpkgs.lib;
{
flake.nixosConfigurations =
(lists.foldr (
name: spec:
spec
// {
${name} = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = inputs // {
inherit inputs;
};
modules = [
../global
../home/profile.nix
../home/user.nix
../package
./constant.nix
./channel.nix
impermanence.nixosModules.impermanence
home-manager.nixosModules.home-manager
catppuccin.nixosModules.catppuccin
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
}
lanzaboote.nixosModules.lanzaboote
./${name}
{ networking.hostName = name; }
];
};
}) { }) (pipe ./. [
builtins.readDir
(filterAttrs (n: ty: ty == "directory" && builtins.pathExists ./${n}/default.nix))
(mapAttrsToList (n: _: n))
]);
./${name}
{ networking.hostName = name; }
];
};
}
) { })
(
pipe ./. [
builtins.readDir
(filterAttrs (n: ty: ty == "directory" && builtins.pathExists ./${n}/default.nix))
(mapAttrsToList (n: _: n))
]
);
}

View file

@ -1,11 +1,15 @@
{
security.acme.certs = let
cloudflare = {
dnsProvider = "cloudflare";
credentialsFile = "/nix/persist/secret/cloudflare";
security.acme.certs =
let
cloudflare = {
dnsProvider = "cloudflare";
credentialsFile = "/nix/persist/secret/cloudflare";
};
in
{
"514fpv.io" = cloudflare;
".514fpv.io" = cloudflare // {
domain = "*.514fpv.io";
};
};
in {
"514fpv.io" = cloudflare;
".514fpv.io" = cloudflare // { domain = "*.514fpv.io"; };
};
}

View file

@ -1,7 +1,11 @@
{ config
, ... }: let
{
config,
...
}:
let
host = "514fpv.io";
in {
in
{
services.coturn = rec {
enable = true;
no-cli = true;
@ -43,17 +47,27 @@ in {
'';
};
networking.firewall = let
range = with config.services.coturn; [ {
from = min-port;
to = max-port;
} ];
in {
networking.firewall =
let
range = with config.services.coturn; [
{
from = min-port;
to = max-port;
}
];
in
{
allowedUDPPortRanges = range;
allowedUDPPorts = [ 3478 5349 ];
allowedUDPPorts = [
3478
5349
];
allowedTCPPortRanges = range;
allowedTCPPorts = [ 3478 5349 ];
};
allowedTCPPorts = [
3478
5349
];
};
global.fs.zfs.mountpoints."/nix/persist/service/coturn" = "service/coturn";
}

View file

@ -1,6 +1,9 @@
{ lib
, pkgs
, ... }: {
{
lib,
pkgs,
...
}:
{
global = {
id = "ff96c05be13e44f681292205370eed1a";
auth.openssh.enable = true;
@ -37,7 +40,15 @@
];
hardware.enableRedistributableFirmware = true;
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "mpt3sas" "nvme" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.availableKernelModules = [
"xhci_pci"
"ahci"
"mpt3sas"
"nvme"
"usbhid"
"usb_storage"
"sd_mod"
];
boot.initrd.kernelModules = [ "i915" ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];

View file

@ -1,8 +1,12 @@
{ pkgs
, config
, ...}: let
{
pkgs,
config,
...
}:
let
host = "src.514fpv.io";
in {
in
{
services.forgejo = {
enable = true;
lfs.enable = true;

View file

@ -1,6 +1,9 @@
{ pkgs
, config
, ...}: {
{
pkgs,
config,
...
}:
{
# container image used for edgetpu support
virtualisation.oci-containers.containers.frigate = {
extraOptions = [
@ -23,7 +26,11 @@
];
};
networking.firewall.interfaces.ss0.allowedTCPPorts = [ 5000 8554 8555 ];
networking.firewall.interfaces.ss0.allowedTCPPorts = [
5000
8554
8555
];
networking.firewall.interfaces.ss0.allowedUDPPorts = [ 8555 ];
global.fs.zfs.mountpoints."/nix/persist/service/frigate" = "service/frigate";

View file

@ -1,6 +1,9 @@
{ pkgs
, config
, ...}: {
{
pkgs,
config,
...
}:
{
services.home-assistant = {
enable = true;
config = null;
@ -14,9 +17,12 @@
"synology_dsm"
];
extraPackages = python3Packages: with python3Packages; [
aiogithubapi gtts radios
];
extraPackages =
python3Packages: with python3Packages; [
aiogithubapi
gtts
radios
];
};
services.nginx.virtualHosts."home.514fpv.io" = {

View file

@ -1,13 +1,20 @@
{ pkgs
, config
, ...}: {
{
pkgs,
config,
...
}:
{
services.jellyfin = {
enable = true;
openFirewall = true;
dataDir = "/nix/persist/service/jellyfin";
};
environment.systemPackages = with pkgs; [ jellyfin jellyfin-web jellyfin-ffmpeg ];
environment.systemPackages = with pkgs; [
jellyfin
jellyfin-web
jellyfin-ffmpeg
];
users.users.jellyfin.uid = 282;
users.groups.jellyfin.gid = 282;

View file

@ -1,7 +1,11 @@
{ config
, ... }: let
{
config,
...
}:
let
host = "514fpv.io";
in {
in
{
services.matrix-synapse = {
enable = true;
withJemalloc = true;
@ -12,29 +16,43 @@ in {
server_name = host;
public_baseurl = "https://${host}:8448/";
listeners = [ {
bind_addresses = [ "127.0.0.1" ];
port = 8008;
tls = false;
type = "http";
x_forwarded = true;
resources = [
{ compress = true; names = [ "client" ]; }
{ compress = false; names = [ "federation" ]; }
];
} ];
listeners = [
{
bind_addresses = [ "127.0.0.1" ];
port = 8008;
tls = false;
type = "http";
x_forwarded = true;
resources = [
{
compress = true;
names = [ "client" ];
}
{
compress = false;
names = [ "federation" ];
}
];
}
];
# turn server configuration
turn_uris = [
"turn:${config.services.coturn.realm}:3478?transport=udp"
"turn:${config.services.coturn.realm}:3478?transport=tcp"
];
turn_user_lifetime = "1h";
# turn server configuration
turn_uris = [
"turn:${config.services.coturn.realm}:3478?transport=udp"
"turn:${config.services.coturn.realm}:3478?transport=tcp"
];
turn_user_lifetime = "1h";
};
};
services.nginx.virtualHosts.${host} = {
listen = [{ addr = "0.0.0.0"; port = 8448; ssl = true; }];
listen = [
{
addr = "0.0.0.0";
port = 8448;
ssl = true;
}
];
useACMEHost = host;
addSSL = true;
locations."/".extraConfig = ''

View file

@ -1,4 +1,10 @@
{ pkgs, lib, config, ... }: let
{
pkgs,
lib,
config,
...
}:
let
inherit (lib) mapAttrs' nameValuePair;
servers = {
@ -25,81 +31,100 @@
prefix = "minecraft-server-";
data = "/nix/persist/service/minecraft";
in {
in
{
# https://github.com/NixOS/nixpkgs/blob/nixos-unstable/nixos/modules/services/games/minecraft-server.nix
users.users.minecraft = {
description = "Minecraft server service user";
home = data;
createHome = true;
isSystemUser = true;
uid = 1021;
group = "minecraft";
description = "Minecraft server service user";
home = data;
createHome = true;
isSystemUser = true;
uid = 1021;
group = "minecraft";
};
users.groups.minecraft.gid = 1021;
systemd.sockets = mapAttrs' (name: value: with value; (nameValuePair "${prefix}${name}" {
bindsTo = [ "${prefix}${name}.service" ];
socketConfig = {
ListenFIFO = "/run/minecraft-server/${name}.stdin";
SocketMode = "0660";
SocketUser = "minecraft";
SocketGroup = "minecraft";
RemoveOnStop = true;
FlushPending = true;
};
})) servers;
systemd.sockets = mapAttrs' (
name: value:
with value;
(nameValuePair "${prefix}${name}" {
bindsTo = [ "${prefix}${name}.service" ];
socketConfig = {
ListenFIFO = "/run/minecraft-server/${name}.stdin";
SocketMode = "0660";
SocketUser = "minecraft";
SocketGroup = "minecraft";
RemoveOnStop = true;
FlushPending = true;
};
})
) servers;
systemd.services = let
stopScript = { name, stop }: pkgs.writeShellScript "minecraft-server-stop" ''
echo ${stop} > ${config.systemd.sockets."${prefix}${name}".socketConfig.ListenFIFO}
systemd.services =
let
stopScript =
{ name, stop }:
pkgs.writeShellScript "minecraft-server-stop" ''
echo ${stop} > ${config.systemd.sockets."${prefix}${name}".socketConfig.ListenFIFO}
# Wait for the PID of the minecraft server to disappear before
# returning, so systemd doesn't attempt to SIGKILL it.
while kill -0 "$1" 2> /dev/null; do
sleep 1s
done
'';
in mapAttrs' (name: value: with value; (nameValuePair "${prefix}${name}" {
description = "Minecraft Server Service for ${name}";
wantedBy = [ "multi-user.target" ];
requires = [ "${prefix}${name}.socket" ];
after = [ "network.target" "${prefix}${name}.socket" ];
path = [ pkgs.bash ];
# Wait for the PID of the minecraft server to disappear before
# returning, so systemd doesn't attempt to SIGKILL it.
while kill -0 "$1" 2> /dev/null; do
sleep 1s
done
'';
in
mapAttrs' (
name: value:
with value;
(nameValuePair "${prefix}${name}" {
description = "Minecraft Server Service for ${name}";
wantedBy = [ "multi-user.target" ];
requires = [ "${prefix}${name}.socket" ];
after = [
"network.target"
"${prefix}${name}.socket"
];
path = [ pkgs.bash ];
serviceConfig = {
ExecStart = cmdline;
ExecStop = "${stopScript { inherit name stop; }} $MAINPID";
Restart = "always";
User = "minecraft";
WorkingDirectory = "${data}/${name}";
serviceConfig = {
ExecStart = cmdline;
ExecStop = "${stopScript { inherit name stop; }} $MAINPID";
Restart = "always";
User = "minecraft";
WorkingDirectory = "${data}/${name}";
StandardInput = "socket";
StandardOutput = "journal";
StandardError = "journal";
StandardInput = "socket";
StandardOutput = "journal";
StandardError = "journal";
# Hardening
CapabilityBoundingSet = [ "" ];
DeviceAllow = [ "" ];
LockPersonality = true;
PrivateDevices = true;
PrivateTmp = true;
PrivateUsers = true;
ProtectClock = true;
ProtectControlGroups = true;
ProtectHome = true;
ProtectHostname = true;
ProtectKernelLogs = true;
ProtectKernelModules = true;
ProtectKernelTunables = true;
ProtectProc = "invisible";
RestrictAddressFamilies = [ "AF_INET" "AF_INET6" ];
RestrictNamespaces = true;
RestrictRealtime = true;
RestrictSUIDSGID = true;
SystemCallArchitectures = "native";
UMask = "0077";
};
})) servers;
# Hardening
CapabilityBoundingSet = [ "" ];
DeviceAllow = [ "" ];
LockPersonality = true;
PrivateDevices = true;
PrivateTmp = true;
PrivateUsers = true;
ProtectClock = true;
ProtectControlGroups = true;
ProtectHome = true;
ProtectHostname = true;
ProtectKernelLogs = true;
ProtectKernelModules = true;
ProtectKernelTunables = true;
ProtectProc = "invisible";
RestrictAddressFamilies = [
"AF_INET"
"AF_INET6"
];
RestrictNamespaces = true;
RestrictRealtime = true;
RestrictSUIDSGID = true;
SystemCallArchitectures = "native";
UMask = "0077";
};
})
) servers;
global.fs.zfs.mountpoints.${data} = "service/minecraft";
networking.firewall.allowedTCPPorts = [ 25565 ];

View file

@ -1,16 +1,18 @@
{
services.mosquitto = {
enable = true;
listeners = [ {
users.frigate = {
acl = [ "readwrite #" ];
hashedPassword = "$7$101$Zt3Me3AkHbrKBbbI$SsLTGeTwtkFGXS2F1/S3Vg6w7TcgMLU037ttedKaw/Ela0wgqbaAVxecK1j5i5TDw9OjZMkNI9mUzz9l0d7vcg==";
};
users.root = {
acl = [ "readwrite #" ];
hashedPassword = "$7$101$FjpEh+NpG27RltQe$u2dmg9wz+BBnp1s4z6E6x95TyGO5B9RM2z51qxetvAqO4QDvye1J3UCdMvjuz52iMqzZ3eKi+T2xDeLR7CeMgQ==";
};
} ];
listeners = [
{
users.frigate = {
acl = [ "readwrite #" ];
hashedPassword = "$7$101$Zt3Me3AkHbrKBbbI$SsLTGeTwtkFGXS2F1/S3Vg6w7TcgMLU037ttedKaw/Ela0wgqbaAVxecK1j5i5TDw9OjZMkNI9mUzz9l0d7vcg==";
};
users.root = {
acl = [ "readwrite #" ];
hashedPassword = "$7$101$FjpEh+NpG27RltQe$u2dmg9wz+BBnp1s4z6E6x95TyGO5B9RM2z51qxetvAqO4QDvye1J3UCdMvjuz52iMqzZ3eKi+T2xDeLR7CeMgQ==";
};
}
];
};
networking.firewall.allowedTCPPorts = [ 1883 ];

View file

@ -1,15 +1,27 @@
{ pkgs
, ...}: let
{
pkgs,
...
}:
let
host = "cloud.514fpv.io";
in {
in
{
services.nextcloud = {
enable = true;
package = pkgs.nextcloud30;
extraApps = {
inherit (pkgs.nextcloud30Packages.apps)
notify_push impersonate spreed
contacts bookmarks deck polls notes forms
twofactor_webauthn;
notify_push
impersonate
spreed
contacts
bookmarks
deck
polls
notes
forms
twofactor_webauthn
;
};
home = "/nix/persist/service/nextcloud";
configureRedis = true;

View file

@ -20,5 +20,8 @@
};
};
networking.firewall.allowedTCPPorts = [ 80 443 ];
networking.firewall.allowedTCPPorts = [
80
443
];
}

View file

@ -1,5 +1,9 @@
{ lib
, ... }: with lib; {
{
lib,
...
}:
with lib;
{
services.photoprism = {
enable = true;
originalsPath = "/run/storage/aerial/raw";

View file

@ -4,7 +4,7 @@
database.driver = "postgres";
database.string = "postgresql:///photoview?host=/var/run/postgresql";
stateDir = "/nix/persist/service/photoview";
secrets = "/nix/persist/service/photoview/secrets.env" ;
secrets = "/nix/persist/service/photoview/secrets.env";
};
services.nginx.virtualHosts."dvr.514fpv.io" = {

View file

@ -1,6 +1,9 @@
{ pkgs
, config
, ...}: {
{
pkgs,
config,
...
}:
{
services.postgresql = {
enable = true;
dataDir = "/nix/persist/service/postgresql/${config.services.postgresql.package.psqlSchema}";

View file

@ -1,11 +1,15 @@
{
security.acme.certs = let
cloudflare = {
dnsProvider = "cloudflare";
credentialsFile = "/nix/persist/secret/cloudflare";
security.acme.certs =
let
cloudflare = {
dnsProvider = "cloudflare";
credentialsFile = "/nix/persist/secret/cloudflare";
};
in
{
"sf.514fpv.io" = cloudflare;
".sf.514fpv.io" = cloudflare // {
domain = "*.sf.514fpv.io";
};
};
in {
"sf.514fpv.io" = cloudflare;
".sf.514fpv.io" = cloudflare // { domain = "*.sf.514fpv.io"; };
};
}

View file

@ -1,5 +1,8 @@
{ lib
, ... }: {
{
lib,
...
}:
{
global = {
id = "22e9d4e37bd7436ba0cbe6e767fb0912";
auth.openssh.enable = true;
@ -40,7 +43,14 @@
];
hardware.enableRedistributableFirmware = true;
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.availableKernelModules = [
"xhci_pci"
"ahci"
"nvme"
"usbhid"
"usb_storage"
"sd_mod"
];
boot.initrd.kernelModules = [ "i915" ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];

View file

@ -1,15 +1,27 @@
{ pkgs
, ...}: let
{
pkgs,
...
}:
let
host = "cloud.sf.514fpv.io";
in {
in
{
services.nextcloud = {
enable = true;
package = pkgs.nextcloud30;
extraApps = {
inherit (pkgs.nextcloud30Packages.apps)
notify_push impersonate spreed
contacts bookmarks deck polls notes forms
twofactor_webauthn;
notify_push
impersonate
spreed
contacts
bookmarks
deck
polls
notes
forms
twofactor_webauthn
;
};
home = "/nix/persist/service/nextcloud";
configureRedis = true;

View file

@ -20,5 +20,8 @@
};
};
networking.firewall.allowedTCPPorts = [ 80 443 ];
networking.firewall.allowedTCPPorts = [
80
443
];
}

View file

@ -1,6 +1,9 @@
{ pkgs
, config
, ...}: {
{
pkgs,
config,
...
}:
{
services.postgresql = {
enable = true;
dataDir = "/nix/persist/service/postgresql/${config.services.postgresql.package.psqlSchema}";

View file

@ -1,4 +1,10 @@
{ pkgs, lib, config, ... }: {
{
pkgs,
lib,
config,
...
}:
{
global = {
id = "09a2900f15b74f36b023a9ebcd539f6a";
fs.esp.uuid = "AE73-B83E";
@ -21,19 +27,21 @@
minecraft.user = "app";
};
users.homeModules = [ {
wayland.windowManager.sway.config = {
input = {
"9610:30:HID_258a:001e_Mouse".natural_scroll = "disabled";
"1539:61441:NVTK0603:00_0603:F001_UNKNOWN".map_to_output = "eDP-1";
"1539:61441:NVTK0603:00_0603:F001".map_to_output = "eDP-1";
users.homeModules = [
{
wayland.windowManager.sway.config = {
input = {
"9610:30:HID_258a:001e_Mouse".natural_scroll = "disabled";
"1539:61441:NVTK0603:00_0603:F001_UNKNOWN".map_to_output = "eDP-1";
"1539:61441:NVTK0603:00_0603:F001".map_to_output = "eDP-1";
};
output = {
eDP-1.scale = "2";
eDP-1.transform = "270";
};
};
output = {
eDP-1.scale = "2";
eDP-1.transform = "270";
};
};
} ];
}
];
powerManagement.enable = true;
powerManagement.cpuFreqGovernor = "performance";
@ -44,16 +52,24 @@
DeviceScale=2
'';
services.greetd.settings.default_session.command = let
cfg = config.programs.regreet;
in lib.mkOverride 999 "${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.cage} ${lib.escapeShellArgs cfg.cageArgs} -- ${pkgs.writeShellScript "cageResolution" ''
${lib.getExe pkgs.wlr-randr} --output eDP-1 --scale 2 --transform 90
${lib.getExe cfg.package}
''}";
services.greetd.settings.default_session.command =
let
cfg = config.programs.regreet;
in
lib.mkOverride 999 "${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.cage} ${lib.escapeShellArgs cfg.cageArgs} -- ${pkgs.writeShellScript "cageResolution" ''
${lib.getExe pkgs.wlr-randr} --output eDP-1 --scale 2 --transform 90
${lib.getExe cfg.package}
''}";
hardware.sensor.iio.enable = true;
hardware.enableRedistributableFirmware = true;
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usbhid" "rtsx_pci_sdmmc" ];
boot.initrd.availableKernelModules = [
"nvme"
"xhci_pci"
"thunderbolt"
"usbhid"
"rtsx_pci_sdmmc"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];

View file

@ -1,6 +1,9 @@
{ lib
, modulesPath
, ... }: {
{
lib,
modulesPath,
...
}:
{
global = {
id = "62ea62fde6c04fb6b5c791892b6798c8";
auth.openssh.enable = true;
@ -10,13 +13,21 @@
oci.enable = true;
};
imports = lib.pipe ./. [
builtins.readDir
(lib.filterAttrs (n: ty: ty == "regular" && n != "default.nix"))
(lib.mapAttrsToList (n: _: ./${n}))
] ++ [ (modulesPath + "/profiles/qemu-guest.nix") ];
imports =
lib.pipe ./. [
builtins.readDir
(lib.filterAttrs (n: ty: ty == "regular" && n != "default.nix"))
(lib.mapAttrsToList (n: _: ./${n}))
]
++ [ (modulesPath + "/profiles/qemu-guest.nix") ];
boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "sr_mod" "virtio_blk" ];
boot.initrd.availableKernelModules = [
"ahci"
"xhci_pci"
"virtio_pci"
"sr_mod"
"virtio_blk"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];

View file

@ -1,4 +1,11 @@
{ pkgs, lib, config, jovian, ... }: {
{
pkgs,
lib,
config,
jovian,
...
}:
{
global = {
id = "0a920a834b5f480bab258040096d4c6e";
fs.esp.uuid = "ACB3-4AFF";
@ -18,14 +25,16 @@
minecraft.user = "app";
};
users.homeModules = [ {
wayland.windowManager.sway.config = {
input."1046:911:Goodix_Capacitive_TouchScreen".map_to_output = "eDP-1";
output = {
eDP-1.scale = "1.75";
users.homeModules = [
{
wayland.windowManager.sway.config = {
input."1046:911:Goodix_Capacitive_TouchScreen".map_to_output = "eDP-1";
output = {
eDP-1.scale = "1.75";
};
};
};
} ];
}
];
powerManagement.enable = true;
powerManagement.cpuFreqGovernor = "performance";
@ -43,12 +52,14 @@
specialisation.desktop.configuration = {
global.jovian = false;
jovian.steamos.useSteamOSConfig = false;
services.greetd.settings.default_session.command = let
cfg = config.programs.regreet;
in "${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.cage} ${lib.escapeShellArgs cfg.cageArgs} -- ${pkgs.writeShellScript "cageResolution" ''
${lib.getExe pkgs.wlr-randr} --output eDP-1 --scale 2
${lib.getExe cfg.package}
''}";
services.greetd.settings.default_session.command =
let
cfg = config.programs.regreet;
in
"${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.cage} ${lib.escapeShellArgs cfg.cageArgs} -- ${pkgs.writeShellScript "cageResolution" ''
${lib.getExe pkgs.wlr-randr} --output eDP-1 --scale 2
${lib.getExe cfg.package}
''}";
environment.systemPackages = with pkgs; [
(writeShellScriptBin "sway-logout" ''
${systemd}/bin/systemctl --user unset-environment WAYLAND_DISPLAY SWAYSOCK
@ -58,7 +69,14 @@
};
hardware.enableRedistributableFirmware = true;
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.availableKernelModules = [
"nvme"
"xhci_pci"
"thunderbolt"
"usbhid"
"usb_storage"
"sd_mod"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];

View file

@ -1,5 +1,14 @@
{ pkgs, lib, config, ... }: with lib; {
options.global.jovian = mkEnableOption "set up Jovian NixOS" // { default = true; };
{
pkgs,
lib,
config,
...
}:
with lib;
{
options.global.jovian = mkEnableOption "set up Jovian NixOS" // {
default = true;
};
config = mkIf config.global.jovian {
jovian = {
@ -16,12 +25,17 @@
};
users.home.persistApp.directories = [
".steam" ".local/share/Steam"
".config/gamescope" ".config/hhd"
".steam"
".local/share/Steam"
".config/gamescope"
".config/hhd"
".kodi"
];
users.users.app.extraGroups = [ "networkmanager" "gamemode" ];
users.users.app.extraGroups = [
"networkmanager"
"gamemode"
];
programs.gamemode.enable = true;
programs.regreet.enable = false;
home.plasma.enable = true;
@ -34,14 +48,20 @@
home-manager.users.app = {
home.packages = with pkgs; [
(pkgs.kodi-wayland.passthru.withPackages (kodiPkgs: with kodiPkgs; [
joystick # keymap steam-controller
#controller-topology-project
libretro libretro-2048
libretro-fuse libretro-genplus libretro-mgba
libretro-nestopia libretro-snes9x
jellycon
]))
(pkgs.kodi-wayland.passthru.withPackages (
kodiPkgs: with kodiPkgs; [
joystick # keymap steam-controller
#controller-topology-project
libretro
libretro-2048
libretro-fuse
libretro-genplus
libretro-mgba
libretro-nestopia
libretro-snes9x
jellycon
]
))
];
home.pointerCursor = {
@ -60,11 +80,20 @@
enable = true;
user = "app";
extraPackages = with pkgs; [
curl unzip util-linux gnugrep procps pciutils kmod ryzenadj
];
extraPythonPackages = pythonPackages: with pythonPackages; [
hid pyyaml
curl
unzip
util-linux
gnugrep
procps
pciutils
kmod
ryzenadj
];
extraPythonPackages =
pythonPackages: with pythonPackages; [
hid
pyyaml
];
stateDir = "/nix/persist/decky";
};

View file

@ -1,5 +1,8 @@
{ config
, ... }: {
{
config,
...
}:
{
boot.extraModulePackages = [
(config.boot.kernelPackages.callPackage ./package.nix { })
];

View file

@ -1,14 +1,20 @@
{ stdenv
, lib
, kernel
, kmod }: stdenv.mkDerivation rec {
{
stdenv,
lib,
kernel,
kmod,
}:
stdenv.mkDerivation rec {
name = "ac71-${version}-${kernel.version}";
version = "2024.2.13";
# adapted from https://github.com/pobrn/qc71_laptop
src = ./.;
hardeningDisable = [ "pic" "format" ];
hardeningDisable = [
"pic"
"format"
];
nativeBuildInputs = kernel.moduleBuildDependencies;
makeFlags = [

View file

@ -32,7 +32,13 @@
boot.loader.timeout = 2;
hardware.enableRedistributableFirmware = true;
boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" ];
boot.initrd.availableKernelModules = [
"xhci_pci"
"thunderbolt"
"nvme"
"usb_storage"
"sd_mod"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];

View file

@ -1,6 +1,9 @@
{ lib
, pkgs
, ... }: {
{
lib,
pkgs,
...
}:
{
global = {
id = "f16d3a87afdd4eb2b1fa4c098d4a9c1a";
auth.openssh.enable = true;
@ -27,7 +30,14 @@
'';
hardware.enableRedistributableFirmware = true;
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.availableKernelModules = [
"xhci_pci"
"ahci"
"nvme"
"usbhid"
"usb_storage"
"sd_mod"
];
boot.initrd.kernelModules = [ "i915" ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];

View file

@ -1,7 +1,10 @@
{ lib
, pkgs
, config
, ... }: {
{
lib,
pkgs,
config,
...
}:
{
global = {
id = "23c46cfc573f4f889af9ba5d4678c2ab";
fs.esp.uuid = "6695-0740";
@ -22,17 +25,19 @@
steam.enable = true;
};
users.homeModules = [ {
wayland.windowManager.sway.config = {
input."1267:16857:ELAN9009:00_04F3:41D9".map_to_output = "DP-3";
output = {
eDP-1.scale = "1.5";
eDP-1.pos = "0 0";
DP-3.scale = "2.25";
DP-3.pos = "0 1066";
users.homeModules = [
{
wayland.windowManager.sway.config = {
input."1267:16857:ELAN9009:00_04F3:41D9".map_to_output = "DP-3";
output = {
eDP-1.scale = "1.5";
eDP-1.pos = "0 0";
DP-3.scale = "2.25";
DP-3.pos = "0 1066";
};
};
};
} ];
}
];
home.plasma.extraConfig = {
configFile = {
@ -46,7 +51,7 @@
powerManagement.enable = true;
powerManagement.cpuFreqGovernor = "performance";
boot.kernelParams = [ "zfs.zfs_arc_max=34359738368" ];
console.packages = [ pkgs.terminus_font ];
console.packages = [ pkgs.terminus_font ];
console.font = "ter-v32n";
console.earlySetup = true;
@ -55,15 +60,23 @@
nvidiaBusId = "PCI:1:0:0";
};
services.greetd.settings.default_session.command = let
cfg = config.programs.regreet;
in "${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.cage} ${lib.escapeShellArgs cfg.cageArgs} -- ${pkgs.writeShellScript "cageResolution" ''
${lib.getExe pkgs.wlr-randr} --output DP-3 --scale 2.25
${lib.getExe cfg.package}
''}";
services.greetd.settings.default_session.command =
let
cfg = config.programs.regreet;
in
"${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.cage} ${lib.escapeShellArgs cfg.cageArgs} -- ${pkgs.writeShellScript "cageResolution" ''
${lib.getExe pkgs.wlr-randr} --output DP-3 --scale 2.25
${lib.getExe cfg.package}
''}";
hardware.enableRedistributableFirmware = true;
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.availableKernelModules = [
"nvme"
"xhci_pci"
"usbhid"
"usb_storage"
"sd_mod"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];

View file

@ -1,5 +1,8 @@
{ lib
, ... }: {
{
lib,
...
}:
{
global = {
id = "63795fdf54e048dcbefcbc525ec3779d";
auth.openssh.enable = true;

View file

@ -1,8 +1,10 @@
{ pkgs
, lib
, config
, modulesPath
, ... }:
{
pkgs,
lib,
config,
modulesPath,
...
}:
let
inherit (lib)
@ -11,7 +13,7 @@ let
mkIf
optional
readFile
;
;
in
{
@ -20,10 +22,16 @@ in
(modulesPath + "/profiles/qemu-guest.nix")
];
boot.kernelParams = [ "console=ttyS0,115200n8" "panic=1" "boot.panic_on_fail" ];
boot.kernelParams = [
"console=ttyS0,115200n8"
"panic=1"
"boot.panic_on_fail"
];
boot.initrd.kernelModules = [ "virtio_scsi" ];
boot.kernelModules = [ "virtio_pci" "virtio_net" ];
boot.kernelModules = [
"virtio_pci"
"virtio_net"
];
# enable OS Login. This also requires setting enable-oslogin=TRUE metadata on
# instance or project level
@ -55,18 +63,35 @@ in
systemd.services.google-shutdown-scripts.wantedBy = [ "multi-user.target" ];
security.sudo.extraRules = mkIf config.users.mutableUsers [
{ groups = [ "google-sudoers" ]; commands = [ { command = "ALL"; options = [ "NOPASSWD" ]; } ]; }
{
groups = [ "google-sudoers" ];
commands = [
{
command = "ALL";
options = [ "NOPASSWD" ];
}
];
}
];
security.sudo-rs.extraRules = mkIf config.users.mutableUsers [
{ groups = [ "google-sudoers" ]; commands = [ { command = "ALL"; options = [ "NOPASSWD" ]; } ]; }
{
groups = [ "google-sudoers" ];
commands = [
{
command = "ALL";
options = [ "NOPASSWD" ];
}
];
}
];
users.groups.google-sudoers = mkIf config.users.mutableUsers { };
boot.extraModprobeConfig = readFile "${pkgs.google-guest-configs}/etc/modprobe.d/gce-blacklist.conf";
environment.etc."sysctl.d/60-gce-network-security.conf".source = "${pkgs.google-guest-configs}/etc/sysctl.d/60-gce-network-security.conf";
environment.etc."sysctl.d/60-gce-network-security.conf".source =
"${pkgs.google-guest-configs}/etc/sysctl.d/60-gce-network-security.conf";
environment.etc."default/instance_configs.cfg".text = ''
[Accounts]

View file

@ -1,5 +1,8 @@
{ pkgs
, ...}: {
{
pkgs,
...
}:
{
services.nginx = {
enable = true;
@ -9,43 +12,48 @@
recommendedGzipSettings = true;
recommendedProxySettings = true;
virtualHosts = let
mkRedirect = host: {
locations."/".return = "307 https://${host}$request_uri";
forceSSL = true;
enableACME = true;
};
in {
"_" = {
rejectSSL = true;
extraConfig = "return 444;";
};
"514fpv.one" = {
root = pkgs.callPackage ./site { };
forceSSL = true;
enableACME = true;
};
"www.514fpv.one" = {
globalRedirect = "514fpv.one";
enableACME = true;
};
"uptime.514fpv.one" = {
locations."/" = {
proxyPass = "http://127.0.0.1:4000";
proxyWebsockets = true;
virtualHosts =
let
mkRedirect = host: {
locations."/".return = "307 https://${host}$request_uri";
forceSSL = true;
enableACME = true;
};
in
{
"_" = {
rejectSSL = true;
extraConfig = "return 444;";
};
forceSSL = true;
enableACME = true;
};
# redirections to home server
"src.514fpv.one" = mkRedirect "src.514fpv.io:2096";
"cloud.514fpv.one" = mkRedirect "cloud.514fpv.io:2096";
};
"514fpv.one" = {
root = pkgs.callPackage ./site { };
forceSSL = true;
enableACME = true;
};
"www.514fpv.one" = {
globalRedirect = "514fpv.one";
enableACME = true;
};
"uptime.514fpv.one" = {
locations."/" = {
proxyPass = "http://127.0.0.1:4000";
proxyWebsockets = true;
};
forceSSL = true;
enableACME = true;
};
# redirections to home server
"src.514fpv.one" = mkRedirect "src.514fpv.io:2096";
"cloud.514fpv.one" = mkRedirect "cloud.514fpv.io:2096";
};
};
networking.firewall.allowedTCPPorts = [ 80 443 ];
networking.firewall.allowedTCPPorts = [
80
443
];
}

View file

@ -1,9 +1,12 @@
{ lib
, stdenvNoCC
, ruby
, bundlerEnv
, writeShellScriptBin
, fetchFromGitHub }: let
{
lib,
stdenvNoCC,
ruby,
bundlerEnv,
writeShellScriptBin,
fetchFromGitHub,
}:
let
name = "website";
version = "20240114";
@ -22,11 +25,15 @@
lockfile = ./Gemfile.lock;
gemset = ./gemset.nix;
};
in stdenvNoCC.mkDerivation {
in
stdenvNoCC.mkDerivation {
pname = name;
inherit version;
src = ./.;
buildInputs = [ gems ruby ];
buildInputs = [
gems
ruby
];
nativeBuildInputs = [ (writeShellScriptBin "git" "true") ];
configurePhase = ''

View file

@ -1,492 +1,576 @@
{
addressable = {
dependencies = ["public_suffix"];
groups = ["default" "test"];
platforms = [];
dependencies = [ "public_suffix" ];
groups = [
"default"
"test"
];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "0irbdwkkjwzajq1ip6ba46q49sxnrl2cw7ddkdhsfhb6aprnm3vr";
type = "gem";
};
version = "2.8.6";
};
colorator = {
groups = ["default"];
platforms = [];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72";
type = "gem";
};
version = "1.1.0";
};
concurrent-ruby = {
groups = ["default"];
platforms = [];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "1qh1b14jwbbj242klkyz5fc7npd4j0mvndz62gajhvl1l3wd7zc2";
type = "gem";
};
version = "1.2.3";
};
em-websocket = {
dependencies = ["eventmachine" "http_parser.rb"];
groups = ["default"];
platforms = [];
dependencies = [
"eventmachine"
"http_parser.rb"
];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "1a66b0kjk6jx7pai9gc7i27zd0a128gy73nmas98gjz6wjyr4spm";
type = "gem";
};
version = "0.5.3";
};
ethon = {
dependencies = ["ffi"];
groups = ["default" "test"];
platforms = [];
dependencies = [ "ffi" ];
groups = [
"default"
"test"
];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "17ix0mijpsy3y0c6ywrk5ibarmvqzjsirjyprpsy3hwax8fdm85v";
type = "gem";
};
version = "0.16.0";
};
eventmachine = {
groups = ["default"];
platforms = [];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r";
type = "gem";
};
version = "1.2.7";
};
ffi = {
groups = ["default" "test"];
platforms = [];
groups = [
"default"
"test"
];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "1yvii03hcgqj30maavddqamqy50h7y6xcn2wcyq72wn823zl4ckd";
type = "gem";
};
version = "1.16.3";
};
forwardable-extended = {
groups = ["default"];
platforms = [];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v";
type = "gem";
};
version = "2.6.0";
};
google-protobuf = {
groups = ["default"];
platforms = [];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "1mnxzcq8kmyfb9bkzqnp019d1hx1vprip3yzdkkha6b3qz5rgg9r";
type = "gem";
};
version = "3.25.3";
};
html-proofer = {
dependencies = ["addressable" "mercenary" "nokogiri" "parallel" "rainbow" "typhoeus" "yell" "zeitwerk"];
groups = ["test"];
platforms = [];
dependencies = [
"addressable"
"mercenary"
"nokogiri"
"parallel"
"rainbow"
"typhoeus"
"yell"
"zeitwerk"
];
groups = [ "test" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "00hhwzl5llvsasbj6gpgd1272xrqz8wlxzq7qm0xa4z3mk24013j";
type = "gem";
};
version = "4.4.3";
};
"http_parser.rb" = {
groups = ["default"];
platforms = [];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi";
type = "gem";
};
version = "0.6.0";
};
i18n = {
dependencies = ["concurrent-ruby"];
groups = ["default"];
platforms = [];
dependencies = [ "concurrent-ruby" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "0qaamqsh5f3szhcakkak8ikxlzxqnv49n2p7504hcz2l0f4nj0wx";
type = "gem";
};
version = "1.14.1";
};
jekyll = {
dependencies = ["addressable" "colorator" "em-websocket" "i18n" "jekyll-sass-converter" "jekyll-watch" "kramdown" "kramdown-parser-gfm" "liquid" "mercenary" "pathutil" "rouge" "safe_yaml" "terminal-table" "webrick"];
groups = ["default"];
platforms = [];
dependencies = [
"addressable"
"colorator"
"em-websocket"
"i18n"
"jekyll-sass-converter"
"jekyll-watch"
"kramdown"
"kramdown-parser-gfm"
"liquid"
"mercenary"
"pathutil"
"rouge"
"safe_yaml"
"terminal-table"
"webrick"
];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "0638cvpmk3py1w2dxpav6l0c854y6l94b6gyc2aa16i7r897z64a";
type = "gem";
};
version = "4.3.3";
};
jekyll-archives = {
dependencies = ["jekyll"];
groups = ["default"];
platforms = [];
dependencies = [ "jekyll" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "0c2rks7xf6ajp18h4f4wmmbqm5ljprv70bqcz2sabi17zncmz9n0";
type = "gem";
};
version = "2.2.1";
};
jekyll-include-cache = {
dependencies = ["jekyll"];
groups = ["default"];
platforms = [];
dependencies = [ "jekyll" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "01d2l6qrmjc42664ns83cv36jbvalcxqbkmj5i22fakka7jvkm67";
type = "gem";
};
version = "0.2.1";
};
jekyll-paginate = {
groups = ["default"];
platforms = [];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "0r7bcs8fq98zldih4787zk5i9w24nz5wa26m84ssja95n3sas2l8";
type = "gem";
};
version = "1.1.0";
};
jekyll-redirect-from = {
dependencies = ["jekyll"];
groups = ["default"];
platforms = [];
dependencies = [ "jekyll" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "1nz6kd6qsa160lmjmls4zgx7fwcpp8ac07mpzy80z6zgd7jwldb6";
type = "gem";
};
version = "0.16.0";
};
jekyll-sass-converter = {
dependencies = ["sass-embedded"];
groups = ["default"];
platforms = [];
dependencies = [ "sass-embedded" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "00n9v19h0qgjijygfdkdh2gwpmdlz49nw1mqk6fnp43f317ngrz2";
type = "gem";
};
version = "3.0.0";
};
jekyll-seo-tag = {
dependencies = ["jekyll"];
groups = ["default"];
platforms = [];
dependencies = [ "jekyll" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "0638mqhqynghnlnaz0xi1kvnv53wkggaq94flfzlxwandn8x2biz";
type = "gem";
};
version = "2.8.0";
};
jekyll-sitemap = {
dependencies = ["jekyll"];
groups = ["default"];
platforms = [];
dependencies = [ "jekyll" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "0622rwsn5i0m5xcyzdn86l68wgydqwji03lqixdfm1f1xdfqrq0d";
type = "gem";
};
version = "1.4.0";
};
jekyll-theme-chirpy = {
dependencies = ["jekyll" "jekyll-archives" "jekyll-include-cache" "jekyll-paginate" "jekyll-redirect-from" "jekyll-seo-tag" "jekyll-sitemap"];
groups = ["default"];
platforms = [];
dependencies = [
"jekyll"
"jekyll-archives"
"jekyll-include-cache"
"jekyll-paginate"
"jekyll-redirect-from"
"jekyll-seo-tag"
"jekyll-sitemap"
];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "0xlrwyz68rfr820gm98gidc49vprb80im32s6ydli0q1mv1inmzq";
type = "gem";
};
version = "6.5.0";
};
jekyll-watch = {
dependencies = ["listen"];
groups = ["default"];
platforms = [];
dependencies = [ "listen" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "1qd7hy1kl87fl7l0frw5qbn22x7ayfzlv9a5ca1m59g0ym1ysi5w";
type = "gem";
};
version = "2.2.1";
};
kramdown = {
dependencies = ["rexml"];
groups = ["default"];
platforms = [];
dependencies = [ "rexml" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "1ic14hdcqxn821dvzki99zhmcy130yhv5fqfffkcf87asv5mnbmn";
type = "gem";
};
version = "2.4.0";
};
kramdown-parser-gfm = {
dependencies = ["kramdown"];
groups = ["default"];
platforms = [];
dependencies = [ "kramdown" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "0a8pb3v951f4x7h968rqfsa19c8arz21zw1vaj42jza22rap8fgv";
type = "gem";
};
version = "1.1.0";
};
liquid = {
groups = ["default"];
platforms = [];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "1czxv2i1gv3k7hxnrgfjb0z8khz74l4pmfwd70c7kr25l2qypksg";
type = "gem";
};
version = "4.0.4";
};
listen = {
dependencies = ["rb-fsevent" "rb-inotify"];
groups = ["default"];
platforms = [];
dependencies = [
"rb-fsevent"
"rb-inotify"
];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "13rgkfar8pp31z1aamxf5y7cfq88wv6rxxcwy7cmm177qq508ycn";
type = "gem";
};
version = "3.8.0";
};
mercenary = {
groups = ["default" "test"];
platforms = [];
groups = [
"default"
"test"
];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "0f2i827w4lmsizrxixsrv2ssa3gk1b7lmqh8brk8ijmdb551wnmj";
type = "gem";
};
version = "0.4.0";
};
mini_portile2 = {
groups = ["default" "test"];
platforms = [];
groups = [
"default"
"test"
];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "1kl9c3kdchjabrihdqfmcplk3lq4cw1rr9f378y6q22qwy5dndvs";
type = "gem";
};
version = "2.8.5";
};
nokogiri = {
dependencies = ["mini_portile2" "racc"];
groups = ["default" "test"];
platforms = [];
dependencies = [
"mini_portile2"
"racc"
];
groups = [
"default"
"test"
];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "173zavvxlwyi48lfskk48wcrdbkvjlhjhvy4jpcrfx72rpjjx4k8";
type = "gem";
};
version = "1.16.2";
};
parallel = {
groups = ["default" "test"];
platforms = [];
groups = [
"default"
"test"
];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "15wkxrg1sj3n1h2g8jcrn7gcapwcgxr659ypjf75z1ipkgxqxwsv";
type = "gem";
};
version = "1.24.0";
};
pathutil = {
dependencies = ["forwardable-extended"];
groups = ["default"];
platforms = [];
dependencies = [ "forwardable-extended" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4";
type = "gem";
};
version = "0.16.2";
};
public_suffix = {
groups = ["default" "test"];
platforms = [];
groups = [
"default"
"test"
];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "1bni4qjrsh2q49pnmmd6if4iv3ak36bd2cckrs6npl111n769k9m";
type = "gem";
};
version = "5.0.4";
};
racc = {
groups = ["default" "test"];
platforms = [];
groups = [
"default"
"test"
];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "01b9662zd2x9bp4rdjfid07h09zxj7kvn7f5fghbqhzc625ap1dp";
type = "gem";
};
version = "1.7.3";
};
rainbow = {
groups = ["default" "test"];
platforms = [];
groups = [
"default"
"test"
];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "0smwg4mii0fm38pyb5fddbmrdpifwv22zv3d3px2xx497am93503";
type = "gem";
};
version = "3.1.1";
};
rake = {
groups = ["default"];
platforms = [];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "1ilr853hawi09626axx0mps4rkkmxcs54mapz9jnqvpnlwd3wsmy";
type = "gem";
};
version = "13.1.0";
};
rb-fsevent = {
groups = ["default"];
platforms = [];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "1zmf31rnpm8553lqwibvv3kkx0v7majm1f341xbxc0bk5sbhp423";
type = "gem";
};
version = "0.11.2";
};
rb-inotify = {
dependencies = ["ffi"];
groups = ["default"];
platforms = [];
dependencies = [ "ffi" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "1jm76h8f8hji38z3ggf4bzi8vps6p7sagxn3ab57qc0xyga64005";
type = "gem";
};
version = "0.10.1";
};
rexml = {
groups = ["default"];
platforms = [];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "05i8518ay14kjbma550mv0jm8a6di8yp5phzrd8rj44z9qnrlrp0";
type = "gem";
};
version = "3.2.6";
};
rouge = {
groups = ["default"];
platforms = [];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "1fkfa0iq3r9b0zzrxpxha17avmyzci3kidzmfbf6fd1279mndpb0";
type = "gem";
};
version = "4.2.0";
};
safe_yaml = {
groups = ["default"];
platforms = [];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "0j7qv63p0vqcd838i2iy2f76c3dgwzkiz1d1xkg7n0pbnxj2vb56";
type = "gem";
};
version = "1.0.5";
};
sass-embedded = {
dependencies = ["google-protobuf" "rake"];
groups = ["default"];
platforms = [];
dependencies = [
"google-protobuf"
"rake"
];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "1ccqqkmicqs2nbawyknb17qfafwqq0k6jxibcm86vqd1jp185pxa";
type = "gem";
};
version = "1.71.1";
};
terminal-table = {
dependencies = ["unicode-display_width"];
groups = ["default"];
platforms = [];
dependencies = [ "unicode-display_width" ];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "14dfmfjppmng5hwj7c5ka6qdapawm3h6k9lhn8zj001ybypvclgr";
type = "gem";
};
version = "3.0.2";
};
typhoeus = {
dependencies = ["ethon"];
groups = ["default" "test"];
platforms = [];
dependencies = [ "ethon" ];
groups = [
"default"
"test"
];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "0z7gamf6s83wy0yqms3bi4srirn3fc0lc7n65lqanidxcj1xn5qw";
type = "gem";
};
version = "1.4.1";
};
unicode-display_width = {
groups = ["default"];
platforms = [];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "1d0azx233nags5jx3fqyr23qa2rhgzbhv8pxp46dgbg1mpf82xky";
type = "gem";
};
version = "2.5.0";
};
webrick = {
groups = ["default"];
platforms = [];
groups = [ "default" ];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "13qm7s0gr2pmfcl7dxrmq38asaza4w0i2n9my4yzs499j731wh8r";
type = "gem";
};
version = "1.8.1";
};
yell = {
groups = ["default" "test"];
platforms = [];
groups = [
"default"
"test"
];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "1g16kcdhdfvczn7x81jiq6afg3bdxmb73skqjyjlkp5nqcy6y5hx";
type = "gem";
};
version = "2.2.2";
};
zeitwerk = {
groups = ["default" "test"];
platforms = [];
groups = [
"default"
"test"
];
platforms = [ ];
source = {
remotes = ["https://rubygems.org"];
remotes = [ "https://rubygems.org" ];
sha256 = "1m67qmsak3x8ixs8rb971azl3l7wapri65pmbf5z886h46q63f1d";
type = "gem";
};

View file

@ -1,8 +1,11 @@
{ pkgs
, lib
, config
, modulesPath
, ... }: {
{
pkgs,
lib,
config,
modulesPath,
...
}:
{
global = {
id = "d40d05288c1544af94e534eab24768fc";
fs.esp.uuid = "6CEB-765A";
@ -24,13 +27,22 @@
steam.enable = true;
};
imports = lib.pipe ./. [
builtins.readDir
(lib.filterAttrs (n: ty: ty == "regular" && n != "default.nix"))
(lib.mapAttrsToList (n: _: ./${n}))
] ++ [ (modulesPath + "/profiles/qemu-guest.nix") ];
imports =
lib.pipe ./. [
builtins.readDir
(lib.filterAttrs (n: ty: ty == "regular" && n != "default.nix"))
(lib.mapAttrsToList (n: _: ./${n}))
]
++ [ (modulesPath + "/profiles/qemu-guest.nix") ];
boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "usbhid" "sr_mod" "virtio_blk" ];
boot.initrd.availableKernelModules = [
"ahci"
"xhci_pci"
"virtio_pci"
"usbhid"
"sr_mod"
"virtio_blk"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];