My Nix Configuration

[meta] Formatting

Changed files
+274 -166
hosts
modules
modules
overlays
alejandra
mesa
nix-index
sway-unwrapped
users
thehedgehog
+2 -1
hosts/modules/services/buildbot-worker.nix
···
-
{config, ...}: {
services.buildbot-nix.worker = {
enable = true;
name = config.networking.hostName;
···
+
{ config, ... }:
+
{
services.buildbot-nix.worker = {
enable = true;
name = config.networking.hostName;
+5 -2
modules/home/profiles/base/default.nix
···
-
{...}: {
imports = [
../programs/gpg.nix
../xdg.nix
];
programs.home-manager.enable = true;
home.stateVersion = "24.05";
-
home.language = {base = "en_US.utf8";};
manual = {
manpages.enable = false;
html.enable = false;
···
+
{ ... }:
+
{
imports = [
../programs/gpg.nix
../xdg.nix
];
programs.home-manager.enable = true;
home.stateVersion = "24.05";
+
home.language = {
+
base = "en_US.utf8";
+
};
manual = {
manpages.enable = false;
html.enable = false;
+2 -1
modules/home/profiles/cli/default.nix
···
-
{pkgs, ...}: {
imports = [
../programs/bat.nix
../programs/direnv.nix
···
+
{ pkgs, ... }:
+
{
imports = [
../programs/bat.nix
../programs/direnv.nix
+2 -3
modules/home/profiles/desktop/default.nix
···
-
{ pkgs
-
, ...
-
}: {
imports = [
./base.nix
./cli.nix
···
+
{ pkgs, ... }:
+
{
imports = [
./base.nix
./cli.nix
+4 -5
modules/home/profiles/development/default.nix
···
{
-
pkgs,
-
...
-
}: let
-
customPython = pkgs.python311.withPackages (ps: [ps.pip]);
-
in {
home.packages = with pkgs; [
alejandra
any-nix-shell
···
+
{ pkgs, ... }:
+
let
+
customPython = pkgs.python311.withPackages (ps: [ ps.pip ]);
+
in
{
home.packages = with pkgs; [
alejandra
any-nix-shell
+3 -2
modules/home/profiles/gui/default.nix
···
# games ? true,
# social ? true,
...
-
}: {
imports = [
../wayland/sway.nix
···
# ] ++ lib.optionals social [
gajim
tauon
-
(vesktop.override {withSystemVencord=false;})
# pidginWithPlugins
# ] ++ lib.optionals drawing [
krita
···
# games ? true,
# social ? true,
...
+
}:
+
{
imports = [
../wayland/sway.nix
···
# ] ++ lib.optionals social [
gajim
tauon
+
(vesktop.override { withSystemVencord = false; })
# pidginWithPlugins
# ] ++ lib.optionals drawing [
krita
+6 -2
modules/home/profiles/server/default.nix
···
{
-
...
-
}: {imports = [./base.nix ./cli.nix];}
···
+
{ ... }:
{
+
imports = [
+
./base.nix
+
./cli.nix
+
];
+
}
+8 -6
modules/home/wayland/default.nix
···
-
{imports = [
-
./sway.nix
-
./keybindings.nix
-
./waybar.nix
-
./swaylock.nix
-
];}
···
+
{
+
imports = [
+
./sway.nix
+
./keybindings.nix
+
./waybar.nix
+
./swaylock.nix
+
];
+
}
+4 -5
modules/home/wayland/keybindings.nix
···
-
{
-
config,
-
...
-
}: let
inherit (config.wayland.windowManager.sway.config) menu;
mod = config.wayland.windowManager.sway.config.modifier;
term = config.wayland.windowManager.sway.config.terminal;
···
slurp-screen = "\"$(slurp -c -b '#1e1e2e80' -o -r)\" -";
slurp-box = "\"$(slurp -c '#f38ba8ff' -b '#1e1e2e80' -w 1 -d -F 'IBM Plex Mono')\" -";
satty = "satty -f -";
-
in {
wayland.windowManager.sway.config.keybindings = lib.mkOptionDefault {
"${mod}+d" = "${menu}";
"${mod}+Shift+F" = "exec MOZ_DISABLE_RDD_SANDBOX=1 firefox";
···
+
{ config, ... }:
+
let
inherit (config.wayland.windowManager.sway.config) menu;
mod = config.wayland.windowManager.sway.config.modifier;
term = config.wayland.windowManager.sway.config.terminal;
···
slurp-screen = "\"$(slurp -c -b '#1e1e2e80' -o -r)\" -";
slurp-box = "\"$(slurp -c '#f38ba8ff' -b '#1e1e2e80' -w 1 -d -F 'IBM Plex Mono')\" -";
satty = "satty -f -";
+
in
+
{
wayland.windowManager.sway.config.keybindings = lib.mkOptionDefault {
"${mod}+d" = "${menu}";
"${mod}+Shift+F" = "exec MOZ_DISABLE_RDD_SANDBOX=1 firefox";
+29 -18
modules/home/wayland/sway.nix
···
-
{
-
pkgs,
-
config,
-
...
-
}: let
term = config.wayland.windowManager.sway.config.terminal;
homeDir = config.home.homeDirectory;
-
in {
-
imports = [./keybindings.nix ./swaylock.nix ./waybar.nix];
wayland.windowManager.sway = {
enable = true;
package = null;
···
terminal = "${pkgs.kitty}/bin/kitty";
menu = "exec ${term} --detach --class=launcher -o initial_window_height=500 -o initial_window_width=500 -o font_size=16 ${pkgs.sway-launcher-desktop}/bin/sway-launcher-desktop";
modifier = "Mod4";
-
bars = [{command = "true";}];
focus = {
followMouse = true;
mouseWarping = true;
newWindow = "smart";
};
fonts = {
-
names = ["IBM Plex Sans"];
style = "Regular";
size = 12.0;
};
···
smartGaps = false;
};
input = {
-
"type:keyboard" = {xkb_options = "caps:escape";};
-
"type:mouse" = {accel_profile = "flat";};
"type:touchpad" = {
accel_profile = "adaptive";
scroll_factor = "1.5";
···
};
};
output = {
-
eDP-1 = {scale = "1.2";};
-
"*" = {bg = "${homeDir}/bgs/xenia-hangout-mocha.png fill";};
};
startup = [
-
{command = "${pkgs.dex}/bin/dex -a";}
-
{command = "${homeDir}/scripts/unfuck-xdg-portals.fish";}
];
window = {
commands = [
{
command = "inhibit_idle fullscreen";
-
criteria = {class = "Chromium|zoom|Firefox";};
}
{
command = "floating enable, sticky enable, resize set 30 ppt 50 ppt, border pixel 4";
-
criteria = {app_id = "^launcher$";};
}
{
command = "resize set 20 ppt";
-
criteria = {title = "Mumble PTT";};
}
];
};
···
+
{ pkgs, config, ... }:
+
let
term = config.wayland.windowManager.sway.config.terminal;
homeDir = config.home.homeDirectory;
+
in
+
{
wayland.windowManager.sway = {
enable = true;
package = null;
···
terminal = "${pkgs.kitty}/bin/kitty";
menu = "exec ${term} --detach --class=launcher -o initial_window_height=500 -o initial_window_width=500 -o font_size=16 ${pkgs.sway-launcher-desktop}/bin/sway-launcher-desktop";
modifier = "Mod4";
+
bars = [ { command = "true"; } ];
focus = {
followMouse = true;
mouseWarping = true;
newWindow = "smart";
};
fonts = {
+
names = [ "IBM Plex Sans" ];
style = "Regular";
size = 12.0;
};
···
smartGaps = false;
};
input = {
+
"type:keyboard" = {
+
xkb_options = "caps:escape";
+
};
+
"type:mouse" = {
+
accel_profile = "flat";
+
};
"type:touchpad" = {
accel_profile = "adaptive";
scroll_factor = "1.5";
···
};
};
output = {
+
eDP-1 = {
+
scale = "1.2";
+
};
+
"*" = {
+
bg = "${homeDir}/bgs/xenia-hangout-mocha.png fill";
+
};
};
startup = [
+
{ command = "${pkgs.dex}/bin/dex -a"; }
+
{ command = "${homeDir}/scripts/unfuck-xdg-portals.fish"; }
];
window = {
commands = [
{
command = "inhibit_idle fullscreen";
+
criteria = {
+
class = "Chromium|zoom|Firefox";
+
};
}
{
command = "floating enable, sticky enable, resize set 30 ppt 50 ppt, border pixel 4";
+
criteria = {
+
app_id = "^launcher$";
+
};
}
{
command = "resize set 20 ppt";
+
criteria = {
+
title = "Mumble PTT";
+
};
}
];
};
+44 -15
modules/home/wayland/waybar.nix
···
{
-
pkgs,
-
lib,
-
...
-
}: {
programs.waybar = {
enable = true;
catppuccin.enable = false;
···
layer = "top";
position = "top";
height = 32;
-
modules-left = ["sway/workspaces" "sway/mode"];
-
modules-center = ["custom/media"];
modules-right = [
"idle_inhibitor"
"wireplumber"
···
interval = 5;
tooltip = false;
};
-
"memory" = {format = "{}% ";};
"temperature" = {
critical-threshold = 80;
format = "{temperatureC}°C {icon}";
-
format-icons = ["" "" "" "" ""];
};
"backlight" = {
format = "{percent}% {icon}";
-
format-icons = ["󰃚" "󰃛" "󰃜" "󰃝" "󰃞" "󰃟" "󰃠"];
};
"battery" = {
states = {
···
format-charging = "{capacity}% 󰂄";
format-plugged = "{capacity}% ";
format-alt = "{time} {icon}";
-
format-icons = ["󰂎" "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹"];
};
"network" = {
format-wifi = "{essid} <big></big>";
···
"wireplumber" = {
format = "{volume}% {icon}";
format-muted = "󰝟";
-
format-icons = ["" "" ""];
on-click = lib.getExe pkgs.helvum;
};
"custom/media" = {
···
Playing = " ";
};
max-length = 70;
-
exec = ''
-
${
-
lib.getExe pkgs.playerctl
-
} -a metadata --format '{"text": "{{playerName}}: {{artist}} - {{markup_escape(title)}}", "tooltip": "{{playerName}} : {{markup_escape(title)}}", "alt": "{{status}}", "class": "{{status}}"}' -F'';
on-click = "${lib.getExe pkgs.playerctl} play-pause";
};
};
···
+
{ pkgs, lib, ... }:
{
programs.waybar = {
enable = true;
catppuccin.enable = false;
···
layer = "top";
position = "top";
height = 32;
+
modules-left = [
+
"sway/workspaces"
+
"sway/mode"
+
];
+
modules-center = [ "custom/media" ];
modules-right = [
"idle_inhibitor"
"wireplumber"
···
interval = 5;
tooltip = false;
};
+
"memory" = {
+
format = "{}% ";
+
};
"temperature" = {
critical-threshold = 80;
format = "{temperatureC}°C {icon}";
+
format-icons = [
+
""
+
""
+
""
+
""
+
""
+
];
};
"backlight" = {
format = "{percent}% {icon}";
+
format-icons = [
+
"󰃚"
+
"󰃛"
+
"󰃜"
+
"󰃝"
+
"󰃞"
+
"󰃟"
+
"󰃠"
+
];
};
"battery" = {
states = {
···
format-charging = "{capacity}% 󰂄";
format-plugged = "{capacity}% ";
format-alt = "{time} {icon}";
+
format-icons = [
+
"󰂎"
+
"󰁺"
+
"󰁻"
+
"󰁼"
+
"󰁽"
+
"󰁾"
+
"󰁿"
+
"󰂀"
+
"󰂁"
+
"󰂂"
+
"󰁹"
+
];
};
"network" = {
format-wifi = "{essid} <big></big>";
···
"wireplumber" = {
format = "{volume}% {icon}";
format-muted = "󰝟";
+
format-icons = [
+
""
+
""
+
""
+
];
on-click = lib.getExe pkgs.helvum;
};
"custom/media" = {
···
Playing = " ";
};
max-length = 70;
+
exec = ''${lib.getExe pkgs.playerctl} -a metadata --format '{"text": "{{playerName}}: {{artist}} - {{markup_escape(title)}}", "tooltip": "{{playerName}} : {{markup_escape(title)}}", "alt": "{{status}}", "class": "{{status}}"}' -F'';
on-click = "${lib.getExe pkgs.playerctl} play-pause";
};
};
+2 -3
modules/nixos/defaultConfig/bootloader.nix
···
"sctp"
"tipc"
"x25"
-
# Old or rare or insufficiently audited filesystems
-
# or ones I just don't want loaded
"adfs"
"affs"
"befs"
···
"page_alloc.shuffle=1"
# Disable debugfs - not needed
"debugfs=off"
-
];
};
}
···
"sctp"
"tipc"
"x25"
+
# Old or rare or insufficiently audited filesystems
+
# or ones I just don't want loaded
"adfs"
"affs"
"befs"
···
"page_alloc.shuffle=1"
# Disable debugfs - not needed
"debugfs=off"
];
};
}
+9 -5
modules/nixos/defaultConfig/networking.nix
···
-
{pkgs, lib, ...}: {
networking = {
-
networkmanager.plugins = lib.mkForce [
-
pkgs.networkmanager-openvpn
-
];
nameservers = [
"9.9.9.9"
"fd42:d42:d42:53::1"
···
"172.23.0.53"
"172.20.0.53"
];
-
timeServers = ["0.pool.ntp.org" "1.pool.ntp.org" "2.pool.ntp.org" "3.pool.ntp.org"];
resolvconf.extraConfig = ''
name_servers="9.9.9.9 fd42:d42:d42:53::1 fd42:d42:d42:54::1 172.23.0.53 172.20.0.53"
'';
···
+
{ pkgs, lib, ... }:
+
{
networking = {
+
networkmanager.plugins = lib.mkForce [ pkgs.networkmanager-openvpn ];
nameservers = [
"9.9.9.9"
"fd42:d42:d42:53::1"
···
"172.23.0.53"
"172.20.0.53"
];
+
timeServers = [
+
"0.pool.ntp.org"
+
"1.pool.ntp.org"
+
"2.pool.ntp.org"
+
"3.pool.ntp.org"
+
];
resolvconf.extraConfig = ''
name_servers="9.9.9.9 fd42:d42:d42:53::1 fd42:d42:d42:54::1 172.23.0.53 172.20.0.53"
'';
+5 -1
modules/nixos/defaultConfig/nixConfig.nix
···
settings = {
cores = 0;
auto-optimise-store = true;
-
trusted-users = ["root" "thehedgehog" "pyrox"];
trusted-substituters = [
"https://cache.nixos.org"
"https://colmena.cachix.org"
···
settings = {
cores = 0;
auto-optimise-store = true;
+
trusted-users = [
+
"root"
+
"thehedgehog"
+
"pyrox"
+
];
trusted-substituters = [
"https://cache.nixos.org"
"https://colmena.cachix.org"
+2 -1
modules/nixos/defaultConfig/packages.nix
···
-
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
direnv
doggo
···
+
{ pkgs, ... }:
+
{
environment.systemPackages = with pkgs; [
direnv
doggo
+4 -1
modules/nixos/defaultConfig/programs/default.nix
···
{
-
imports = [./ssh.nix ./nh.nix];
programs.fish.enable = true;
}
···
{
+
imports = [
+
./ssh.nix
+
./nh.nix
+
];
programs.fish.enable = true;
}
+2 -1
modules/nixos/defaultConfig/programs/nh.nix
···
-
{inputs, ...}: {
programs.nh = {
enable = true;
package = inputs.nh.packages.x86_64-linux.default;
···
+
{ inputs, ... }:
+
{
programs.nh = {
enable = true;
package = inputs.nh.packages.x86_64-linux.default;
+13 -3
modules/nixos/defaultConfig/secrets/secrets.nix
···
yubi-back = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDTVGi3PItsbUhFgnFZlqo1iUggL4npMg94+9FsyhEPfShcQwJK2/jJzjv5S9KPuk3cY7aoqyVFLbnasSBZPXmscJmOiVNvtWvHoC3QPXvf3IAcVZ5KOLpY2NJlPx/pAb31C6ewtg8v3VlyhL4zEp6M+AGwXX51tFDh2GnYD+7SNF+aMhKCrX63syAhgPy3F8mZ2RIDLAu+lsYlwdpWRkSEv9kcjX/6+3QgUWjfPBaKEeYID22ihSuj7+AiuAt0gM4q0TY/Hpcx+qDLonrIuBnm1hMZDgbv//D0sHIUxJQkGTKTEbkZxoh0Qri7UV/V6l3mETaG40deuemMU7RFY7Khl8RajNZ+9z0FdquS/HCt8+fYQk6eLneJrMIQ1bI4awrtblG3P2Yf2QUu+H3kfCQe44R3WjUugTbNtumVgyQBzl2dzlIVn1pZBeyZy70XCgbaFKkDR8Y/qZiUoZ0afP3vTOXhkn5UBfutTKwUiSGh3S8Ge5YhNgKHWE2eQp1ckEm0IMJV/q5Nsw/yBBXj/kfD8ekz96LQ+gP5JFLq4EaipXI7FM4aZNOBUZU1l/sCEuq7m997nrBucTKqGm7Ho3rq7bgdj4f6GyUJXSMOM1cN61LLrRumZGGTH8WghVL7ligxZyNFcQoudR8jfpf4mrgRxipQOe1A2umvuufMr+l/bw==";
yubi-main = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBBsOIMMZVmleClXfqUMrnmyh8PFuyiJqHKEZ51Xy746";
backup = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCyTiGctsHaTUlRJn2XQ/745dD0UWGWO8W0en8J5rf7BLI8lL/hPUmbNt45vC5754LXcBjnp1t/1FNgiGhvNZIWJpC+elBmhyMhg8z1exRZPD+as7XaH7scnij2vSbSphQFUqH433ggAGe77x5bc7wKFp9n7vj8G1u0JJxMEe1M7kNFY0+ShNtaHna3LxiQOVcW7qVlNKZP8Ol1V7kZLblRADCJMTYOXDIbktA8bbGRfGhbNjJGkL665qz36haYwb2i6A4sC7Y583N8ro8hIDG/ByJqwbl/Sz4rSxkT6G4+OdBvS6sa7TovNXHjmQCculMIltdog7UhgyBsim1sTzxAen3YyFRi1Cz/kLM0oH39m/W4IoMvJcNZCJ3ItLgy+lEVMd87jVOqfuq/hyjHVI0wJtU2Si2HTxv7aKL8gPzqXwbNH+nhkhlQ0ZH8zKVBunOgLDgsmGIky5X/T3bpWZpIoFkOR7AYrId/5dOeGM3pHhHb6woZ3SRubZ43Ah/VdJM=";
-
servers = [prefect thought];
-
personal = [yubi-back yubi-main backup];
all-keys = servers ++ personal;
-
in {"powerdns-secrets.age".publicKeys = all-keys;}
···
yubi-back = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDTVGi3PItsbUhFgnFZlqo1iUggL4npMg94+9FsyhEPfShcQwJK2/jJzjv5S9KPuk3cY7aoqyVFLbnasSBZPXmscJmOiVNvtWvHoC3QPXvf3IAcVZ5KOLpY2NJlPx/pAb31C6ewtg8v3VlyhL4zEp6M+AGwXX51tFDh2GnYD+7SNF+aMhKCrX63syAhgPy3F8mZ2RIDLAu+lsYlwdpWRkSEv9kcjX/6+3QgUWjfPBaKEeYID22ihSuj7+AiuAt0gM4q0TY/Hpcx+qDLonrIuBnm1hMZDgbv//D0sHIUxJQkGTKTEbkZxoh0Qri7UV/V6l3mETaG40deuemMU7RFY7Khl8RajNZ+9z0FdquS/HCt8+fYQk6eLneJrMIQ1bI4awrtblG3P2Yf2QUu+H3kfCQe44R3WjUugTbNtumVgyQBzl2dzlIVn1pZBeyZy70XCgbaFKkDR8Y/qZiUoZ0afP3vTOXhkn5UBfutTKwUiSGh3S8Ge5YhNgKHWE2eQp1ckEm0IMJV/q5Nsw/yBBXj/kfD8ekz96LQ+gP5JFLq4EaipXI7FM4aZNOBUZU1l/sCEuq7m997nrBucTKqGm7Ho3rq7bgdj4f6GyUJXSMOM1cN61LLrRumZGGTH8WghVL7ligxZyNFcQoudR8jfpf4mrgRxipQOe1A2umvuufMr+l/bw==";
yubi-main = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBBsOIMMZVmleClXfqUMrnmyh8PFuyiJqHKEZ51Xy746";
backup = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCyTiGctsHaTUlRJn2XQ/745dD0UWGWO8W0en8J5rf7BLI8lL/hPUmbNt45vC5754LXcBjnp1t/1FNgiGhvNZIWJpC+elBmhyMhg8z1exRZPD+as7XaH7scnij2vSbSphQFUqH433ggAGe77x5bc7wKFp9n7vj8G1u0JJxMEe1M7kNFY0+ShNtaHna3LxiQOVcW7qVlNKZP8Ol1V7kZLblRADCJMTYOXDIbktA8bbGRfGhbNjJGkL665qz36haYwb2i6A4sC7Y583N8ro8hIDG/ByJqwbl/Sz4rSxkT6G4+OdBvS6sa7TovNXHjmQCculMIltdog7UhgyBsim1sTzxAen3YyFRi1Cz/kLM0oH39m/W4IoMvJcNZCJ3ItLgy+lEVMd87jVOqfuq/hyjHVI0wJtU2Si2HTxv7aKL8gPzqXwbNH+nhkhlQ0ZH8zKVBunOgLDgsmGIky5X/T3bpWZpIoFkOR7AYrId/5dOeGM3pHhHb6woZ3SRubZ43Ah/VdJM=";
+
servers = [
+
prefect
+
thought
+
];
+
personal = [
+
yubi-back
+
yubi-main
+
backup
+
];
all-keys = servers ++ personal;
+
in
+
{
+
"powerdns-secrets.age".publicKeys = all-keys;
+
}
+28 -27
modules/nixos/defaultConfig/security.nix
···
-
{pkgs, ...}: {
# Everything should use doas instead of sudo
# Sudo is kept enabled for tools that ~can't~ won't use doas.
security = {
-
doas = {
-
enable = true;
-
wheelNeedsPassword = false;
-
};
-
# Needed for nixos-rebuild to work properly
-
sudo.enable = true;
-
# TPM configuration
-
tpm2 = {
-
enable = true;
-
abrmd.enable = true;
-
applyUdevRules = true;
-
pkcs11.enable = true;
-
};
-
# Set up extra certificates for DN42 specifically
-
pki.certificateFiles = [
-
(pkgs.fetchurl {
-
url = "https://dn42.burble.com/burble-dn42-ca.pem";
-
name = "burble-dn42-ca.pem";
-
sha256 = "0wcrjkiav018bpl87583g0v60clx3jg3wfyf8d9h8zdkwcb16b2g";
-
})
-
(pkgs.fetchurl {
-
url = "https://aur.archlinux.org/cgit/aur.git/plain/dn42.crt?h=ca-certificates-dn42&id=646f7effb290adf25c7e9fea3b41bf055522ba29";
-
name = "dn42.crt";
-
sha256 = "sha256-wsMeC9/tlppSNZGrqfZFLAjv3AMj1KwIAWeh2XBpiYs=";
-
})
-
];
};
}
···
+
{ pkgs, ... }:
+
{
# Everything should use doas instead of sudo
# Sudo is kept enabled for tools that ~can't~ won't use doas.
security = {
+
doas = {
+
enable = true;
+
wheelNeedsPassword = false;
+
};
+
# Needed for nixos-rebuild to work properly
+
sudo.enable = true;
+
# TPM configuration
+
tpm2 = {
+
enable = true;
+
abrmd.enable = true;
+
applyUdevRules = true;
+
pkcs11.enable = true;
+
};
+
# Set up extra certificates for DN42 specifically
+
pki.certificateFiles = [
+
(pkgs.fetchurl {
+
url = "https://dn42.burble.com/burble-dn42-ca.pem";
+
name = "burble-dn42-ca.pem";
+
sha256 = "0wcrjkiav018bpl87583g0v60clx3jg3wfyf8d9h8zdkwcb16b2g";
+
})
+
(pkgs.fetchurl {
+
url = "https://aur.archlinux.org/cgit/aur.git/plain/dn42.crt?h=ca-certificates-dn42&id=646f7effb290adf25c7e9fea3b41bf055522ba29";
+
name = "dn42.crt";
+
sha256 = "sha256-wsMeC9/tlppSNZGrqfZFLAjv3AMj1KwIAWeh2XBpiYs=";
+
})
+
];
};
}
+6 -1
modules/nixos/defaultConfig/services/default.nix
···
-
{imports = [./ntp.nix ./tailscale.nix];}
···
+
{
+
imports = [
+
./ntp.nix
+
./tailscale.nix
+
];
+
}
+5 -1
modules/nixos/defaultConfig/services/ntp.nix
···
-
{services.ntp = {enable = true;};}
···
+
{
+
services.ntp = {
+
enable = true;
+
};
+
}
+5 -1
modules/nixos/defaultConfig/services/tailscale.nix
···
-
{services.tailscale = {enable = true;};}
···
+
{
+
services.tailscale = {
+
enable = true;
+
};
+
}
+2 -2
modules/nixos/defaultConfig/ssh.nix
···
{
-
age.identityPaths = ["/etc/ssh/ssh_host_ed25519_key"];
services.openssh = {
enable = false;
allowSFTP = false;
···
];
};
};
-
networking.firewall.allowedTCPPorts = [22];
}
···
{
+
age.identityPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
services.openssh = {
enable = false;
allowSFTP = false;
···
];
};
};
+
networking.firewall.allowedTCPPorts = [ 22 ];
}
+7 -5
modules/nixos/defaultConfig/users.nix
···
{
-
lib,
-
pkgs,
-
...
-
}: {
users.users = {
pyrox = {
isNormalUser = true;
description = lib.mkDefault "Pyrox";
-
extraGroups = ["networkmanager" "wheel" "input" "wireshark"];
};
};
# Set default editor
···
+
{ lib, pkgs, ... }:
{
users.users = {
pyrox = {
isNormalUser = true;
description = lib.mkDefault "Pyrox";
+
extraGroups = [
+
"networkmanager"
+
"wheel"
+
"input"
+
"wireshark"
+
];
};
};
# Set default editor
+12 -5
modules/nixos/dn42Pingfinder/default.nix
···
pkgs,
lib,
...
-
}: {
options.services."dn42-pingfinder" = {
uuidFile = lib.mkOption {
type = lib.types.nullOr lib.types.path;
···
config = lib.mkIf (config.services."dn42-pingfinder".uuidFile != null) {
systemd.services.dn42-pingfinder = {
-
path = with pkgs; [curl inetutils which];
script = ''
export UUID=$(cat ${config.services."dn42-pingfinder".uuidFile})
exec ${pkgs.nur.repos.xddxdd.dn42-pingfinder}/bin/dn42-pingfinder
···
RuntimeDirectory = "dn42-pingfinder";
WorkingDirectory = "/run/dn42-pingfinder";
};
-
unitConfig = {After = "network.target";};
};
systemd.timers.dn42-pingfinder = {
-
wantedBy = ["timers.target"];
-
partOf = ["dn42-pingfinder.service"];
timerConfig = {
OnCalendar = "*:0/5";
Persistent = true;
···
pkgs,
lib,
...
+
}:
+
{
options.services."dn42-pingfinder" = {
uuidFile = lib.mkOption {
type = lib.types.nullOr lib.types.path;
···
config = lib.mkIf (config.services."dn42-pingfinder".uuidFile != null) {
systemd.services.dn42-pingfinder = {
+
path = with pkgs; [
+
curl
+
inetutils
+
which
+
];
script = ''
export UUID=$(cat ${config.services."dn42-pingfinder".uuidFile})
exec ${pkgs.nur.repos.xddxdd.dn42-pingfinder}/bin/dn42-pingfinder
···
RuntimeDirectory = "dn42-pingfinder";
WorkingDirectory = "/run/dn42-pingfinder";
};
+
unitConfig = {
+
After = "network.target";
+
};
};
systemd.timers.dn42-pingfinder = {
+
wantedBy = [ "timers.target" ];
+
partOf = [ "dn42-pingfinder.service" ];
timerConfig = {
OnCalendar = "*:0/5";
Persistent = true;
+42 -35
modules/nixos/forgejoRunner/default.nix
···
-
{pkgs, config, lib, ...}: let
-
runnerBase = {
-
enable = true;
-
url = "https://git.pyrox.dev";
-
labels = [
-
"default:docker://git.pyrox.dev/pyrox/flake-base:latest"
-
"nodejs:docker://node:20"
-
"nodejs-alpine:docker://node:20-alpine"
-
"nodejs-lts:docker://node:20"
-
"nodejs-lts:docker://node:20-alpine"
-
"nodejs-latest:docker://node:21"
-
"nodejs-latest-alpine:docker://node:21-alpine"
-
"alpine:docker://alpine:3.19"
-
];
-
settings = {
-
log.level = "info";
-
runner = {
-
insecure = false;
-
capacity = 4;
-
};
-
cache = {
-
enabled = true;
-
dir = "/var/lib/forgejo/runners/cache/";
-
host = "";
-
port = 0;
-
};
-
container = {
-
# Automatically create a network for containers
-
network = "";
-
enable_ipv6 = false;
};
};
-
};
-
cfg = config.pyrox.services.forgejo-runner;
-
in {
options.pyrox.services.forgejo-runner = {
enable = lib.mkEnableOption "Forgejo Actions Runner configuration";
tokenFile = lib.mkOption {
···
package = pkgs.forgejo-actions-runner;
instances = {
"${config.networking.hostName}-default" = runnerBase // {
-
inherit (cfg) tokenFile;
-
name = "${config.networking.hostName}";
};
};
};
···
+
{
+
pkgs,
+
config,
+
lib,
+
...
+
}:
+
let
+
runnerBase = {
+
enable = true;
+
url = "https://git.pyrox.dev";
+
labels = [
+
"default:docker://git.pyrox.dev/pyrox/flake-base:latest"
+
"nodejs:docker://node:20"
+
"nodejs-alpine:docker://node:20-alpine"
+
"nodejs-lts:docker://node:20"
+
"nodejs-lts:docker://node:20-alpine"
+
"nodejs-latest:docker://node:21"
+
"nodejs-latest-alpine:docker://node:21-alpine"
+
"alpine:docker://alpine:3.19"
+
];
+
settings = {
+
log.level = "info";
+
runner = {
+
insecure = false;
+
capacity = 4;
+
};
+
cache = {
+
enabled = true;
+
dir = "/var/lib/forgejo/runners/cache/";
+
host = "";
+
port = 0;
+
};
+
container = {
+
# Automatically create a network for containers
+
network = "";
+
enable_ipv6 = false;
+
};
};
};
+
cfg = config.pyrox.services.forgejo-runner;
+
in
+
{
options.pyrox.services.forgejo-runner = {
enable = lib.mkEnableOption "Forgejo Actions Runner configuration";
tokenFile = lib.mkOption {
···
package = pkgs.forgejo-actions-runner;
instances = {
"${config.networking.hostName}-default" = runnerBase // {
+
inherit (cfg) tokenFile;
+
name = "${config.networking.hostName}";
};
};
};
+1 -3
overlays/alejandra/default.nix
···
# deadnix: skip
-
{ inputs, ...}: final: prev: {
-
alejandra = inputs.alejandra.defaultPackage.${prev.system};
-
}
···
# deadnix: skip
+
{ inputs, ... }: final: prev: { alejandra = inputs.alejandra.defaultPackage.${prev.system}; }
+2 -3
overlays/mesa/default.nix
···
# deadnix: skip
-
{ inputs, ...}: final: prev: {
-
inherit (inputs.nixpkgs-mesa.legacyPackages.${prev.system}) mesa directx-headers;
-
}
···
# deadnix: skip
+
{ inputs, ... }:
+
final: prev: { inherit (inputs.nixpkgs-mesa.legacyPackages.${prev.system}) mesa directx-headers; }
+1 -1
overlays/nix-index/default.nix
···
# deadnix: skip
-
{inputs, ...}: final: prev: { inherit (inputs.nix-index.packages.${prev.system}) nix-index; }
···
# deadnix: skip
+
{ inputs, ... }: final: prev: { inherit (inputs.nix-index.packages.${prev.system}) nix-index; }
+5 -2
overlays/sway-unwrapped/default.nix
···
# deadnix: skip
-
{ ... }: final: prev: let
inherit (prev.lib.strings) mesonOption mesonEnable;
-
in {
sway-unwrapped = prev.sway-unwrapped.overrideAttrs {
mesonFlags = [
(mesonOption "sd-bus-provider" "libsystemd")
···
# deadnix: skip
+
{ ... }:
+
final: prev:
+
let
inherit (prev.lib.strings) mesonOption mesonEnable;
+
in
+
{
sway-unwrapped = prev.sway-unwrapped.overrideAttrs {
mesonFlags = [
(mesonOption "sd-bus-provider" "libsystemd")
+12 -5
users/thehedgehog/default.nix
···
-
{pkgs, ...}: {
users.users.thehedgehog = {
description = "The Hedgehog";
isNormalUser = true;
-
extraGroups = ["adbusers" "wheel" "networkmanager" "video" "docker" "wireshark" "input"];
hashedPassword = "$6$6EtuZhVOJdfI9DYP$1Qnd7R8qdN.E5yE2kDQCNg2zgJ5cIjNBKsIW/qJgb8wcKlUpIoVg/fEKvBkAgCiLyojVG2kzfu4J9LR8rA8a2/";
shell = pkgs.fish;
openssh = {
···
../../home/programs/ssh/yubikey-back.pub
../../home/programs/ssh/backup.pub
];
-
keys = [
-
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP532AB5mkNvE29MkDDY8HEf8ZdktGWiI0PzLrvbmLQe"
-
];
};
};
};
···
+
{ pkgs, ... }:
+
{
users.users.thehedgehog = {
description = "The Hedgehog";
isNormalUser = true;
+
extraGroups = [
+
"adbusers"
+
"wheel"
+
"networkmanager"
+
"video"
+
"docker"
+
"wireshark"
+
"input"
+
];
hashedPassword = "$6$6EtuZhVOJdfI9DYP$1Qnd7R8qdN.E5yE2kDQCNg2zgJ5cIjNBKsIW/qJgb8wcKlUpIoVg/fEKvBkAgCiLyojVG2kzfu4J9LR8rA8a2/";
shell = pkgs.fish;
openssh = {
···
../../home/programs/ssh/yubikey-back.pub
../../home/programs/ssh/backup.pub
];
+
keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP532AB5mkNvE29MkDDY8HEf8ZdktGWiI0PzLrvbmLQe" ];
};
};
};