chore: nix fmt
This commit is contained in:
parent
a80bd4ed3b
commit
7266fff06e
128 changed files with 3402 additions and 2013 deletions
|
@ -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}");
|
||||
|
|
|
@ -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 = [ ];
|
||||
|
|
|
@ -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";
|
||||
}
|
||||
|
|
|
@ -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))
|
||||
]
|
||||
);
|
||||
}
|
||||
|
|
|
@ -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"; };
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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";
|
||||
}
|
||||
|
|
|
@ -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 = [ ];
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
{ pkgs
|
||||
, config
|
||||
, ...}: let
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
host = "src.514fpv.io";
|
||||
in {
|
||||
in
|
||||
{
|
||||
services.forgejo = {
|
||||
enable = true;
|
||||
lfs.enable = true;
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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" = {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 = ''
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -20,5 +20,8 @@
|
|||
};
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 80 443 ];
|
||||
networking.firewall.allowedTCPPorts = [
|
||||
80
|
||||
443
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
{ lib
|
||||
, ... }: with lib; {
|
||||
{
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
{
|
||||
services.photoprism = {
|
||||
enable = true;
|
||||
originalsPath = "/run/storage/aerial/raw";
|
||||
|
|
|
@ -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" = {
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
{ pkgs
|
||||
, config
|
||||
, ...}: {
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
services.postgresql = {
|
||||
enable = true;
|
||||
dataDir = "/nix/persist/service/postgresql/${config.services.postgresql.package.psqlSchema}";
|
||||
|
|
|
@ -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"; };
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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 = [ ];
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -20,5 +20,8 @@
|
|||
};
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 80 443 ];
|
||||
networking.firewall.allowedTCPPorts = [
|
||||
80
|
||||
443
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
{ pkgs
|
||||
, config
|
||||
, ...}: {
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
services.postgresql = {
|
||||
enable = true;
|
||||
dataDir = "/nix/persist/service/postgresql/${config.services.postgresql.package.psqlSchema}";
|
||||
|
|
|
@ -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 = [ ];
|
||||
|
|
|
@ -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 = [ ];
|
||||
|
|
|
@ -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 = [ ];
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
{ config
|
||||
, ... }: {
|
||||
{
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
boot.extraModulePackages = [
|
||||
(config.boot.kernelPackages.callPackage ./package.nix { })
|
||||
];
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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 = [ ];
|
||||
|
|
|
@ -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 = [ ];
|
||||
|
|
|
@ -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 = [ ];
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
{ lib
|
||||
, ... }: {
|
||||
{
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
{
|
||||
global = {
|
||||
id = "63795fdf54e048dcbefcbc525ec3779d";
|
||||
auth.openssh.enable = true;
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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
|
||||
];
|
||||
}
|
||||
|
|
|
@ -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 = ''
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
|
|
|
@ -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 = [ ];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue