My Nix Configuration

[meta] Start transition to snowfall-lib

This commit will not work, it's simply to ensure my work is saved to
git.pyrox.dev.

Changed files
+2746 -701
data
homes
hosts
common
modules
lib
modules
home
nixos
dn42-pingfinder
forgejo-runner
packages
caddy
go-jamming
olympus
patches
pkgs
shells
default
systems
x86_64-linux
marvin
prefect
thought
zaphod
-4
data/default.nix
···
-
{
-
hosts = builtins.fromTOML (builtins.readFile ./hosts.toml);
-
services = builtins.fromTOML (builtins.readFile ./services.toml);
-
}
data/hosts.toml lib/data/hosts.toml
-3
data/packages.nix
···
-
{inputs, pkgs, ...}: {
-
nvim = inputs.nvim.packages.${pkgs.system}.neovim;
-
}
data/services.toml lib/data/services.toml
+92 -1
flake.lock
···
"type": "github"
}
},
+
"flake-compat_3": {
+
"flake": false,
+
"locked": {
+
"lastModified": 1650374568,
+
"narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
+
"owner": "edolstra",
+
"repo": "flake-compat",
+
"rev": "b4a34015c698c7793d592d66adbab377907a2be8",
+
"type": "github"
+
},
+
"original": {
+
"owner": "edolstra",
+
"repo": "flake-compat",
+
"type": "github"
+
}
+
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
···
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
+
"type": "github"
+
},
+
"original": {
+
"owner": "numtide",
+
"repo": "flake-utils",
+
"type": "github"
+
}
+
},
+
"flake-utils-plus": {
+
"inputs": {
+
"flake-utils": "flake-utils_2"
+
},
+
"locked": {
+
"lastModified": 1715533576,
+
"narHash": "sha256-fT4ppWeCJ0uR300EH3i7kmgRZnAVxrH+XtK09jQWihk=",
+
"owner": "gytis-ivaskevicius",
+
"repo": "flake-utils-plus",
+
"rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f",
+
"type": "github"
+
},
+
"original": {
+
"owner": "gytis-ivaskevicius",
+
"repo": "flake-utils-plus",
+
"rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f",
+
"type": "github"
+
}
+
},
+
"flake-utils_2": {
+
"inputs": {
+
"systems": "systems"
+
},
+
"locked": {
+
"lastModified": 1694529238,
+
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
+
"owner": "numtide",
+
"repo": "flake-utils",
+
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
"type": "github"
},
"original": {
···
"nur": "nur",
"nvim": "nvim",
"prismlauncher": "prismlauncher",
-
"systems": "systems",
+
"snowfall": "snowfall",
+
"systems": "systems_2",
"wayland": "wayland"
},
···
"type": "github"
},
+
"snowfall": {
+
"inputs": {
+
"flake-compat": "flake-compat_3",
+
"flake-utils-plus": "flake-utils-plus",
+
"nixpkgs": [
+
"nixpkgs"
+
]
+
},
+
"locked": {
+
"lastModified": 1716675292,
+
"narHash": "sha256-7TFvVE4HR/b65/0AAhewYHEJzUXxIEJn82ow5bCkrDo=",
+
"owner": "snowfallorg",
+
"repo": "lib",
+
"rev": "5d6e9f235735393c28e1145bec919610b172a20f",
+
"type": "github"
+
},
+
"original": {
+
"owner": "snowfallorg",
+
"repo": "lib",
+
"type": "github"
+
}
+
},
"systems": {
+
"locked": {
+
"lastModified": 1681028828,
+
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+
"owner": "nix-systems",
+
"repo": "default",
+
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+
"type": "github"
+
},
+
"original": {
+
"owner": "nix-systems",
+
"repo": "default",
+
"type": "github"
+
}
+
},
+
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+125 -116
flake.nix
···
netrc-file = "/home/thehedgehog/.netrc";
};
description = "PyroNet machines and services";
+
inputs = {
+
snowfall = {
+
url = "github:snowfallorg/lib";
+
inputs.nixpkgs.follows = "nixpkgs";
+
};
+
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
nixpkgs-mesa.url = "github:K900/nixpkgs/mesa-24.1";
nixpkgs-nvim.url = "github:nixos/nixpkgs?rev=d5786c1b5dd2d560724b78f3ce51f1f4ef52d053";
···
};
};
-
outputs = inputs @ {
-
self,
-
nixpkgs,
-
nixpkgs-mesa,
-
alejandra,
-
buildbot-nix,
-
ctp,
-
golink,
-
hardware,
-
iceshrimp,
-
# lanzaboote,
-
lix-module,
-
mailserver,
-
mkshell-minimal,
-
neovim,
-
nix-index,
-
nix-index-database,
-
nixd,
-
nur,
-
my-pkgs,
-
prismlauncher,
-
wayland,
-
...
-
}: let
+
outputs = inputs @ {self, ...}: let
+
# Overlay alejandra
alejandra-overlay = final: prev: {
-
alejandra = alejandra.defaultPackage.${prev.system};
+
alejandra = inputs.alejandra.defaultPackage.${prev.system};
+
};
+
# Overlay custom mesa version
+
mesa-overlay = final: prev: {
+
inherit (inputs.nixpkgs-mesa.legacyPackages.${prev.system}) mesa directx-headers;
};
+
# Overlay my custom packages as pkgs.my-pkgs
my-pkgs2 = final: prev: {my-pkgs = self.packages."${prev.system}";};
+
# Overlay nix-index package
nix-index-overlay = final: prev: {
-
inherit (nix-index.packages.${prev.system}) nix-index;
+
inherit (inputs.nix-index.packages.${prev.system}) nix-index;
};
-
mesa-overlay = final: prev: {
-
inherit (nixpkgs-mesa.legacyPackages.${prev.system}) mesa directx-headers;
-
};
-
overlays = [
-
mesa-overlay
-
(import ./overlays/sway.nix)
-
my-pkgs.overlays.cinny
-
my-pkgs2
-
alejandra-overlay
-
golink.overlay
-
# lanzaboote.overlays.default
-
lix-module.overlays.default
-
neovim.overlay
-
nixd.overlays.default
-
nix-index-overlay
-
nur.overlay
-
prismlauncher.overlays.default
-
wayland.overlays.default
-
];
-
pkgs = import nixpkgs {
-
inherit overlays;
-
localSystem = "x86_64-linux";
-
config = {
+
in inputs.snowfall.mkFlake {
+
inherit inputs;
+
src = ./.;
+
namespace = "py";
+
+
# Nixpkgs configuration
+
channels-config = {
allowUnfree = true;
-
joypixels.acceptLicense = true;
-
permittedInsecurePackages = ["electron-19.0.7" "openssl-1.1.1t" "nodejs-16.20.0"];
};
-
};
-
mkShell = mkshell-minimal pkgs;
+
# Overlays for Nixpkgs.
+
overlays = [
+
alejandra-overlay
+
mesa-overlay
+
my-pkgs2
+
nix-index-overlay
+
(import ./overlays/sway.nix)
+
inputs.my-pkgs.overlays.cinny
+
inputs.golink.overlay
+
# inputs.lanzaboote.overlays.default
+
inputs.lix-module.overlays.default
+
inputs.neovim.overlay
+
inputs.nixd.overlays.default
+
inputs.nur.overlay
+
inputs.prismlauncher.overlays.default
+
inputs.wayland.overlays.default
+
];
-
lib = nixpkgs.lib;
-
data = {
-
inherit (import ./data) hosts services;
-
packages = import ./data/packages.nix {inherit pkgs inputs;};
-
};
-
inherit (import ./lib { inherit self lib pkgs inputs data; }) myLib;
+
# Home-manager configurations
+
homes = {
+
# Default modules for all homes
+
modules = with inputs; [
+
nix-index-database.hmModules.nix-index
+
ctp.homeManagerModules.catppuccin
+
];
+
};
-
in rec {
-
packages.${pkgs.system} = {
-
caddy = pkgs.callPackage ./pkgs/caddyBin.nix {};
-
go-jamming = pkgs.callPackage ./pkgs/go-jamming.nix {};
-
nerdfont-symbols = pkgs.callPackage ./pkgs/nerdfont-symbols.nix {};
-
olympus = pkgs.callPackage ./pkgs/olympus.nix {};
-
customGit = pkgs.git.override { withLibsecret = true; withSsh = true; };
-
};
+
# NixOS Configurations
+
systems = {
+
modules.nixos = with inputs; [
+
self.nixosModules.default
+
ctp.nixosModules.catppuccin
+
lix-module.nixosModules.default
+
agenix.nixosModules.default
+
];
-
nixosModules = {
-
default = import ./modules/pyrox.nix;
-
dn42-pingfinder = import ./modules/dn42-pingfinder.nix;
-
};
+
systems.hosts.prefect.modules = with inputs; [
+
self.nixosModules.dn42-pingfinder
+
];
-
nixosConfigurations.marvin = myLib.hosts.mkHost {
-
hostname = "marvin";
-
coreCount = 12;
-
extraModules = [
-
iceshrimp.nixosModules.default
-
golink.nixosModules.default
-
buildbot-nix.nixosModules.buildbot-master
-
buildbot-nix.nixosModules.buildbot-worker
-
nixosModules.default
-
];
-
};
+
systems.hosts.marvin.modules = with inputs; [
+
self.nixosModules.forgejo-runner
+
iceshrimp.nixosModules.default
+
golink.nixosModules.default
+
buildbot-nix.nixosModules.buildbot-master
+
buildbot-nix.nixosModules.buildbot-worker
+
];
+
};
-
nixosConfigurations.prefect = myLib.hosts.mkHost {
-
hostname = "prefect";
-
coreCount = 4;
-
extraModules = [
-
mailserver.nixosModule
-
self.nixosModules.dn42-pingfinder
-
];
+
outputs-builder = channels: let
+
pkgs = channels.nixpkgs;
+
in {
+
# Define default packages to use everywhere
+
packages = {
+
nvim = inputs.nvim.packages.${pkgs.system}.neovim;
+
customGit = pkgs.git.override { withLibsecret = true; withSsh = true; };
+
};
+
formatter = pkgs.nixfmt-rfc-style;
+
};
};
-
-
nixosConfigurations.thought = myLib.hosts.mkHost {
-
hostname = "thought";
-
coreCount = 3;
-
extraModules = [
-
self.nixosModules.dn42-pingfinder
-
];
-
users = ["pyrox"];
-
};
-
-
nixosConfigurations.zaphod = myLib.hosts.mkHost {
-
hostname = "zaphod";
-
profile = "desktop";
-
coreCount = 8;
-
extraModules = [
-
hardware.nixosModules.framework-16-7040-amd
-
];
-
users = ["thehedgehog"];
-
};
-
-
devShells.${pkgs.system}.default = mkShell {
-
buildInputs = [
-
# deploy-rs.packages.${system}.default
-
# colmena.packages.${system}.colmena
-
];
-
};
-
};
+
# in rec {
+
# nixosConfigurations.marvin = myLib.hosts.mkHost {
+
# hostname = "marvin";
+
# coreCount = 12;
+
# extraModules = [
+
# inputs.iceshrimp.nixosModules.default
+
# inputs.golink.nixosModules.default
+
# inputs.buildbot-nix.nixosModules.buildbot-master
+
# inputs.buildbot-nix.nixosModules.buildbot-worker
+
# nixosModules.default
+
# ];
+
# };
+
#
+
# nixosConfigurations.prefect = myLib.hosts.mkHost {
+
# hostname = "prefect";
+
# coreCount = 4;
+
# extraModules = [
+
# inputs.mailserver.nixosModule
+
# self.nixosModules.dn42-pingfinder
+
# ];
+
# };
+
#
+
# nixosConfigurations.thought = myLib.hosts.mkHost {
+
# hostname = "thought";
+
# coreCount = 3;
+
# extraModules = [
+
# self.nixosModules.dn42-pingfinder
+
# ];
+
# users = ["pyrox"];
+
# };
+
#
+
# nixosConfigurations.zaphod = myLib.hosts.mkHost {
+
# hostname = "zaphod";
+
# profile = "desktop";
+
# coreCount = 8;
+
# extraModules = [
+
# inputs.hardware.nixosModules.framework-16-7040-amd
+
# ];
+
# users = ["thehedgehog"];
+
# };
+
#
+
# devShells.${pkgs.system}.default = mkShell {
+
# buildInputs = [
+
# # inputs.deploy-rs.packages.${pkgs.system}.default
+
# # inputs.colmena.packages.${pkgs.system}.colmena
+
# ];
+
# };
+
# };
}
+7
homes/x86_64-linux/pyrox/files/distrobox-config.nix
···
+
{
+
xdg.configFile."distrobox/distrobox.conf" = {
+
text = ''
+
distrobox_sudo_program="doas"
+
'';
+
};
+
}
+5
homes/x86_64-linux/pyrox/files/pamKeys.nix
···
+
{
+
xdg.configFile."Yubico/u2f_keys".text = ''
+
thehedgehog:iC1dk7d+DYFX60wpkDlWdwNpkRLXmML7iDjxh4TRXe8OhsAb2pgKiY6tVLHeZIK3WOVA1DuWU8rWlHdma3eqJg==,NdBJTVCvOamU35ad3fJRv6A6YZQIYrojcVk9a8WYMVvTtKO+xyIeBvunlidHv4Zb0rYrOvK6u7Gb4N5x6T6FIQ==,es256,+presence:juWx2IphhNuHZHiv8nG3i2WWTyR5A+CWp5iHz2AmE7aj3b3rgj85Gl1PMpmZlvlwDgbCP+dlcP5PPzTFloB3Ow==,FEXBkP0PzZSURoIbLuGiRRHFIcSiqEz/ieNPRqRY/hqLJ4AsvGwJ1xdIX7F8qAQuMSp8m7usuBLS4u+4FGg3Ng==,es256,+presence
+
'';
+
}
+42
homes/x86_64-linux/pyrox/files/rbw-gc.nix
···
+
{pkgs, ...}: {
+
home.file."bin/git-credential-rbw".text = ''
+
#${pkgs.bash}/bin/bash
+
+
declare -A params
+
+
if [ "x$1" == "xget" ]; then
+
read line
+
while [ -n "$line" ]; do
+
key=''${line%%=*}
+
value=''${line#*=}
+
params[$key]=$value
+
read line
+
done
+
+
if [ "''${params['protocol']}" != "xhttps" ]; then
+
exit
+
fi
+
+
if [ -z "''${params["host"]}" ]; then
+
exit
+
fi
+
+
rbw ls > /dev/null 2>&1
+
if [ $? -ne 0 ]; then
+
echo "Please login to rbw to use git credential helper" > /dev/stderr
+
exit
+
fi
+
+
user=`rbw get --full ''${params["host"]} | grep "Username:" | cut -d' ' -f2-`
+
pass=`rbw get ''${params["host"]}`
+
+
if [ "x$user" == "x" ] || [ "x$pass" == "x" ]; then
+
echo "Couldn't find host in rbw DB." > /dev/stderr
+
exit
+
fi
+
+
echo username=$user
+
echo password=$pass
+
fi
+
'';
+
}
+9
homes/x86_64-linux/pyrox/files/ssh-auth-signers.nix
···
+
{
+
home.file.".ssh/authorized_signatures".text = ''
+
hedgehog@mrhedgehog.xyz 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==
+
hedgehog@mrhedgehog.xyz ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCyTiGctsHaTUlRJn2XQ/745dD0UWGWO8W0en8J5rf7BLI8lL/hPUmbNt45vC5754LXcBjnp1t/1FNgiGhvNZIWJpC+elBmhyMhg8z1exRZPD+as7XaH7scnij2vSbSphQFUqH433ggAGe77x5bc7wKFp9n7vj8G1u0JJxMEe1M7kNFY0+ShNtaHna3LxiQOVcW7qVlNKZP8Ol1V7kZLblRADCJMTYOXDIbktA8bbGRfGhbNjJGkL665qz36haYwb2i6A4sC7Y583N8ro8hIDG/ByJqwbl/Sz4rSxkT6G4+OdBvS6sa7TovNXHjmQCculMIltdog7UhgyBsim1sTzxAen3YyFRi1Cz/kLM0oH39m/W4IoMvJcNZCJ3ItLgy+lEVMd87jVOqfuq/hyjHVI0wJtU2Si2HTxv7aKL8gPzqXwbNH+nhkhlQ0ZH8zKVBunOgLDgsmGIky5X/T3bpWZpIoFkOR7AYrId/5dOeGM3pHhHb6woZ3SRubZ43Ah/VdJM=
+
me@thehedgehog.me 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==
+
me@thehedgehog.me ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCyTiGctsHaTUlRJn2XQ/745dD0UWGWO8W0en8J5rf7BLI8lL/hPUmbNt45vC5754LXcBjnp1t/1FNgiGhvNZIWJpC+elBmhyMhg8z1exRZPD+as7XaH7scnij2vSbSphQFUqH433ggAGe77x5bc7wKFp9n7vj8G1u0JJxMEe1M7kNFY0+ShNtaHna3LxiQOVcW7qVlNKZP8Ol1V7kZLblRADCJMTYOXDIbktA8bbGRfGhbNjJGkL665qz36haYwb2i6A4sC7Y583N8ro8hIDG/ByJqwbl/Sz4rSxkT6G4+OdBvS6sa7TovNXHjmQCculMIltdog7UhgyBsim1sTzxAen3YyFRi1Cz/kLM0oH39m/W4IoMvJcNZCJ3ItLgy+lEVMd87jVOqfuq/hyjHVI0wJtU2Si2HTxv7aKL8gPzqXwbNH+nhkhlQ0ZH8zKVBunOgLDgsmGIky5X/T3bpWZpIoFkOR7AYrId/5dOeGM3pHhHb6woZ3SRubZ43Ah/VdJM=
+
me@thehedgehog.me ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBK97n2SgV/U1mLzxcaEDl85iF5D3jm7xboZ+S01+CbM/8zxVoWyjVHCqTwDcrLwP0c5Z51BNj7U0UkGIgR4zTSM=
+
'';
+
}
+28
homes/x86_64-linux/pyrox/files/tokyo-night.json
···
+
{
+
"wallpaper": "~/.config/wpg/wallpapers/nix-snowflake.png",
+
"alpha": "100",
+
+
"special": {
+
"background": "#1A1B26",
+
"foreground": "#A9B1D6",
+
"cursor": "#A9B1D6"
+
},
+
"colors": {
+
"color0": "#1A1B26",
+
"color1": "#F7768E",
+
"color2": "#73DACA",
+
"color3": "#E0AF68",
+
"color4": "#7AA2F7",
+
"color5": "#BB9AF7",
+
"color6": "#7DCFFF",
+
"color7": "#A9B1D6",
+
"color8": "#414868",
+
"color9": "#F7768E",
+
"color10": "#73DACA",
+
"color11": "#E0AF68",
+
"color12": "#7AA2F7",
+
"color13": "#BB9AF7",
+
"color14": "#7DCFFF",
+
"color15": "#A9B1D6"
+
}
+
}
+6
homes/x86_64-linux/pyrox/programs/bat.nix
···
+
{
+
programs.bat = {
+
enable = true;
+
catppuccin.enable = true;
+
};
+
}
+6
homes/x86_64-linux/pyrox/programs/chromium.nix
···
+
{pkgs, ...}: {
+
programs.chromium = {
+
enable = true;
+
package = pkgs.ungoogled-chromium;
+
};
+
}
+34
homes/x86_64-linux/pyrox/programs/direnv.nix
···
+
{
+
programs.direnv = {
+
enable = true;
+
enableBashIntegration = true;
+
enableNushellIntegration = true;
+
enableZshIntegration = true;
+
nix-direnv.enable = true;
+
stdlib = ''
+
layout_poetry() {
+
PYPROJECT_TOML="\$\{PYPROJECT_TOML:-pyproject.toml}"
+
if [[ ! -f "$PYPROJECT_TOML" ]]; then
+
log_status "No pyproject.toml found. Executing \`poetry init\` to create a \`$PYPROJECT_TOML\` first."
+
poetry init
+
fi
+
+
if [[ -d ".venv" ]]; then
+
VIRTUAL_ENV="$(pwd)/.venv"
+
else
+
VIRTUAL_ENV=$(poetry env info --path 2>/dev/null ; true)
+
fi
+
+
if [[ -z $VIRTUAL_ENV || ! -d $VIRTUAL_ENV ]]; then
+
log_status "No virtual environment exists. Executing \`poetry install\` to create one."
+
poetry install
+
VIRTUAL_ENV=$(poetry env info --path)
+
fi
+
+
PATH_add "$VIRTUAL_ENV/bin"
+
export POETRY_ACTIVE=1
+
export VIRTUAL_ENV
+
}
+
'';
+
};
+
}
+14
homes/x86_64-linux/pyrox/programs/emacs/default.nix
···
+
{pkgs, ...}: {
+
programs.emacs = {
+
enable = true;
+
package =
+
(pkgs.emacsPackagesFor pkgs.emacs-pgtk).emacsWithPackages
+
(epkgs: [epkgs.vterm]);
+
};
+
services.emacs = {
+
enable = true;
+
package =
+
(pkgs.emacsPackagesFor pkgs.emacs-pgtk).emacsWithPackages
+
(epkgs: [epkgs.vterm]);
+
};
+
}
+9
homes/x86_64-linux/pyrox/programs/email.nix
···
+
{
+
pkgs,
+
lib,
+
...
+
}: {
+
programs.msmtp.enable = true;
+
programs.mbsync.enable = true;
+
programs.mu.enable = true;
+
}
+46
homes/x86_64-linux/pyrox/programs/firefox/default.nix
···
+
{pkgs, ...}: {
+
imports = [./extraPrefs.nix ./policies.nix];
+
programs.firefox = {
+
enable = true;
+
package = pkgs.firefox.override {
+
cfg = {
+
smartcardSupport = true;
+
pipewireSupport = true;
+
ffmpegSupport = true;
+
};
+
};
+
profiles = {
+
default = {
+
id = 0;
+
isDefault = true;
+
name = "Default";
+
extensions = with pkgs.nur.repos.rycee.firefox-addons; [
+
augmented-steam
+
bitwarden
+
clearurls
+
consent-o-matic
+
cookie-autodelete
+
darkreader
+
don-t-fuck-with-paste
+
enhanced-github
+
facebook-container
+
header-editor
+
istilldontcareaboutcookies
+
kagi-search
+
libredirect
+
lovely-forks
+
multi-account-containers
+
privacy-pass
+
protondb-for-steam
+
pywalfox
+
reddit-moderator-toolbox
+
refined-github
+
sourcegraph
+
steam-database
+
stylus
+
ublock-origin
+
];
+
};
+
};
+
};
+
}
+171
homes/x86_64-linux/pyrox/programs/firefox/extraPrefs.nix
···
+
{
+
programs.firefox.profiles.default.extraConfig = ''
+
user_pref("accessibility.typeaheadfind.flashBar", 0);
+
user_pref("app.normandy.api_url", "");
+
user_pref("app.normandy.enabled", false);
+
user_pref("app.normandy.first_run", false);
+
user_pref("app.shield.optoutstudies.enabled", false);
+
user_pref("app.update.auto", false);
+
user_pref("app.update.backgroundErrors", 1);
+
user_pref("app.update.disable_button.showUpdateHistory", false);
+
user_pref("beacon.enabled", false);
+
user_pref("browser.aboutConfig.showWarning", false);
+
user_pref("browser.bookmarks.addedImportButton", true);
+
user_pref("browser.contentblocking.report.hide_vpn_banner", true);
+
user_pref("browser.contentblocking.report.lockwise.enabled", false);
+
user_pref("browser.contentblocking.report.show_mobile_app", false);
+
user_pref("browser.contentblocking.report.social.url", "");
+
user_pref("browser.formfill.enable", false);
+
user_pref("browser.laterrun.bookkeeping.profileCreationTime", 0);
+
user_pref("browser.laterrun.bookkeeping.sessionCount", 0);
+
user_pref("browser.newtabpage.activity-stream.discoverystream.enabled", false);
+
user_pref("browser.newtabpage.activity-stream.discoverystream.endpointSpocsClear", "");
+
user_pref("browser.newtabpage.activity-stream.discoverystream.endpoints", "");
+
user_pref("browser.newtabpage.activity-stream.discoverystream.personalization.enabled", false);
+
user_pref("browser.newtabpage.activity-stream.discoverystream.readTime.enabled", false);
+
user_pref("browser.newtabpage.activity-stream.discoverystream.rec.impressions", "{}");
+
user_pref("browser.newtabpage.activity-stream.discoverystream.recentSaves.enabled", false);
+
user_pref("browser.newtabpage.activity-stream.discoverystream.saveToPocketCard.enabled", false);
+
user_pref("browser.newtabpage.activity-stream.discoverystream.sendToPocket.enabled", false);
+
user_pref("browser.newtabpage.activity-stream.discoverystream.spoc.impressions", "{}");
+
user_pref("browser.newtabpage.activity-stream.feeds.recommendationprovider", false);
+
user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false);
+
user_pref("browser.newtabpage.activity-stream.impressionId", "{}");
+
user_pref("browser.newtabpage.activity-stream.section.highlights.includePocket", false);
+
user_pref("browser.newtabpage.activity-stream.telemetry", false);
+
user_pref("browser.newtabpage.activity-stream.telemetry.structuredIngestion.endpoint", "");
+
user_pref("browser.newtabpage.activity-stream.telemetry.ut.events", false);
+
user_pref("browser.partnerlink.attributionURL", "");
+
user_pref("browser.partnerlink.campaign.topsites", "");
+
user_pref("browser.ping-centre.telemetry", false);
+
user_pref("browser.places.importBookmarksHTML", false);
+
user_pref("browser.pocket.enabled", false);
+
user_pref("browser.safebrowsing.downloads.enabled", false);
+
user_pref("browser.safebrowsing.downloads.remote.block_dangerous", false);
+
user_pref("browser.safebrowsing.downloads.remote.block_dangerous_host", false);
+
user_pref("browser.safebrowsing.downloads.remote.block_potentially_unwanted", false);
+
user_pref("browser.safebrowsing.downloads.remote.block_uncommon", false);
+
user_pref("browser.safebrowsing.downloads.remote.enabled", false);
+
user_pref("browser.safebrowsing.downloads.remote.url", "");
+
user_pref("browser.safebrowsing.malware.enabled", false);
+
user_pref("browser.safebrowsing.phishing.enabled", false);
+
user_pref("browser.safebrowsing.provider.google.advisoryURL", "");
+
user_pref("browser.safebrowsing.provider.google.gethashURL", "");
+
user_pref("browser.safebrowsing.provider.google.gethashURL", "");
+
user_pref("browser.safebrowsing.provider.google.reportURL", "");
+
user_pref("browser.safebrowsing.provider.google.updateURL", "");
+
user_pref("browser.safebrowsing.provider.google4.advisoryURL", "");
+
user_pref("browser.safebrowsing.provider.google4.dataSharingURL", "");
+
user_pref("browser.safebrowsing.provider.google4.gethashURL", "");
+
user_pref("browser.safebrowsing.provider.google4.lists", "");
+
user_pref("browser.safebrowsing.provider.google4.reportURL", "");
+
user_pref("browser.safebrowsing.provider.google4.updateURL", "");
+
user_pref("browser.safebrowsing.provider.mozilla.gethashURL", "");
+
user_pref("browser.safebrowsing.provider.mozilla.lastupdatetime", "");
+
user_pref("browser.safebrowsing.provider.mozilla.lists", "");
+
user_pref("browser.safebrowsing.provider.mozilla.lists.base", "");
+
user_pref("browser.safebrowsing.provider.mozilla.lists.content", "");
+
user_pref("browser.safebrowsing.provider.mozilla.nextupdatetime", "");
+
user_pref("browser.safebrowsing.provider.mozilla.updateURL", "");
+
user_pref("browser.search.serpEventTelemetry.enabled", false);
+
user_pref("browser.send_pings", false);
+
user_pref("browser.tabs.warnOnClose", true);
+
user_pref("browser.urlbar.eventTelemetry.enabled", false);
+
user_pref("browser.urlbar.quicksuggest.dataCollection.enabled", false);
+
user_pref("browser.urlbar.suggest.addons", false);
+
user_pref("browser.urlbar.suggest.bookmark", true);
+
user_pref("browser.urlbar.suggest.calculator", true);
+
user_pref("browser.urlbar.suggest.clipboard", false);
+
user_pref("browser.urlbar.suggest.engines", false);
+
user_pref("browser.urlbar.suggest.history", true);
+
user_pref("browser.urlbar.suggest.mdn", false);
+
user_pref("browser.urlbar.suggest.openpage", true);
+
user_pref("browser.urlbar.suggest.pocket", false);
+
user_pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false);
+
user_pref("browser.urlbar.suggest.quicksuggest.sponsored", false);
+
user_pref("browser.urlbar.suggest.topsites", false);
+
user_pref("browser.urlbar.suggest.trending", false);
+
user_pref("browser.urlbar.suggest.weather", false);
+
user_pref("datareporting.healthreport.infoURL", "");
+
user_pref("datareporting.policy.firstRunURL", "");
+
user_pref("device.sensors.ambientLight.enabled", false);
+
user_pref("device.sensors.enabled", false);
+
user_pref("device.sensors.motion.enabled", false);
+
user_pref("device.sensors.orientation.enabled", false);
+
user_pref("device.sensors.proximity.enabled", false);
+
user_pref("device.sensors.test.events", false);
+
user_pref("devtools.chrome.enabled", true);
+
user_pref("doh-rollout.uri", "");
+
user_pref("dom.battery.enabled", false);
+
user_pref("dom.event.clipboardevents.enabled", false);
+
user_pref("dom.security.unexpected_system_load_telemetry_enabled", false);
+
user_pref("dom.webgpu.enabled", true);
+
user_pref("extensions.formautofill.addresses.enabled", false);
+
user_pref("extensions.formautofill.creditCards.enabled", false);
+
user_pref("extensions.htmlaboutaddons.recommendations.enabled", false);
+
user_pref("extensions.pocket.enabled", false);
+
user_pref("extensions.pocket.showHome", false);
+
user_pref("extensions.pocket.site", "");
+
user_pref("extensions.recommendations.privacyPolicyUrl", "");
+
user_pref("extensions.recommendations.themeRecommendationUrl", "");
+
user_pref("extensions.ui.dictionary.hidden", true);
+
user_pref("extensions.update.autoUpdateDefault", false);
+
user_pref("extensions.webextensions.restrictedDomains", "");
+
user_pref("layers.acceleration.disabled", false);
+
user_pref("network.predictor.enabled", false);
+
user_pref("network.prefetch-next", false);
+
user_pref("network.trr.confirmation_telemetry_enabled", false);
+
user_pref("privacy.clearOnShutdown.downloads", true);
+
user_pref("privacy.donottrackheader.enabled", false);
+
user_pref("privacy.resistFingerprinting.block_mozAddonManager", true);
+
user_pref("privacy.trackingprotection.origin_telemetry.enabled", false);
+
user_pref("remote.prefs.recommended", false);
+
user_pref("security.app_menu.recordEventTelemetry", false);
+
user_pref("security.certerrors.recordEventTelemetry", false);
+
user_pref("security.identitypopup.recordEventTelemetry", false);
+
user_pref("security.protectionspopup.recordEventTelemetry", false);
+
user_pref("services.settings.server", "");
+
user_pref("signon.autofillForms", false);
+
user_pref("signon.generation.enabled", false);
+
user_pref("signon.management.page.breach-alerts.enabled", false);
+
user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
+
user_pref("toolkit.telemetry.bhrPing.enabled", false);
+
user_pref("toolkit.telemetry.cachedClientID", "");
+
user_pref("toolkit.telemetry.dap_enabled", false);
+
user_pref("toolkit.telemetry.dap_helper", "");
+
user_pref("toolkit.telemetry.dap_leader", "");
+
user_pref("toolkit.telemetry.dap_task1_enabled", false);
+
user_pref("toolkit.telemetry.debugSlowSql", false);
+
user_pref("toolkit.telemetry.firstShutdownPing.enabled", false);
+
user_pref("toolkit.telemetry.geckoview.streaming", false);
+
user_pref("toolkit.telemetry.newProfilePing.enabled", false);
+
user_pref("toolkit.telemetry.pioneer-new-studies-available", false);
+
user_pref("toolkit.telemetry.previousBuildID", "");
+
user_pref("toolkit.telemetry.reportingpolicy.firstRun", "");
+
user_pref("toolkit.telemetry.server", "");
+
user_pref("toolkit.telemetry.server_owner", "");
+
user_pref("toolkit.telemetry.shutdownPingSender.backgroundtask.enabled", false);
+
user_pref("toolkit.telemetry.shutdownPingSender.enabled", false);
+
user_pref("toolkit.telemetry.shutdownPingSender.enabledFirstSession", false);
+
user_pref("toolkit.telemetry.testing.overrideProductsCheck", false);
+
user_pref("toolkit.telemetry.unified", false);
+
user_pref("toolkit.telemetry.updatePing.enabled", "");
+
user_pref("ui.systemUsesDarkTheme", 1);
+
user_pref("webgl.force-enabled", true);
+
user_pref("xpinstall.signatures.required", false);
+
'' +
+
# Fastfox tweaks
+
''
+
user_pref("media.memory_cache_max_size", 65536);
+
user_pref("browser.cache.jsbc_compression_level", 3);
+
user_pref("image.mem.decode_bytes_at_a_time", 32768);
+
user_pref("network.http.max-connections", 1800);
+
user_pref("network.http.max-persistent-connections-per-server", 10);
+
user_pref("network.http.max-urgent-start-excessive-connections-per-host", 5);
+
user_pref("network.dns.max_high_priority_threads", 8);
+
user_pref("network.ssl_tokens_cache_capacity", 10240);
+
user_pref("network.dns.disablePrefetch", true);
+
user_pref("browser.places.speculativeConnect.enabled", false);
+
user_pref("browser.urlbar.speculativeConnect.enabled", false);
+
'';
+
}
+47
homes/x86_64-linux/pyrox/programs/firefox/policies.nix
···
+
{
+
programs.firefox.policies = {
+
AppAutoUpdate = false;
+
DisableAppUpdate = true;
+
DisableFirefoxAccounts = true;
+
DisableFirefoxStudies = true;
+
DisableMasterPasswordCreation = true;
+
DisablePocket = true;
+
DisableTelemetry = true;
+
DNSOverHTTPS = {
+
Enabled = false;
+
ProviderURL = "https://dns.nextdns.io/36e7f7";
+
Locked = true;
+
};
+
ExtensionUpdate = false;
+
FirefoxHome = {
+
Search = true;
+
TopSites = false;
+
SponsoredTopSites = false;
+
Highlights = false;
+
Pocket = false;
+
SponsoredPocket = false;
+
Snippets = false;
+
Locked = true;
+
};
+
Homepage = {
+
URL = "https://dash.pyrox.dev";
+
Locked = true;
+
StartPage = "homepage-locked";
+
};
+
ManualAppUpdateOnly = true;
+
OfferToSaveLogins = false;
+
OfferToSaveLoginsDefault = false;
+
OverrideFirstRunPage = "";
+
OverridePostUpdatePage = "";
+
PasswordManagerEnabled = false;
+
SearchBar = "unified";
+
ShowHomeButton = false;
+
UserMessaging = {
+
WhatsNew = false;
+
ExtensionRecommendations = false;
+
FeatureRecommendations = false;
+
UrlbarInterventions = false;
+
SkipOnboarding = false;
+
};
+
};
+
}
+45
homes/x86_64-linux/pyrox/programs/fish.nix
···
+
{pkgs, lib, ...}: let
+
inherit (lib) getExe;
+
in {
+
programs.fish = {
+
enable = true;
+
catppuccin.enable = true;
+
shellAliases = {
+
"lg" = getExe pkgs.lazygit;
+
"cat" = getExe pkgs.bat;
+
"gls" = "${getExe pkgs.eza} -lah@ --icons --git --git-ignore --no-user";
+
"ls" = "${getExe pkgs.eza} --icons -a";
+
"ll" = "${getExe pkgs.eza} --icons -lah@";
+
"lt" = "${getExe pkgs.eza} --icons --tree -a";
+
"tt" = getExe pkgs.taskwarrior-tui;
+
"dig" = getExe pkgs.doggo;
+
};
+
shellInit = ''
+
set -x GPG_TTY (tty)
+
set -x SSH_AUTH_SOCK (gpgconf --list-dirs agent-ssh-socket)
+
gpgconf --launch gpg-agent
+
'';
+
+
interactiveShellInit = ''
+
fzf_configure_bindings --directory=\cf --git_log=\cl --git_status=\cg \
+
--history=\cr --variables=\cv --processes=\cp
+
any-nix-shell fish --info-right | source
+
'';
+
+
plugins = [
+
{
+
name = "nix-env";
+
src = pkgs.fetchFromGitHub {
+
owner = "lilyball";
+
repo = "nix-env.fish";
+
rev = "7b65bd228429e852c8fdfa07601159130a818cfa";
+
sha256 = "sha256-RG/0rfhgq6aEKNZ0XwIqOaZ6K5S4+/Y5EEMnIdtfPhk=";
+
};
+
}
+
{
+
inherit (pkgs.fishPlugins.fzf-fish) src;
+
name = "fzf-fish";
+
}
+
];
+
};
+
}
+8
homes/x86_64-linux/pyrox/programs/fzf.nix
···
+
{
+
programs.fzf = {
+
enable = true;
+
enableBashIntegration = true;
+
enableZshIntegration = true;
+
catppuccin.enable = true;
+
};
+
}
+12
homes/x86_64-linux/pyrox/programs/gh.nix
···
+
{pkgs, data, lib, ...}: {
+
programs.gh = {
+
enable = true;
+
gitCredentialHelper.enable = true;
+
settings = {
+
editor = lib.getExe data.packages.nvim;
+
git_protocol = "https";
+
browser = "${pkgs.firefox-wayland}/bin/firefox";
+
prompt = "enabled";
+
};
+
};
+
}
+73
homes/x86_64-linux/pyrox/programs/git.nix
···
+
{pkgs, lib, data, ...}:
+
{
+
programs.git = {
+
enable = true;
+
package = pkgs.my-pkgs.customGit;
+
aliases = {
+
a = "add -p";
+
co = "checkout";
+
cob = "checkout -b";
+
f = "fetch -p";
+
c = "commit";
+
p = "push";
+
ba = "branch -a";
+
bd = "branch -d";
+
bD = "branch -D";
+
d = "diff";
+
dc = "diff --cached";
+
ds = "diff --staged";
+
r = "restore";
+
rs = "restore --staged";
+
st = "status -sb";
+
# reset
+
soft = "reset --soft";
+
hard = "reset --hard";
+
s1ft = "soft HEAD~1";
+
h1rd = "hard HEAD~1";
+
# logging
+
lg = "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit";
+
plog = "log --graph --pretty='format:%C(red)%d%C(reset) %C(yellow)%h%C(reset) %ar %C(green)%aN%C(reset) %s'";
+
tlog = "log --stat --since='1 Day Ago' --graph --pretty=oneline --abbrev-commit --date=relative";
+
rank = "shortlog -sn --no-merges";
+
# delete merged branches
+
bdm = "!git branch --merged | grep -v '*' | xargs -n 1 git branch -d";
+
wt = "worktree";
+
};
+
delta = {
+
enable = true;
+
options.line-numbers = true;
+
};
+
extraConfig = {
+
core.editor = lib.getExe data.packages.nvim;
+
init.defaultBranch = "main";
+
pull.rebase = false;
+
# gpg.format = "ssh";
+
gpg."ssh".allowedSignersFile = "~/.ssh/authorized_signatures";
+
"credential \"https://git.pyrox.dev\"".username = "pyrox";
+
credential.helper = "rbw";
+
};
+
lfs = {
+
enable = true;
+
skipSmudge = false;
+
};
+
signing = {
+
key = "0xFE1D8A7D620C611F";
+
signByDefault = true;
+
};
+
userEmail = "pyrox@pyrox.dev";
+
userName = "Pyrox";
+
};
+
programs.lazygit = {
+
enable = true;
+
catppuccin.enable = true;
+
settings = {
+
gui.nerdFontsVersion = "3";
+
gui.showRandomTip = false;
+
gui.theme.selectedLineBgColor = ["default"];
+
git.paging = {
+
pager = "${lib.getExe pkgs.delta} --dark --paging=never";
+
colorArg = "always";
+
};
+
};
+
};
+
}
+39
homes/x86_64-linux/pyrox/programs/gpg.nix
···
+
{pkgs, ...}: {
+
programs.gpg = {
+
enable = true;
+
settings = {
+
personal-cipher-preferences = "AES256 AES192 AES";
+
personal-digest-preferences = "SHA512 SHA384 SHA256";
+
personal-compress-preferences = "ZLIB BZIP2 ZIP Uncompressed";
+
default-preference-list = "SHA512 SHA384 SHA256 AES256 AES192 AES ZLIB BZIP2 ZIP Uncompressed";
+
cert-digest-algo = "SHA512";
+
s2k-digest-algo = "SHA512";
+
s2k-cipher-algo = "AES256";
+
charset = "utf-8";
+
fixed-list-mode = true;
+
no-comments = true;
+
no-emit-version = true;
+
no-greeting = true;
+
keyid-format = "0xlong";
+
list-options = "show-uid-validity";
+
verify-options = "show-uid-validity";
+
with-fingerprint = true;
+
with-key-origin = true;
+
require-cross-certification = true;
+
no-symkey-cache = true;
+
use-agent = true;
+
throw-keyids = true;
+
default-key = "0x7D5107866B1C6752";
+
trusted-key = "0x7D5107866B1C6752";
+
keyserver = "hkps://keys.openpgp.org";
+
};
+
scdaemonSettings = {
+
card-timeout = "60";
+
pcsc-shared = true;
+
# shared-access = true;
+
disable-ccid = true;
+
pcsc-driver = "${pkgs.pcsclite.out}/lib/libpcsclite.so";
+
reader-port = "Yubico Yubi";
+
};
+
};
+
}
+32
homes/x86_64-linux/pyrox/programs/helix.nix
···
+
{
+
programs.helix = {
+
enable = true;
+
catppuccin.enable = true;
+
catppuccin.useItalics = true;
+
settings = {
+
editor = {
+
line-number = "absolute";
+
mouse = false;
+
auto-save = true;
+
true-color = true;
+
bufferline = "multiple";
+
cursor-shape = {
+
normal = "block";
+
insert = "bar";
+
select = "underline";
+
};
+
lsp = {
+
display-messages = true;
+
auto-signature-help = true;
+
display-signature-help-docs = true;
+
};
+
whitespace.render = {
+
space = "none";
+
tab = "all";
+
newline = "all";
+
};
+
indent-guides.render = true;
+
};
+
};
+
};
+
}
+49
homes/x86_64-linux/pyrox/programs/kitty.nix
···
+
{pkgs, lib, data, ...}: {
+
programs.kitty = {
+
enable = true;
+
catppuccin.enable = true;
+
font.name = "BlexMono Nerd Font";
+
font.size = 14;
+
settings = {
+
# Font settings
+
bold_font = "BlexMono Nerd Font Bold";
+
italic_font = "BlexMono Nerd Font Italic";
+
bold_italic_font = "BlexMono Nerd Font Bold Italic";
+
# Cursor Settings
+
scrollback_lines = 10000;
+
wheel_scroll_multiplier = 3;
+
touch_scroll_multiplier = 2;
+
scrollback_pager = "${lib.getExe pkgs.page}";
+
cursor_shape = "block";
+
# Mouse settings
+
mouse_hide_wait = "0.5";
+
open_url_with = "default";
+
strip_trailing_spaces = "smart";
+
focus_follows_mouse = true;
+
# Perf settings
+
repaint_delay = 16;
+
sync_to_monitor = true;
+
# Terminal Bell settings
+
enable_audio_bell = false;
+
# Window settings
+
hide_window_decorations = true;
+
# Tab Bar settings
+
tab_bar_edge = "bottom";
+
tab_bar_margin_width = 0;
+
tab_bar_margin_height = "0 0";
+
tab_bar_style = "powerline";
+
tab_bar_min_tabs = 2;
+
+
shell = "fish";
+
editor = "${lib.getExe data.packages.nvim}";
+
allow_remote_control = "socket-only";
+
listen_on = "unix:/tmp/mykitty";
+
update_check_interval = 0;
+
allow_hyperlinks = true;
+
shell_integration = "no-cursor";
+
term = "xterm-kitty";
+
remember_window_size = "no";
+
linux_display_server = "wayland";
+
};
+
};
+
}
+9
homes/x86_64-linux/pyrox/programs/navi.nix
···
+
{
+
programs.navi = {
+
enable = true;
+
enableBashIntegration = true;
+
enableFishIntegration = true;
+
enableZshIntegration = true;
+
settings = {finder = {command = "fzf";};};
+
};
+
}
+12
homes/x86_64-linux/pyrox/programs/ncmpcpp.nix
···
+
{
+
programs.ncmpcpp = {
+
enable = true;
+
settings = {
+
visualizer_data_source = "/tmp/mpd.fifo";
+
visualizer_output_name = "viz";
+
visualizer_in_stereo = "yes";
+
visualizer_type = "ellipse";
+
visualizer_look = "+.";
+
};
+
};
+
}
+25
homes/x86_64-linux/pyrox/programs/neovim.nix
···
+
{
+
pkgs,
+
lib,
+
data,
+
...
+
}: {
+
programs.neovim = {
+
enable = true;
+
package = data.packages.nvim;
+
viAlias = true;
+
vimAlias = true;
+
vimdiffAlias = true;
+
withNodeJs = false;
+
withPython3 = false;
+
withRuby = false;
+
extraPackages = [
+
pkgs.fd
+
pkgs.ffmpegthumbnailer
+
pkgs.fontpreview
+
pkgs.gcc
+
pkgs.poppler
+
pkgs.ueberzug
+
];
+
};
+
}
+8
homes/x86_64-linux/pyrox/programs/nix-index.nix
···
+
{
+
programs.nix-index = {
+
enable = true;
+
enableBashIntegration = true;
+
enableFishIntegration = true;
+
enableZshIntegration = true;
+
};
+
}
+369
homes/x86_64-linux/pyrox/programs/nushell/config.nu
···
+
source ~/.zoxide.nu
+
source ~/.cache/starship/init.nu
+
+
source /home/thehedgehog/.cache/starship/init.nu
+
+
let-env config = ($env | default {} config).config
+
let-env config = ($env.config | default {} hooks)
+
let-env config = ($env.config | update hooks ($env.config.hooks | default [] pre_prompt))
+
let-env config = ($env.config | update hooks.pre_prompt ($env.config.hooks.pre_prompt | append {
+
code: "
+
let direnv = (direnv export json | from json)
+
let direnv = if ($direnv | length) == 1 { $direnv } else { {} }
+
$direnv | load-env
+
"
+
}))
+
+
let-env config = {
+
ls: {
+
use_ls_colors: true # use the LS_COLORS environment variable to colorize output
+
clickable_links: true # enable or disable clickable links. Your terminal has to support links.
+
}
+
rm: {
+
always_trash: false # always act as if -t was given. Can be overridden with -p
+
}
+
cd: {
+
abbreviations: false # allows `cd s/o/f` to expand to `cd some/other/folder`
+
}
+
table: {
+
mode: rounded # basic, compact, compact_double, light, thin, with_love, rounded, reinforced, heavy, none, other
+
index_mode: always # "always" show indexes, "never" show indexes, "auto" = show indexes when a table has "index" column
+
trim: {
+
methodology: wrapping # wrapping or truncating
+
wrapping_try_keep_words: true # A strategy used by the 'wrapping' methodology
+
truncating_suffix: "..." # A suffix used by the 'truncating' methodology
+
}
+
}
+
+
explore: {
+
help_banner: true
+
exit_esc: true
+
+
command_bar_text: '#C4C9C6'
+
# command_bar: {fg: '#C4C9C6' bg: '#223311' }
+
+
status_bar_background: {fg: '#1D1F21' bg: '#C4C9C6' }
+
# status_bar_text: {fg: '#C4C9C6' bg: '#223311' }
+
+
highlight: {bg: 'yellow' fg: 'black' }
+
+
status: {
+
# warn: {bg: 'yellow', fg: 'blue'}
+
# error: {bg: 'yellow', fg: 'blue'}
+
# info: {bg: 'yellow', fg: 'blue'}
+
}
+
+
try: {
+
# border_color: 'red'
+
# highlighted_color: 'blue'
+
+
# reactive: false
+
}
+
+
table: {
+
split_line: '#404040'
+
+
cursor: true
+
+
line_index: true
+
line_shift: true
+
line_head_top: true
+
line_head_bottom: true
+
+
show_head: true
+
show_index: true
+
+
# selected_cell: {fg: 'white', bg: '#777777'}
+
# selected_row: {fg: 'yellow', bg: '#C1C2A3'}
+
# selected_column: blue
+
+
# padding_column_right: 2
+
# padding_column_left: 2
+
+
# padding_index_left: 2
+
# padding_index_right: 1
+
}
+
+
config: {
+
cursor_color: {bg: 'yellow' fg: 'black' }
+
+
# border_color: white
+
# list_color: green
+
}
+
}
+
+
history: {
+
max_size: 10000 # Session has to be reloaded for this to take effect
+
sync_on_enter: true # Enable to share history between multiple sessions, else you have to close the session to write history to file
+
file_format: "plaintext" # "sqlite" or "plaintext"
+
}
+
completions: {
+
case_sensitive: false # set to true to enable case-sensitive completions
+
quick: true # set this to false to prevent auto-selecting completions when only one remains
+
partial: true # set this to false to prevent partial filling of the prompt
+
algorithm: "prefix" # prefix or fuzzy
+
external: {
+
enable: true # set to false to prevent nushell looking into $env.PATH to find more suggestions, `false` recommended for WSL users as this look up my be very slow
+
max_results: 100 # setting it lower can improve completion performance at the cost of omitting some options
+
completer: null # check 'carapace_completer' above as an example
+
}
+
}
+
filesize: {
+
metric: true # true => KB, MB, GB (ISO standard), false => KiB, MiB, GiB (Windows standard)
+
format: "auto" # b, kb, kib, mb, mib, gb, gib, tb, tib, pb, pib, eb, eib, zb, zib, auto
+
}
+
cursor_shape: {
+
emacs: line # block, underscore, line (line is the default)
+
vi_insert: block # block, underscore, line (block is the default)
+
vi_normal: underscore # block, underscore, line (underscore is the default)
+
}
+
color_config: $dark_theme # if you want a light theme, replace `$dark_theme` to `$light_theme`
+
use_grid_icons: true
+
footer_mode: "25" # always, never, number_of_rows, auto
+
float_precision: 2 # the precision for displaying floats in tables
+
# buffer_editor: "emacs" # command that will be used to edit the current line buffer with ctrl+o, if unset fallback to $env.EDITOR and $env.VISUAL
+
use_ansi_coloring: true
+
edit_mode: emacs # emacs, vi
+
shell_integration: true # enables terminal markers and a workaround to arrow keys stop working issue
+
# true or false to enable or disable the welcome banner at startup
+
show_banner: true
+
render_right_prompt_on_last_line: false # true or false to enable or disable right prompt to be rendered on last line of the prompt.
+
+
hooks: {
+
pre_prompt: [{
+
null # replace with source code to run before the prompt is shown
+
}]
+
pre_execution: [{
+
null # replace with source code to run before the repl input is run
+
}]
+
env_change: {
+
PWD: [{|before, after|
+
null # replace with source code to run if the PWD environment is different since the last repl input
+
}]
+
}
+
display_output: {
+
if (term size).columns >= 100 { table -e } else { table }
+
}
+
}
+
menus: [
+
# Configuration for default nushell menus
+
# Note the lack of source parameter
+
{
+
name: completion_menu
+
only_buffer_difference: false
+
marker: "| "
+
type: {
+
layout: columnar
+
columns: 4
+
col_width: 20 # Optional value. If missing all the screen width is used to calculate column width
+
col_padding: 2
+
}
+
style: {
+
text: green
+
selected_text: green_reverse
+
description_text: yellow
+
}
+
}
+
{
+
name: history_menu
+
only_buffer_difference: true
+
marker: "? "
+
type: {
+
layout: list
+
page_size: 10
+
}
+
style: {
+
text: green
+
selected_text: green_reverse
+
description_text: yellow
+
}
+
}
+
{
+
name: help_menu
+
only_buffer_difference: true
+
marker: "? "
+
type: {
+
layout: description
+
columns: 4
+
col_width: 20 # Optional value. If missing all the screen width is used to calculate column width
+
col_padding: 2
+
selection_rows: 4
+
description_rows: 10
+
}
+
style: {
+
text: green
+
selected_text: green_reverse
+
description_text: yellow
+
}
+
}
+
# Example of extra menus created using a nushell source
+
# Use the source field to create a list of records that populates
+
# the menu
+
{
+
name: commands_menu
+
only_buffer_difference: false
+
marker: "# "
+
type: {
+
layout: columnar
+
columns: 4
+
col_width: 20
+
col_padding: 2
+
}
+
style: {
+
text: green
+
selected_text: green_reverse
+
description_text: yellow
+
}
+
source: { |buffer, position|
+
$nu.scope.commands
+
| where name =~ $buffer
+
| each { |it| {value: $it.name description: $it.usage} }
+
}
+
}
+
{
+
name: vars_menu
+
only_buffer_difference: true
+
marker: "# "
+
type: {
+
layout: list
+
page_size: 10
+
}
+
style: {
+
text: green
+
selected_text: green_reverse
+
description_text: yellow
+
}
+
source: { |buffer, position|
+
$nu.scope.vars
+
| where name =~ $buffer
+
| sort-by name
+
| each { |it| {value: $it.name description: $it.type} }
+
}
+
}
+
{
+
name: commands_with_description
+
only_buffer_difference: true
+
marker: "# "
+
type: {
+
layout: description
+
columns: 4
+
col_width: 20
+
col_padding: 2
+
selection_rows: 4
+
description_rows: 10
+
}
+
style: {
+
text: green
+
selected_text: green_reverse
+
description_text: yellow
+
}
+
source: { |buffer, position|
+
$nu.scope.commands
+
| where name =~ $buffer
+
| each { |it| {value: $it.name description: $it.usage} }
+
}
+
}
+
]
+
keybindings: [
+
{
+
name: completion_menu
+
modifier: none
+
keycode: tab
+
mode: [emacs vi_normal vi_insert]
+
event: {
+
until: [
+
{ send: menu name: completion_menu }
+
{ send: menunext }
+
]
+
}
+
}
+
{
+
name: completion_previous
+
modifier: shift
+
keycode: backtab
+
mode: [emacs, vi_normal, vi_insert] # Note: You can add the same keybinding to all modes by using a list
+
event: { send: menuprevious }
+
}
+
{
+
name: history_menu
+
modifier: control
+
keycode: char_r
+
mode: emacs
+
event: { send: menu name: history_menu }
+
}
+
{
+
name: next_page
+
modifier: control
+
keycode: char_x
+
mode: emacs
+
event: { send: menupagenext }
+
}
+
{
+
name: undo_or_previous_page
+
modifier: control
+
keycode: char_z
+
mode: emacs
+
event: {
+
until: [
+
{ send: menupageprevious }
+
{ edit: undo }
+
]
+
}
+
}
+
{
+
name: yank
+
modifier: control
+
keycode: char_y
+
mode: emacs
+
event: {
+
until: [
+
{edit: pastecutbufferafter}
+
]
+
}
+
}
+
{
+
name: unix-line-discard
+
modifier: control
+
keycode: char_u
+
mode: [emacs, vi_normal, vi_insert]
+
event: {
+
until: [
+
{edit: cutfromlinestart}
+
]
+
}
+
}
+
{
+
name: kill-line
+
modifier: control
+
keycode: char_k
+
mode: [emacs, vi_normal, vi_insert]
+
event: {
+
until: [
+
{edit: cuttolineend}
+
]
+
}
+
}
+
# Keybindings used to trigger the user defined menus
+
{
+
name: commands_menu
+
modifier: control
+
keycode: char_t
+
mode: [emacs, vi_normal, vi_insert]
+
event: { send: menu name: commands_menu }
+
}
+
{
+
name: vars_menu
+
modifier: alt
+
keycode: char_o
+
mode: [emacs, vi_normal, vi_insert]
+
event: { send: menu name: vars_menu }
+
}
+
{
+
name: commands_with_description
+
modifier: control
+
keycode: char_s
+
mode: [emacs, vi_normal, vi_insert]
+
event: { send: menu name: commands_with_description }
+
}
+
]
+
}
+7
homes/x86_64-linux/pyrox/programs/nushell/default.nix
···
+
{pkgs, ...}: {
+
programs.nushell = {
+
enable = true;
+
configFile.source = ./config.nu;
+
envFile.source = ./env.nu;
+
};
+
}
+9
homes/x86_64-linux/pyrox/programs/nushell/env.nu
···
+
zoxide init nushell --hook prompt | save ~/.zoxide.nu
+
mkdir ~/.cache/starship
+
starship init nu | save ~/.cache/starship/init.nu
+
+
let starship_cache = "/home/thehedgehog/.cache/starship"
+
if not ($starship_cache | path exists) {
+
mkdir $starship_cache
+
}
+
/etc/profiles/per-user/thehedgehog/bin/starship init nu | save --force /home/thehedgehog/.cache/starship/init.nu
+14
homes/x86_64-linux/pyrox/programs/obs.nix
···
+
{
+
config,
+
pkgs,
+
...
+
}: {
+
programs.obs-studio = {
+
enable = true;
+
plugins = with pkgs.obs-studio-plugins; [
+
obs-pipewire-audio-capture
+
obs-vkcapture
+
wlrobs
+
];
+
};
+
}
+5
homes/x86_64-linux/pyrox/programs/pandoc.nix
···
+
{
+
lib,
+
pkgs,
+
...
+
}: {programs.pandoc.enable = true;}
+90
homes/x86_64-linux/pyrox/programs/rofi.nix
···
+
{
+
pkgs,
+
config,
+
...
+
}: {
+
programs.rofi = {
+
enable = true;
+
package = pkgs.rofi-wayland;
+
cycle = true;
+
font = "IBM Plex Sans 13";
+
location = "center";
+
extraConfig = {modi = "run,ssh,drun,filebrowser";};
+
terminal = "${pkgs.kitty}/bin/kitty";
+
theme = let
+
inherit (config.lib.formats.rasi) mkLiteral;
+
in {
+
"*" = {
+
accent-color = mkLiteral "#bb9af7ff";
+
background-color = mkLiteral "#1a1b26ff";
+
blue = mkLiteral "#7aa2f7ff";
+
border-color = mkLiteral "#cfc9c2ff";
+
font = "IBM Plex Sans 13";
+
foreground-color = mkLiteral "#a9b1d6ff";
+
green = mkLiteral "#73dacaff";
+
height = 752;
+
lightfg = mkLiteral "#414868ff";
+
red = mkLiteral "#f7768eff";
+
show-icons = true;
+
width = 500;
+
display-drun = "";
+
};
+
"#button selected" = {
+
background-color = mkLiteral "@background-color";
+
text-color = mkLiteral "@accent-color";
+
};
+
"#entry" = {
+
text-color = mkLiteral "@foreground-color";
+
spacing = mkLiteral "2";
+
border-radius = mkLiteral "8";
+
};
+
"#entry selected" = {
+
text-color = mkLiteral "@blue";
+
spacing = mkLiteral "1";
+
border-radius = mkLiteral "8";
+
};
+
"#element-icon" = {
+
background-color = mkLiteral "@background-color";
+
text-color = mkLiteral "@foreground-color";
+
};
+
"#element-text" = {
+
background-color = mkLiteral "@background-color";
+
text-color = mkLiteral "@foreground-color";
+
};
+
"#element-text selected" = {
+
background-color = mkLiteral "@blue";
+
text-color = mkLiteral "@background-color";
+
border-radius = mkLiteral "8px";
+
};
+
"#element alternate" = {
+
background-color = mkLiteral "@background-color";
+
text-color = mkLiteral "@accent-color";
+
};
+
"#element normal" = {
+
background-color = mkLiteral "@blue";
+
text-color = mkLiteral "@accent-color";
+
};
+
"#element selected" = {
+
background-color = mkLiteral "@blue";
+
text-color = mkLiteral "@accent-color";
+
border-radius = mkLiteral "8";
+
};
+
"#inputbar" = {children = map mkLiteral ["prompt" "entry"];};
+
"#prompt" = {text-color = mkLiteral "@accent-color";};
+
"#textbox" = {text-color = mkLiteral "@foreground-color";};
+
"#textbox-prompt-colon" = {
+
expand = true;
+
str = ":";
+
margin = mkLiteral "0px 0.3em 0em 0em";
+
text-color = mkLiteral "@lightfg";
+
};
+
"#window" = {
+
border = mkLiteral "2px";
+
border-color = mkLiteral "@border-color";
+
padding = 25;
+
width = 500;
+
height = 752;
+
};
+
};
+
};
+
}
+11
homes/x86_64-linux/pyrox/programs/senpai.nix
···
+
{
+
programs.senpai = {
+
enable = true;
+
config = {
+
addr = "chat.sr.ht";
+
nick = "thehedgeh0g";
+
password-cmd = "bw get password 'Bouncer API Token'";
+
# pane-widths
+
};
+
};
+
}
+8
homes/x86_64-linux/pyrox/programs/skim.nix
···
+
{
+
programs.skim = {
+
enable = true;
+
enableBashIntegration = true;
+
enableZshIntegration = true;
+
enableFishIntegration = true;
+
};
+
}
+1
homes/x86_64-linux/pyrox/programs/ssh/backup.pub
···
+
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCyTiGctsHaTUlRJn2XQ/745dD0UWGWO8W0en8J5rf7BLI8lL/hPUmbNt45vC5754LXcBjnp1t/1FNgiGhvNZIWJpC+elBmhyMhg8z1exRZPD+as7XaH7scnij2vSbSphQFUqH433ggAGe77x5bc7wKFp9n7vj8G1u0JJxMEe1M7kNFY0+ShNtaHna3LxiQOVcW7qVlNKZP8Ol1V7kZLblRADCJMTYOXDIbktA8bbGRfGhbNjJGkL665qz36haYwb2i6A4sC7Y583N8ro8hIDG/ByJqwbl/Sz4rSxkT6G4+OdBvS6sa7TovNXHjmQCculMIltdog7UhgyBsim1sTzxAen3YyFRi1Cz/kLM0oH39m/W4IoMvJcNZCJ3ItLgy+lEVMd87jVOqfuq/hyjHVI0wJtU2Si2HTxv7aKL8gPzqXwbNH+nhkhlQ0ZH8zKVBunOgLDgsmGIky5X/T3bpWZpIoFkOR7AYrId/5dOeGM3pHhHb6woZ3SRubZ43Ah/VdJM= 993390@993390-student-FVFD26HVJ1WK
+34
homes/x86_64-linux/pyrox/programs/ssh/default.nix
···
+
{
+
programs.ssh = {
+
enable = true;
+
compression = true;
+
matchBlocks = {
+
"marvin" = {
+
hostname = "100.123.15.72";
+
user = "thehedgehog";
+
port = 22;
+
extraOptions = {
+
"IdentitiesOnly" = "no";
+
"PreferredAuthentications" = "publickey";
+
};
+
};
+
"prefect" = {
+
hostname = "100.93.63.54";
+
user = "thehedgehog";
+
port = 22;
+
extraOptions = {
+
"IdentitiesOnly" = "no";
+
"PreferredAuthentications" = "publickey";
+
};
+
};
+
"botw" = {
+
hostname = "bandit.labs.overthewire.org";
+
port = 2220;
+
sendEnv = ["WECHALLUSER" "WECHALLTOKEN"];
+
};
+
};
+
extraOptionOverrides = {
+
"Match" = ''host * exec "gpg-connect-agent UPDATESTARTUPTTY /bye"'';
+
};
+
};
+
}
+1
homes/x86_64-linux/pyrox/programs/ssh/yubikey-back.pub
···
+
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== cardno:15 567 372
+1
homes/x86_64-linux/pyrox/programs/ssh/yubikey-main.pub
···
+
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBBsOIMMZVmleClXfqUMrnmyh8PFuyiJqHKEZ51Xy746
+1
homes/x86_64-linux/pyrox/programs/ssh/yubikey-new.pub
···
+
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBK97n2SgV/U1mLzxcaEDl85iF5D3jm7xboZ+S01+CbM/8zxVoWyjVHCqTwDcrLwP0c5Z51BNj7U0UkGIgR4zTSM=
+100
homes/x86_64-linux/pyrox/programs/starship.nix
···
+
{lib, ...}: {
+
programs.starship = {
+
enable = true;
+
catppuccin.enable = true;
+
enableFishIntegration = true;
+
enableBashIntegration = true;
+
enableZshIntegration = true;
+
settings = {
+
format = lib.concatStrings [
+
"$hostname"
+
"$directory"
+
"$rust"
+
"$python"
+
"$golang"
+
"$nodejs"
+
"$lua"
+
"$git_branch"
+
"$git_status"
+
"$battery"
+
"$shlvl"
+
" "
+
"$character"
+
];
+
right_format = lib.concatStrings ["$nix_shell"];
+
+
directory = {read_only = " ";};
+
git_branch = {
+
symbol = " ";
+
format = "\\[[$symbol$branch]($style)\\]";
+
};
+
git_status = {format = "([\\[$all_status$ahead_behind\\]]($style))";};
+
golang = {
+
symbol = " ";
+
format = "\\[[$symbol($version)]($style)\\]";
+
};
+
nodejs = {format = "\\[[$symbol($version)]($style)\\]";};
+
lua = {
+
symbol = " ";
+
format = "\\[[\${symbol}\${version}]($style)\\]";
+
};
+
package = {
+
symbol = " ";
+
format = "\\[[$symbol$version]($style)\\]";
+
};
+
python = {
+
symbol = " ";
+
format = "\\[[\${symbol}\${pyenv_prefix}(\${version})(\\($virtualenv\\))]($style)\\]";
+
};
+
rust = {
+
symbol = " ";
+
format = "\\[[$symbol($version)]($style)\\]";
+
};
+
shlvl = {symbol = " ";};
+
nix_shell = {
+
symbol = " ";
+
format = "\\[[$symbol($name)]($style)\\]";
+
};
+
aws.disabled = true;
+
conda.disabled = true;
+
crystal.disabled = true;
+
dart.disabled = true;
+
deno.disabled = true;
+
docker_context.disabled = true;
+
dotnet.disabled = true;
+
elixir.disabled = true;
+
elm.disabled = true;
+
env_var.disabled = true;
+
erlang.disabled = true;
+
gcloud.disabled = true;
+
helm.disabled = true;
+
hostname.disabled = true;
+
java.disabled = true;
+
jobs.disabled = true;
+
julia.disabled = true;
+
kotlin.disabled = true;
+
kubernetes.disabled = true;
+
memory_usage.disabled = true;
+
hg_branch.disabled = true;
+
nim.disabled = true;
+
ocaml.disabled = true;
+
openstack.disabled = true;
+
perl.disabled = true;
+
php.disabled = true;
+
purescript.disabled = true;
+
rlang.disabled = true;
+
red.disabled = true;
+
ruby.disabled = true;
+
scala.disabled = true;
+
singularity.disabled = true;
+
swift.disabled = true;
+
terraform.disabled = true;
+
time.disabled = true;
+
username.disabled = true;
+
vagrant.disabled = true;
+
vlang.disabled = true;
+
vcsh.disabled = true;
+
zig.disabled = true;
+
};
+
};
+
}
+1
homes/x86_64-linux/pyrox/programs/taskwarrior.nix
···
+
{programs.taskwarrior = {enable = true;};}
+37
homes/x86_64-linux/pyrox/programs/vscodium.nix
···
+
{
+
pkgs,
+
data,
+
lib,
+
...
+
}: {
+
programs.vscode = {
+
enable = false;
+
package = pkgs.vscodium;
+
userSettings = {
+
"breadcrumbs.enabled" = false;
+
"editor.formatOnPaste" = true;
+
"editor.formatOnSave" = true;
+
"editor.formatOnSaveMode" = "file";
+
"editor.formatOnType" = true;
+
"editor.minimap.enabled" = false;
+
"explorer.confirmDelete" = false;
+
"extensions.autoCheckUpdates" = false;
+
"extensions.autoUpdate" = false;
+
"extensions.closeExtensionDetailsOnViewChange" = true;
+
"extensions.ignoreRecommendations" = true;
+
"python.analysis.autoImportCompletions" = true;
+
"python.analysis.autoSearchPaths" = true;
+
"python.analysis.completeFunctionParens" = true;
+
"python.experiments.enabled" = false;
+
"python.languageServer" = "Pylance";
+
"telemetry.telemetryLevel" = "off";
+
"terminal.external.linuxExec" = "kitty";
+
"update.mode" = "none";
+
"update.showReleaseNotes" = false;
+
"workbench.colorTheme" = "Catppuccin Mocha";
+
"workbench.iconTheme" = "catppuccin-mocha";
+
"vscode-neovim.neovimExecutablePaths.linux" = lib.getExe data.packages.neovim;
+
"python.formatting.provider" = "black";
+
};
+
};
+
}
+44
homes/x86_64-linux/pyrox/programs/wlogout/default.nix
···
+
{ pkgs, config, ...}: {
+
imports = [./style.nix];
+
programs.wlogout = {
+
enable = true;
+
layout = [
+
{
+
label = "hibernate";
+
action = "systemctl hibernate";
+
text = "Hibernate";
+
keybind = "h";
+
}
+
{
+
label = "reboot";
+
action = "systemctl reboot";
+
text = "Reboot";
+
keybind = "r";
+
}
+
{
+
label = "suspend";
+
action = "systemctl suspend";
+
text = "Suspend";
+
keybind = "u";
+
}
+
{
+
label = "suspend-then-hibernate";
+
action = "systemctl suspend-then-hibernate";
+
text = "Supend then Hibernate";
+
keybind = "p";
+
}
+
{
+
label = "lock";
+
action = "${pkgs.swaylock-effects}/bin/swaylock";
+
text = "Lock";
+
keybind = "l";
+
}
+
{
+
label = "shutdown";
+
action = "systemctl poweroff";
+
text = "Shutdown";
+
keybind = "s";
+
}
+
];
+
};
+
}
+53
homes/x86_64-linux/pyrox/programs/wlogout/style.nix
···
+
{pkgs, config, ...}: let
+
pkg = config.programs.wlogout.package;
+
icon-path = "${pkg}/share/wlogout/icons";
+
in {
+
programs.wlogout.style = ''
+
* {
+
background-image: none;
+
}
+
window {
+
background-image: image(url("/home/thehedgehog/bgs/ctp-waves.png"), url("/home/thehedgehog/bgs/ctp-waves.png"));
+
background-size: cover;
+
}
+
button {
+
color: #cdd6f4;
+
background-color: #11111b;
+
border: none;
+
border-color: #6c7086;
+
background-repeat: no-repeat;
+
background-position: center;
+
background-size: 25%;
+
}
+
+
button:focus, button:active, button:hover {
+
background-color: #1e1e2e;
+
outline-style: none;
+
border:none;
+
}
+
+
#lock {
+
background-image: image(url("${icon-path}/lock.png"), url("${icon-path}/lock.png"));
+
}
+
+
#suspend-then-hibernate {
+
background-image: image(url("${icon-path}/suspend.png"), url("${icon-path}/suspend.png"));
+
}
+
+
#suspend {
+
background-image: image(url("${icon-path}/suspend.png"), url("${icon-path}/suspend.png"));
+
}
+
+
#hibernate {
+
background-image: image(url("${icon-path}/hibernate.png"), url("${icon-path}/hibernate.png"));
+
}
+
+
#shutdown {
+
background-image: image(url("${icon-path}/shutdown.png"), url("${icon-path}/shutdown.png"));
+
}
+
+
#reboot {
+
background-image: image(url("${icon-path}/reboot.png"), url("${icon-path}/reboot.png"));
+
}
+
'';
+
}
+8
homes/x86_64-linux/pyrox/programs/zoxide.nix
···
+
{
+
programs.zoxide = {
+
enable = true;
+
enableBashIntegration = true;
+
enableFishIntegration = true;
+
enableZshIntegration = true;
+
};
+
}
+16
homes/x86_64-linux/pyrox/programs/zsh.nix
···
+
{pkgs, ...}: {
+
programs.zsh = {
+
enable = true;
+
autosuggestion.enable = true;
+
enableCompletion = true;
+
enableVteIntegration = true;
+
syntaxHighlighting = {enable = true;};
+
history = {
+
extended = true;
+
ignoreDups = false;
+
share = true;
+
save = 50000;
+
size = 10000;
+
};
+
};
+
}
+18
homes/x86_64-linux/pyrox/scripts.nix
···
+
{
+
lib,
+
pkgs,
+
config,
+
...
+
}: {
+
home.activation = {
+
cloneDoom = lib.hm.dag.entryAfter ["writeBoundary"] ''
+
if [ ! -d "${config.home.homeDirectory}/.config/emacs" ]; then
+
$DRY_RUN_CMD ${pkgs.git}/bin/git clone --depth=1 --single-branch "https://github.com/doomemacs/doomemacs" "${config.home.homeDirectory}/.config/emacs"
+
$DRY_RUN_CMD ${config.home.homeDirectory}/.config/emacs/bin/doom sync -u
+
fi
+
'';
+
removeLocalFonts = lib.hm.dag.entryAfter ["writeBoundary"] ''
+
unlink ${config.home.homeDirectory}/.local/share/fonts
+
'';
+
};
+
}
+8
homes/x86_64-linux/pyrox/services/emacs.nix
···
+
{programs, ...}: {
+
services.emacs = {
+
inherit (programs.emacs) package;
+
enable = true;
+
# package = programs.emacs.package;
+
socketActivation.enable = true;
+
};
+
}
+19
homes/x86_64-linux/pyrox/services/gpg-agent.nix
···
+
{pkgs, ...}: {
+
services.gpg-agent = {
+
enable = true;
+
enableExtraSocket = true;
+
enableScDaemon = true;
+
enableSshSupport = true;
+
defaultCacheTtl = 600;
+
maxCacheTtl = 600;
+
sshKeys = [
+
# My Normal GPG Key(Authentication Subkey)
+
"485329FEF73C42C6C42879F66C8B971F3FD4A132"
+
"CFEFCD08CFE6F0849F32ABC9C5CF3158A2FE1392"
+
];
+
extraConfig = ''
+
ttyname $GPG_TTY
+
max-cache-ttl-ssh 600
+
'';
+
};
+
}
+40
homes/x86_64-linux/pyrox/services/kanshi.nix
···
+
{pkgs, ...}: {
+
services.kanshi = {
+
enable = true;
+
settings = [
+
{
+
profile = {
+
name = "default";
+
outputs = [
+
{
+
criteria = "eDP-1";
+
status = "enable";
+
scale = 1.2;
+
position = "0,0";
+
}
+
];
+
};
+
}
+
{
+
profile = {
+
name = "home";
+
outputs = [
+
{
+
criteria = "DP-4";
+
status = "enable";
+
scale = 1.0;
+
position = "0,0";
+
}
+
{
+
criteria = "eDP-1";
+
# status = "enable";
+
status = "disable";
+
# scale = 1.0;
+
# position = "1920,0";
+
}
+
];
+
};
+
}
+
];
+
};
+
}
+6
homes/x86_64-linux/pyrox/services/kdeconnect.nix
···
+
{pkgs, ...}: {
+
services.kdeconnect = {
+
enable = false;
+
indicator = true;
+
};
+
}
+11
homes/x86_64-linux/pyrox/services/mako.nix
···
+
{
+
services.mako = {
+
enable = true;
+
catppuccin.enable = true;
+
actions = true;
+
defaultTimeout = 10000;
+
font = "IBM Plex Sans 14pt";
+
icons = true;
+
layer = "overlay";
+
};
+
}
+19
homes/x86_64-linux/pyrox/services/mpd.nix
···
+
{config, ...}: {
+
services.mpd = {
+
enable = true;
+
musicDirectory = "${config.home.homeDirectory}/Music";
+
extraConfig = ''
+
audio_output {
+
type "fifo"
+
name "viz"
+
path "/tmp/mpd.fifo"
+
format "44100:16:2"
+
buffer_time "100000"
+
}
+
audio_output {
+
type "pipewire"
+
name "PipeWire Sound Server"
+
}
+
'';
+
};
+
}
+16
homes/x86_64-linux/pyrox/services/pantalaimon.nix
···
+
{
+
services.pantalaimon = {
+
enable = true;
+
settings = {
+
Default = {
+
LogLevel = "Debug";
+
SSL = true;
+
};
+
thehedgeh0g = {
+
Homeserver = "https://colony.jupiterbroadcasting.com";
+
ListenAddress = "127.0.0.1";
+
ListenPort = 8008;
+
};
+
};
+
};
+
}
+21
homes/x86_64-linux/pyrox/services/swayidle.nix
···
+
{pkgs, ...}: {
+
services.swayidle = {
+
enable = true;
+
events = [
+
{
+
event = "lock";
+
command = "${pkgs.swaylock}/bin/swaylock -C ~/.config/swaylock/config";
+
}
+
{
+
event = "after-resume";
+
command = ''swaymsg "output * dpms on"'';
+
}
+
];
+
timeouts = [
+
{
+
timeout = 180;
+
command = "${pkgs.swaylock}/bin/swaylock -C ~/.config/swaylock/config";
+
}
+
];
+
};
+
}
+6
homes/x86_64-linux/pyrox/services/syncthing.nix
···
+
{
+
services.syncthing = {
+
enable = true;
+
tray.enable = true;
+
};
+
}
+6
homes/x86_64-linux/pyrox/services/taskwarrior-sync.nix
···
+
{
+
services.taskwarrior-sync = {
+
enable = false;
+
frequency = "*:00:00";
+
};
+
}
+28
homes/x86_64-linux/pyrox/theming.nix
···
+
{
+
pkgs,
+
config,
+
...
+
}: {
+
catppuccin = {
+
flavor = "mocha";
+
accent = "blue";
+
};
+
gtk = {
+
enable = true;
+
catppuccin = {
+
enable = true;
+
size = "compact";
+
tweaks = ["rimless"];
+
cursor.enable = true;
+
};
+
font = {
+
name = "IBM Plex Mono";
+
size = 14;
+
};
+
gtk3.bookmarks = ["file:///${config.home.homeDirectory}/Downloads"];
+
iconTheme = {
+
package = pkgs.papirus-icon-theme;
+
name = "Papirus-Dark";
+
};
+
};
+
}
+79
homes/x86_64-linux/pyrox/xdg.nix
···
+
{config, lib, pkgs, ...}: let
+
homeDir = config.home.homeDirectory;
+
in {
+
xdg = {
+
enable = true;
+
mime.enable = true;
+
configHome = lib.mkForce "${homeDir}/.config";
+
dataHome = lib.mkForce "${homeDir}/.local/share";
+
portal = {
+
enable = true;
+
xdgOpenUsePortal = true;
+
extraPortals = [
+
pkgs.xdg-desktop-portal-gtk
+
pkgs.xdg-desktop-portal-wlr
+
];
+
config = {
+
common = {
+
default = [
+
"gtk"
+
];
+
"org.freedesktop.impl.portal.Screenshot" = ["wlr"];
+
"org.freedesktop.impl.portal.ScreenCast" = ["wlr"];
+
};
+
};
+
};
+
mimeApps = {
+
enable = true;
+
associations.added = {
+
"application/pdf" = ["firefox.desktop"];
+
"application/rdf+xml" = ["firefox.desktop"];
+
"application/rss+xml" = ["firefox.desktop"];
+
"application/xhtml+xml" = ["firefox.desktop"];
+
"application/xhtml_xml" = ["firefox.desktop"];
+
"application/xml" = ["firefox.desktop"];
+
"image/gif" = ["viewnior.desktop" "firefox.desktop"];
+
"image/jpeg" = ["viewnior.desktop" "firefox.desktop"];
+
"image/png" = ["viewnior.desktop" "firefox.desktop"];
+
"image/webp" = ["viewnior.desktop" "firefox.desktop"];
+
"text/html" = ["firefox.desktop"];
+
"text/xml" = ["firefox.desktop"];
+
"x-scheme-handler/http" = ["firefox.desktop"];
+
"x-scheme-handler/https" = ["firefox.desktop"];
+
"x-scheme-handler/about" = ["firefox.desktop"];
+
"x-scheme-handler/unknown" = ["firefox.desktop"];
+
"x-scheme-handler/mailto" = ["thunderbird.desktop" "firefox.desktop"];
+
"x-scheme-handler/webcal" = ["firefox.desktop" "thunderbird.desktop"];
+
};
+
defaultApplications = {
+
"application/pdf" = ["firefox.desktop"];
+
"application/rdf+xml" = ["firefox.desktop"];
+
"application/rss+xml" = ["firefox.desktop"];
+
"application/xhtml+xml" = ["firefox.desktop"];
+
"application/xhtml_xml" = ["firefox.desktop"];
+
"application/xml" = ["firefox.desktop"];
+
"image/gif" = ["viewnior.desktop" "firefox.desktop"];
+
"image/jpeg" = ["viewnior.desktop" "firefox.desktop"];
+
"image/png" = ["viewnior.desktop" "firefox.desktop"];
+
"image/webp" = ["viewnior.desktop" "firefox.desktop"];
+
"text/html" = ["firefox.desktop"];
+
"text/xml" = ["firefox.desktop"];
+
"x-scheme-handler/http" = ["firefox.desktop"];
+
"x-scheme-handler/https" = ["firefox.desktop"];
+
"x-scheme-handler/about" = ["firefox.desktop"];
+
"x-scheme-handler/unknown" = ["firefox.desktop"];
+
"x-scheme-handler/mailto" = ["thunderbird.desktop" "firefox.desktop"];
+
"x-scheme-handler/webcal" = ["firefox.desktop" "thunderbird.desktop"];
+
"x-scheme-handler/steam" = ["steam-native.desktop" "steam.desktop"];
+
"x-scheme-handler/steamlink" = ["steam-native.desktop" "steam.desktop"];
+
};
+
};
+
userDirs = {
+
enable = true;
+
createDirectories = true;
+
music = "$HOME/music";
+
publicShare = "$HOME/.xdg/share";
+
templates = "$HOME/.xdg/templates";
+
};
+
};
+
}
+1
homes/x86_64-linux/thehedgehog
···
+
./pyrox
-1
hosts/common/nixpkgsConfig.nix
···
nixpkgs = {
config = {
allowUnfree = true;
-
joypixels.acceptLicense = true;
};
};
}
hosts/marvin/bootloader.nix systems/x86_64-linux/marvin/bootloader.nix
+3
hosts/marvin/configuration.nix systems/x86_64-linux/marvin/configuration.nix
···
./networking.nix
./hardware.nix
+
# Common service configs
+
../modules/services/buildbot-worker.nix
+
# Running Services
./services/authentik.nix
./services/avahi.nix
hosts/marvin/firewall.nix systems/x86_64-linux/marvin/firewall.nix
hosts/marvin/hardware.nix systems/x86_64-linux/marvin/hardware.nix
hosts/marvin/networking.nix systems/x86_64-linux/marvin/networking.nix
hosts/marvin/secrets/authentik-env.age systems/x86_64-linux/marvin/secrets/authentik-env.age
hosts/marvin/secrets/forgejo-db-pw.age systems/x86_64-linux/marvin/secrets/forgejo-db-pw.age
hosts/marvin/secrets/forgejo-default-runner-token.age systems/x86_64-linux/marvin/secrets/forgejo-default-runner-token.age
hosts/marvin/secrets/forgejo-internal-token.age systems/x86_64-linux/marvin/secrets/forgejo-internal-token.age
hosts/marvin/secrets/forgejo-lfs-jwt-secret.age systems/x86_64-linux/marvin/secrets/forgejo-lfs-jwt-secret.age
hosts/marvin/secrets/forgejo-mail-pw.age systems/x86_64-linux/marvin/secrets/forgejo-mail-pw.age
hosts/marvin/secrets/forgejo-oauth2-jwt-secret.age systems/x86_64-linux/marvin/secrets/forgejo-oauth2-jwt-secret.age
hosts/marvin/secrets/forgejo-secret-key.age systems/x86_64-linux/marvin/secrets/forgejo-secret-key.age
hosts/marvin/secrets/grafana-admin-password.age systems/x86_64-linux/marvin/secrets/grafana-admin-password.age
hosts/marvin/secrets/grafana-smtp-password.age systems/x86_64-linux/marvin/secrets/grafana-smtp-password.age
hosts/marvin/secrets/iceshrimp-db-password.age systems/x86_64-linux/marvin/secrets/iceshrimp-db-password.age
hosts/marvin/secrets/iceshrimp-secret-config.age systems/x86_64-linux/marvin/secrets/iceshrimp-secret-config.age
hosts/marvin/secrets/minio-root.age systems/x86_64-linux/marvin/secrets/minio-root.age
hosts/marvin/secrets/nextcloud-admin-pw.age systems/x86_64-linux/marvin/secrets/nextcloud-admin-pw.age
hosts/marvin/secrets/nix-serve-priv.age systems/x86_64-linux/marvin/secrets/nix-serve-priv.age
hosts/marvin/secrets/planka-env.age systems/x86_64-linux/marvin/secrets/planka-env.age
hosts/marvin/secrets/radicale-htpasswd.age systems/x86_64-linux/marvin/secrets/radicale-htpasswd.age
+4
hosts/marvin/secrets/secrets.nix systems/x86_64-linux/marvin/secrets/secrets.nix
···
default = [marvin yubi-back ssh-new];
in {
"authentik-env.age".publicKeys = default;
+
"buildbot-worker-password.age".publicKeys = default;
+
"buildbot-gitea-token.age".publicKeys = default;
+
"buildbot-oauth-secret.age".publicKeys = default;
+
"buildbot-workers.age".publicKeys = default;
"forgejo-db-pw.age".publicKeys = default;
"forgejo-mail-pw.age".publicKeys = default;
"forgejo-default-runner-token.age".publicKeys = default;
hosts/marvin/secrets/thehedgehog-key.age systems/x86_64-linux/marvin/secrets/thehedgehog-key.age
hosts/marvin/secrets/thehedgehog-pem.age systems/x86_64-linux/marvin/secrets/thehedgehog-pem.age
hosts/marvin/secrets/vaultwarden-pgpass.age systems/x86_64-linux/marvin/secrets/vaultwarden-pgpass.age
hosts/marvin/secrets/vaultwarden-vars.age systems/x86_64-linux/marvin/secrets/vaultwarden-vars.age
hosts/marvin/secrets/webmentiond-env.age systems/x86_64-linux/marvin/secrets/webmentiond-env.age
hosts/marvin/services/authentik.nix systems/x86_64-linux/marvin/services/authentik.nix
hosts/marvin/services/avahi.nix systems/x86_64-linux/marvin/services/avahi.nix
hosts/marvin/services/bookstack.nix systems/x86_64-linux/marvin/services/bookstack.nix
hosts/marvin/services/bots.nix systems/x86_64-linux/marvin/services/bots.nix
hosts/marvin/services/deemix.nix systems/x86_64-linux/marvin/services/deemix.nix
hosts/marvin/services/git.nix systems/x86_64-linux/marvin/services/git.nix
hosts/marvin/services/golink.nix systems/x86_64-linux/marvin/services/golink.nix
hosts/marvin/services/grafana.nix systems/x86_64-linux/marvin/services/grafana.nix
hosts/marvin/services/iceshrimp.nix systems/x86_64-linux/marvin/services/iceshrimp.nix
hosts/marvin/services/jellyfin.nix systems/x86_64-linux/marvin/services/jellyfin.nix
hosts/marvin/services/matrix.nix systems/x86_64-linux/marvin/services/matrix.nix
hosts/marvin/services/minio.nix systems/x86_64-linux/marvin/services/minio.nix
hosts/marvin/services/nextcloud/default.nix systems/x86_64-linux/marvin/services/nextcloud/default.nix
hosts/marvin/services/nextcloud/imaginary.nix systems/x86_64-linux/marvin/services/nextcloud/imaginary.nix
hosts/marvin/services/nextcloud/office.nix systems/x86_64-linux/marvin/services/nextcloud/office.nix
hosts/marvin/services/nginx.nix systems/x86_64-linux/marvin/services/nginx.nix
hosts/marvin/services/planka.nix systems/x86_64-linux/marvin/services/planka.nix
hosts/marvin/services/podman.nix systems/x86_64-linux/marvin/services/podman.nix
hosts/marvin/services/postgres.nix systems/x86_64-linux/marvin/services/postgres.nix
hosts/marvin/services/prometheus.nix systems/x86_64-linux/marvin/services/prometheus.nix
hosts/marvin/services/prosody.nix systems/x86_64-linux/marvin/services/prosody.nix
hosts/marvin/services/radicale.nix systems/x86_64-linux/marvin/services/radicale.nix
hosts/marvin/services/redlib.nix systems/x86_64-linux/marvin/services/redlib.nix
hosts/marvin/services/syncthing.nix systems/x86_64-linux/marvin/services/syncthing.nix
hosts/marvin/services/tailscale.nix systems/x86_64-linux/marvin/services/tailscale.nix
hosts/marvin/services/vaultwarden.nix systems/x86_64-linux/marvin/services/vaultwarden.nix
hosts/marvin/services/webmentiond.nix systems/x86_64-linux/marvin/services/webmentiond.nix
hosts/marvin/services/zfs.nix systems/x86_64-linux/marvin/services/zfs.nix
+8
hosts/modules/services/buildbot-worker.nix
···
+
{config, ...}: {
+
services.buildbot-nix.worker = {
+
enable = true;
+
name = config.networking.hostName;
+
masterUrl = "tcp:host=marvin:port=6915";
+
workerPasswordFile = config.age.secrets.buildbot-worker-password.path;
+
};
+
}
hosts/prefect/bootloader.nix systems/x86_64-linux/prefect/bootloader.nix
hosts/prefect/configuration.nix systems/x86_64-linux/prefect/configuration.nix
hosts/prefect/dn42/bgp.nix systems/x86_64-linux/prefect/dn42/bgp.nix
hosts/prefect/dn42/bird.conf systems/x86_64-linux/prefect/dn42/bird.conf
hosts/prefect/dn42/default.nix systems/x86_64-linux/prefect/dn42/default.nix
hosts/prefect/dn42/services.nix systems/x86_64-linux/prefect/dn42/services.nix
hosts/prefect/dn42/tunnels.nix systems/x86_64-linux/prefect/dn42/tunnels.nix
hosts/prefect/dn42/wireguard.nix systems/x86_64-linux/prefect/dn42/wireguard.nix
hosts/prefect/firewall.nix systems/x86_64-linux/prefect/firewall.nix
hosts/prefect/hardware.nix systems/x86_64-linux/prefect/hardware.nix
hosts/prefect/networking.nix systems/x86_64-linux/prefect/networking.nix
hosts/prefect/packages.nix systems/x86_64-linux/prefect/packages.nix
hosts/prefect/secrets/acme-creds.age systems/x86_64-linux/prefect/secrets/acme-creds.age
hosts/prefect/secrets/dn42-peerfinder-uuid.age systems/x86_64-linux/prefect/secrets/dn42-peerfinder-uuid.age
hosts/prefect/secrets/dn42-privkey.age systems/x86_64-linux/prefect/secrets/dn42-privkey.age
hosts/prefect/secrets/headscale-oidc-secret.age systems/x86_64-linux/prefect/secrets/headscale-oidc-secret.age
hosts/prefect/secrets/secrets.nix systems/x86_64-linux/prefect/secrets/secrets.nix
hosts/prefect/secrets/wireguard-priv-key.age systems/x86_64-linux/prefect/secrets/wireguard-priv-key.age
hosts/prefect/services/Caddyfile systems/x86_64-linux/prefect/services/Caddyfile
hosts/prefect/services/acme.nix systems/x86_64-linux/prefect/services/acme.nix
hosts/prefect/services/blog-update.nix systems/x86_64-linux/prefect/services/blog-update.nix
hosts/prefect/services/blog-update.sh systems/x86_64-linux/prefect/services/blog-update.sh
hosts/prefect/services/caddy.nix systems/x86_64-linux/prefect/services/caddy.nix
hosts/prefect/services/dn42-peerfinder.nix systems/x86_64-linux/prefect/services/dn42-peerfinder.nix
hosts/prefect/services/fail2ban.nix systems/x86_64-linux/prefect/services/fail2ban.nix
hosts/prefect/services/headscale.nix systems/x86_64-linux/prefect/services/headscale.nix
hosts/prefect/services/mailserver/default.nix systems/x86_64-linux/prefect/services/mailserver/default.nix
hosts/prefect/services/mailserver/logins.nix systems/x86_64-linux/prefect/services/mailserver/logins.nix
hosts/prefect/services/mailserver/monitoring.nix systems/x86_64-linux/prefect/services/mailserver/monitoring.nix
hosts/prefect/services/mailserver/overrides.nix systems/x86_64-linux/prefect/services/mailserver/overrides.nix
hosts/prefect/services/named.conf systems/x86_64-linux/prefect/services/named.conf
hosts/prefect/services/netdata.nix systems/x86_64-linux/prefect/services/netdata.nix
hosts/prefect/services/nginx/default.nix systems/x86_64-linux/prefect/services/nginx/default.nix
hosts/prefect/services/nginx/pyrox.dev.nix systems/x86_64-linux/prefect/services/nginx/pyrox.dev.nix
hosts/prefect/services/php.nix systems/x86_64-linux/prefect/services/php.nix
hosts/prefect/services/prometheus.nix systems/x86_64-linux/prefect/services/prometheus.nix
hosts/prefect/services/secrets.nix systems/x86_64-linux/prefect/services/secrets.nix
hosts/prefect/services/tailscale.nix systems/x86_64-linux/prefect/services/tailscale.nix
hosts/prefect/services/zerotier.nix systems/x86_64-linux/prefect/services/zerotier.nix
hosts/thought/bootloader.nix systems/x86_64-linux/thought/bootloader.nix
hosts/thought/configuration.nix systems/x86_64-linux/thought/configuration.nix
hosts/thought/disks.nix systems/x86_64-linux/thought/disks.nix
hosts/thought/firewall.nix systems/x86_64-linux/thought/firewall.nix
hosts/thought/hardware.nix systems/x86_64-linux/thought/hardware.nix
hosts/thought/networking.nix systems/x86_64-linux/thought/networking.nix
hosts/thought/packages.nix systems/x86_64-linux/thought/packages.nix
hosts/thought/secrets/secrets.nix systems/x86_64-linux/thought/secrets/secrets.nix
hosts/thought/services/prometheus.nix systems/x86_64-linux/thought/services/prometheus.nix
hosts/thought/services/tailscale.nix systems/x86_64-linux/thought/services/tailscale.nix
hosts/zaphod/bootloader.nix systems/x86_64-linux/zaphod/bootloader.nix
hosts/zaphod/configuration.nix systems/x86_64-linux/zaphod/configuration.nix
hosts/zaphod/console.nix systems/x86_64-linux/zaphod/console.nix
hosts/zaphod/fonts.nix systems/x86_64-linux/zaphod/fonts.nix
+2
hosts/zaphod/hardware.nix systems/x86_64-linux/zaphod/hardware.nix
···
driSupport = true;
driSupport32Bit = true;
extraPackages = [
+
pkgs.amdvlk
pkgs.gamescope
pkgs.libva
pkgs.libvdpau
···
pkgs.vaapiVdpau
];
extraPackages32 = [
+
pkgs.amdvlk
pkgs.gamescope
pkgs.mangohud
pkgs.mesa
hosts/zaphod/kde.nix systems/x86_64-linux/zaphod/kde.nix
hosts/zaphod/misc.nix systems/x86_64-linux/zaphod/misc.nix
hosts/zaphod/networking.nix systems/x86_64-linux/zaphod/networking.nix
hosts/zaphod/packages.nix systems/x86_64-linux/zaphod/packages.nix
hosts/zaphod/power.nix systems/x86_64-linux/zaphod/power.nix
hosts/zaphod/programs/chromium.nix systems/x86_64-linux/zaphod/programs/chromium.nix
hosts/zaphod/programs/dconf.nix systems/x86_64-linux/zaphod/programs/dconf.nix
hosts/zaphod/programs/default.nix systems/x86_64-linux/zaphod/programs/default.nix
hosts/zaphod/programs/gnupg.nix systems/x86_64-linux/zaphod/programs/gnupg.nix
hosts/zaphod/programs/less.nix systems/x86_64-linux/zaphod/programs/less.nix
hosts/zaphod/programs/misc.nix systems/x86_64-linux/zaphod/programs/misc.nix
hosts/zaphod/programs/noisetorch.nix systems/x86_64-linux/zaphod/programs/noisetorch.nix
hosts/zaphod/programs/proxychains.nix systems/x86_64-linux/zaphod/programs/proxychains.nix
hosts/zaphod/programs/ssh.nix systems/x86_64-linux/zaphod/programs/ssh.nix
hosts/zaphod/programs/sway.nix systems/x86_64-linux/zaphod/programs/sway.nix
hosts/zaphod/programs/zsh.nix systems/x86_64-linux/zaphod/programs/zsh.nix
hosts/zaphod/secret-files.nix systems/x86_64-linux/zaphod/secret-files.nix
hosts/zaphod/secrets/secrets.nix systems/x86_64-linux/zaphod/secrets/secrets.nix
hosts/zaphod/secrets/wg-privkey.age systems/x86_64-linux/zaphod/secrets/wg-privkey.age
hosts/zaphod/security/modules.nix systems/x86_64-linux/zaphod/security/modules.nix
hosts/zaphod/security/pam.nix systems/x86_64-linux/zaphod/security/pam.nix
hosts/zaphod/services/avahi.nix systems/x86_64-linux/zaphod/services/avahi.nix
hosts/zaphod/services/docker.nix systems/x86_64-linux/zaphod/services/docker.nix
hosts/zaphod/services/flatpak.nix systems/x86_64-linux/zaphod/services/flatpak.nix
hosts/zaphod/services/fprintd.nix systems/x86_64-linux/zaphod/services/fprintd.nix
hosts/zaphod/services/fwupd.nix systems/x86_64-linux/zaphod/services/fwupd.nix
hosts/zaphod/services/greetd.nix systems/x86_64-linux/zaphod/services/greetd.nix
hosts/zaphod/services/kmscon.nix systems/x86_64-linux/zaphod/services/kmscon.nix
hosts/zaphod/services/misc.nix systems/x86_64-linux/zaphod/services/misc.nix
hosts/zaphod/services/modules.nix systems/x86_64-linux/zaphod/services/modules.nix
hosts/zaphod/services/packagekit.nix systems/x86_64-linux/zaphod/services/packagekit.nix
hosts/zaphod/services/pcscd.nix systems/x86_64-linux/zaphod/services/pcscd.nix
hosts/zaphod/services/pipewire.nix systems/x86_64-linux/zaphod/services/pipewire.nix
hosts/zaphod/services/ssh.nix systems/x86_64-linux/zaphod/services/ssh.nix
hosts/zaphod/services/tailscale.nix systems/x86_64-linux/zaphod/services/tailscale.nix
+4
lib/data/default.nix
···
+
{
+
data.hosts = builtins.fromTOML (builtins.readFile ./hosts.toml);
+
data.services = builtins.fromTOML (builtins.readFile ./services.toml);
+
}
+9
lib/data/packages/default.nix.bak
···
+
{
+
inputs,
+
pkgs,
+
...
+
}: {
+
data.packages = {
+
nvim = inputs.nvim.packages.${pkgs.system}.neovim;
+
};
+
}
+1 -8
lib/default.nix
···
-
{lib, pkgs, inputs, data, ...}: let
-
inherit (lib) makeExtensible;
-
in {
-
myLib = makeExtensible (self: let
-
callLibs = file: import file { myLib = self; inherit self lib pkgs inputs data; };
-
in {
-
hosts = callLibs ./hosts.nix;
-
});
+
{lib, inputs, namespace, snowfall-inputs, ...}: {
}
-66
lib/hosts.nix
···
-
{ self, lib, inputs, pkgs, data, ...}: rec {
-
# Create a user
-
mkUser = {
-
user,
-
profile,
-
}: {
-
home-manager.users.${user} = import ../home/profiles/${profile}.nix;
-
users.users.${user}.isNormalUser = true;
-
};
-
mkHost = {
-
hostname,
-
# System architecture
-
system ? "x86_64-linux",
-
# The profile to apply
-
profile ? "server",
-
# above, but for Home Manager
-
hmProfile ? profile,
-
# The list of users to deploy profiles for
-
users ? [
-
"thehedgehog"
-
"pyrox"
-
],
-
# The core count, useful for setting some nix settings
-
coreCount,
-
# Any extra modules to load aside from the default set
-
extraModules ? [],
-
# Above, but for Home Manager
-
extraHMModules ? [],
-
}: let
-
userProfiles =
-
lib.forEach users (user: mkUser {inherit profile user;});
-
in (lib.nixosSystem {
-
inherit system;
-
modules = builtins.concatLists [
-
[
-
inputs.self.nixosModules.default
-
# This host's config files
-
../hosts/${hostname}/configuration.nix
-
../hosts/${hostname}/bootloader.nix
-
# Catppuccin theme
-
inputs.ctp.nixosModules.catppuccin
-
# Lix > Nix
-
inputs.lix-module.nixosModules.default
-
# Home-manager
-
inputs.home-manager.nixosModules.home-manager
-
{
-
home-manager.useGlobalPkgs = true;
-
home-manager.useUserPackages = true;
-
home-manager.extraSpecialArgs = {inherit pkgs system inputs data;};
-
home-manager.sharedModules = builtins.concatLists [
-
[
-
inputs.nix-index-database.hmModules.nix-index
-
inputs.ctp.homeManagerModules.catppuccin
-
]
-
extraHMModules
-
];
-
}
-
# Agenix for secrets
-
inputs.agenix.nixosModules.default
-
]
-
extraModules
-
userProfiles
-
];
-
specialArgs = {inherit self inputs pkgs data;};
-
});
-
}
+48
lib/hosts/default.nix.bak
···
+
{ lib, inputs, namespace, snowfall-inputs, ...}: {
+
hosts = {
+
# Create a user
+
mkUser = {
+
user,
+
profile,
+
}: {
+
home-manager.users.${user} = import ../home/profiles/${profile}.nix;
+
users.users.${user}.isNormalUser = true;
+
};
+
mkHost = {
+
hostname,
+
# System architecture
+
system ? "x86_64-linux",
+
# The profile to apply
+
profile ? "server",
+
# above, but for Home Manager
+
hmProfile ? profile,
+
# The list of users to deploy profiles for
+
users ? [
+
"thehedgehog"
+
"pyrox"
+
],
+
# The core count, useful for setting some nix settings
+
coreCount,
+
# Any extra modules to load aside from the default set
+
extraModules ? [],
+
# Above, but for Home Manager
+
extraHMModules ? [],
+
}: let
+
userProfiles =
+
lib.forEach users (user: mkUser {inherit profile user;});
+
in (lib.nixosSystem {
+
inherit system;
+
modules = builtins.concatLists [
+
[
+
inputs.self.nixosModules.default
+
# This host's config files
+
../hosts/${hostname}/configuration.nix
+
../hosts/${hostname}/bootloader.nix
+
]
+
extraModules
+
userProfiles
+
];
+
specialArgs = {inherit self inputs pkgs data;};
+
});
+
}
+
}
modules/dn42-pingfinder.nix modules/nixos/dn42-pingfinder/default.nix
modules/forgejo-runner.nix modules/nixos/forgejo-runner/default.nix
+13
modules/home/profiles/base/default.nix
···
+
{inputs, config, ...}: {
+
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;
+
manual.html.enable = false;
+
manual.json.enable = false;
+
programs.man.enable = false;
+
}
+53
modules/home/profiles/cli/default.nix
···
+
{pkgs, ...}: let
+
customPythonPackages = python-packages: with python-packages; [textual];
+
customPython = pkgs.python311.withPackages customPythonPackages;
+
in {
+
imports = [
+
../programs/bat.nix
+
../programs/direnv.nix
+
../programs/fish.nix
+
../programs/fzf.nix
+
../programs/git.nix
+
../programs/gh.nix
+
../programs/helix.nix
+
../programs/neovim.nix
+
../programs/nix-index.nix
+
../programs/nushell
+
../programs/pandoc.nix
+
../programs/ssh
+
../programs/starship.nix
+
../programs/zoxide.nix
+
../programs/zsh.nix
+
+
../files/distrobox-config.nix
+
];
+
programs.eza = {
+
enable = true;
+
icons = true;
+
git = true;
+
enableBashIntegration = false;
+
enableIonIntegration = false;
+
};
+
programs.btop = {
+
enable = true;
+
catppuccin.enable = true;
+
};
+
programs.glamour.catppuccin.enable = true;
+
xdg.configFile = {
+
"rbw".source = ../../oldconfig/rbw;
+
"rbw".recursive = true;
+
};
+
home.packages = with pkgs; [
+
btrfs-progs
+
fd
+
fzf
+
glow
+
gnupg
+
# neovim
+
pinentry
+
rbw
+
rsync
+
xdg-utils
+
yt-dlp
+
];
+
}
+41
modules/home/profiles/desktop/default.nix
···
+
{ pkgs
+
, inputs
+
, ...
+
}: {
+
imports = [
+
./base.nix
+
./cli.nix
+
./gui.nix
+
./development.nix
+
# ../email.nix
+
# ../programs/email.nix
+
];
+
programs.mpv.enable = true;
+
home.packages = with pkgs; [
+
appimage-run
+
brightnessctl
+
ciscoPacketTracer8
+
dex
+
keepassxc
+
(mumble.override { pipewireSupport = true; })
+
playerctl
+
pulseaudio-ctl
+
thunderbird
+
wlogout
+
wl-clipboard
+
zotero
+
# For nvim config
+
nodejs
+
];
+
xdg.configFile = {
+
"waybar/style.css" = {
+
source = ../../oldconfig/waybar/style.css;
+
recursive = false;
+
};
+
"waybar/mocha.css" = {
+
source = ../../oldconfig/waybar/mocha.css;
+
recursive = false;
+
};
+
};
+
services.easyeffects.enable = true;
+
}
+20
modules/home/profiles/development/default.nix
···
+
{
+
inputs,
+
pkgs,
+
...
+
}: let
+
customPython = pkgs.python311.withPackages (ps: [ps.pip]);
+
in {
+
home.packages = with pkgs; [
+
alejandra
+
any-nix-shell
+
cargo
+
colmena
+
customPython
+
editorconfig-core-c
+
my-pkgs.customGit
+
nil
+
nixd
+
# python311
+
];
+
}
+59
modules/home/profiles/gui/default.nix
···
+
{
+
pkgs,
+
inputs,
+
lib, # games ? true,
+
# social ? true,
+
...
+
}: {
+
imports = [
+
../wayland/sway.nix
+
+
../programs/chromium.nix
+
../programs/firefox
+
../programs/kitty.nix
+
../programs/obs.nix
+
../programs/vscodium.nix
+
../programs/wlogout
+
+
../services/gpg-agent.nix
+
../services/kanshi.nix
+
../services/mako.nix
+
../services/mpd.nix
+
../services/syncthing.nix
+
+
../theming.nix
+
+
../files/ssh-auth-signers.nix
+
../files/rbw-gc.nix
+
../files/pamKeys.nix
+
];
+
home.sessionVariables = {
+
XDG_CURRENT_DESKTOP = "sway";
+
};
+
home.packages = with pkgs; [
+
jetbrains-toolbox
+
libappindicator
+
libappindicator-gtk3
+
pavucontrol
+
grim
+
slurp
+
satty
+
sway-launcher-desktop
+
ueberzug
+
vscode
+
# ] ++ lib.optionals games [
+
# factorio-experimental
+
lutris
+
# my-pkgs.olympus
+
prismlauncher
+
protontricks
+
proton-caller
+
# ] ++ lib.optionals social [
+
gajim
+
tauon
+
(vesktop.override {withSystemVencord=false;})
+
# pidginWithPlugins
+
# ] ++ lib.optionals drawing [
+
krita
+
];
+
}
+5
modules/home/profiles/server/default.nix
···
+
{
+
pkgs,
+
inputs,
+
...
+
}: {imports = [./base.nix ./cli.nix];}
+7
modules/home/wayland/default.nix
···
+
{imports = [
+
./sway.nix
+
./keybindings.nix
+
./misc.nix
+
./waybar.nix
+
./swaylock.nix
+
];}
+47
modules/home/wayland/keybindings.nix
···
+
{
+
pkgs,
+
lib,
+
config,
+
...
+
}: let
+
mod = config.wayland.windowManager.sway.config.modifier;
+
homeDir = config.home.homeDirectory;
+
menu = config.wayland.windowManager.sway.config.menu;
+
term = config.wayland.windowManager.sway.config.terminal;
+
grim = "grim -g";
+
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";
+
"${mod}+Return" = "exec ${term}";
+
# "${mod}+Shift+Return" = "exec ${pkgs.wezterm}/bin/wezterm";
+
"${mod}+x" = "exec wlogout";
+
"${mod}+s" = null;
+
"${mod}+w" = null;
+
"XF86MonBrightnessDown" = "exec brightnessctl set 5%-";
+
"XF86MonBrightnessUp" = "exec brightnessctl set +5%";
+
"XF86AudioRaiseVolume" = "exec pactl set-sink-volume @DEFAULT_SINK@ +5%";
+
"XF86AudioLowerVolume" = "exec pactl set-sink-volume @DEFAULT_SINK@ -5%";
+
"XF86AudioMute" = "exec pactl set-sink-mute @DEFAULT_SINK@ toggle";
+
"XF86AudioMicMute" = "exec pactl set-source-mute @DEFAULT_SOURCE@ toggle";
+
"XF86AudioPlay" = "exec playerctl play-pause";
+
"XF86AudioNext" = "exec playerctl next";
+
"XF86AudioPrev" = "exec playerctl previous";
+
"Shift+F3" = "exec ${grim} ${slurp-screen} | ${satty}";
+
"Shift+F4" = "exec ${grim} ${slurp-box} | ${satty}";
+
"${mod}+Shift+1" = "move container to workspace number 1";
+
"${mod}+Shift+2" = "move container to workspace number 2";
+
"${mod}+Shift+3" = "move container to workspace number 3";
+
"${mod}+Shift+4" = "move container to workspace number 4";
+
"${mod}+Shift+5" = "move container to workspace number 5";
+
"${mod}+Shift+6" = "move container to workspace number 6";
+
"${mod}+Shift+7" = "move container to workspace number 7";
+
"${mod}+Shift+8" = "move container to workspace number 8";
+
"${mod}+Shift+9" = "move container to workspace number 9";
+
"${mod}+Shift+0" = "move container to workspace number 10";
+
"${mod}+0" = "workspace number 10";
+
};
+
}
modules/home/wayland/misc.nix

This is a binary file and will not be displayed.

+134
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;
+
catppuccin.enable = true;
+
# nix-community/home-manager/issues/5311
+
checkConfig = false;
+
wrapperFeatures.base = true;
+
wrapperFeatures.gtk = true;
+
extraConfig = ''
+
default_border pixel
+
focus_on_window_activation smart
+
'';
+
systemd = {
+
enable = true;
+
xdgAutostart = true;
+
};
+
config = {
+
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;
+
};
+
gaps = {
+
inner = 4;
+
outer = 4;
+
smartBorders = "off";
+
smartGaps = false;
+
};
+
input = {
+
"type:keyboard" = {xkb_options = "caps:escape";};
+
"type:mouse" = {accel_profile = "flat";};
+
"type:touchpad" = {
+
accel_profile = "adaptive";
+
scroll_factor = "1.5";
+
tap = "enabled";
+
};
+
};
+
modes = {
+
resize = {
+
Escape = "mode default";
+
Return = "mode default";
+
Up = "resize shrink height 10 px";
+
Down = "resize grow height 10 px";
+
Left = "resize shrink width 10 px";
+
Right = "resize grow width 10 px";
+
h = "resize shrink width 10 px";
+
j = "resize grow height 10 px";
+
k = "resize shrink height 10 px";
+
l = "resize grow width 10 px";
+
};
+
};
+
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";};
+
}
+
];
+
};
+
colors = {
+
background = "$base";
+
focused = {
+
border = "$pink";
+
background = "$base";
+
text = "$text";
+
indicator = "$rosewater";
+
childBorder = "$pink";
+
};
+
focusedInactive = {
+
border = "$mauve";
+
background = "$base";
+
text = "$text";
+
indicator = "$rosewater";
+
childBorder = "$mauve";
+
};
+
unfocused = {
+
border = "$mauve";
+
background = "$base";
+
text = "$text";
+
indicator = "$rosewater";
+
childBorder = "$mauve";
+
};
+
urgent = {
+
border = "$peach";
+
background = "$base";
+
text = "$peach";
+
indicator = "$overlay0";
+
childBorder = "$peach";
+
};
+
placeholder = {
+
border = "$overlay0";
+
background = "$base";
+
text = "$text";
+
indicator = "$overlay0";
+
childBorder = "$overlay0";
+
};
+
};
+
};
+
};
+
}
+24
modules/home/wayland/swaylock.nix
···
+
{
+
programs.swaylock = {
+
enable = true;
+
catppuccin.enable = true;
+
settings = {
+
daemonize = true;
+
image = "/home/thehedgehog/bgs/ctp-waves.png";
+
scaling = "fill";
+
indicator-idle-visible = true;
+
line-uses-ring = true;
+
ignore-empty-password = true;
+
clock = true;
+
indicator = true;
+
timestr = "%T";
+
effect-blur = "5x5";
+
+
font = "IBM Plex Sans";
+
font-size = 20;
+
+
indicator-radius = 100;
+
indicator-thickness = 5;
+
};
+
};
+
}
+111
modules/home/wayland/waybar.nix
···
+
{
+
pkgs,
+
lib,
+
...
+
}: {
+
programs.waybar = {
+
enable = true;
+
catppuccin.enable = false;
+
systemd.enable = true;
+
systemd.target = "sway-session.target";
+
# style = "/home/thehedgehog/.config/waybar/style.css"
+
settings = {
+
mainBar = {
+
layer = "top";
+
position = "top";
+
height = 32;
+
modules-left = ["sway/workspaces" "sway/mode"];
+
modules-center = ["custom/media"];
+
modules-right = [
+
"idle_inhibitor"
+
"wireplumber"
+
"network"
+
"temperature"
+
"backlight"
+
"battery"
+
"clock"
+
"tray"
+
];
+
"sway/workspaces" = {
+
disable-scroll = true;
+
enable-bar-scroll = false;
+
active-only = false;
+
all-outputs = false;
+
format = "{icon}";
+
};
+
"idle_inhibitor" = {
+
format = "{icon}";
+
format-icons = {
+
"activated" = "";
+
"deactivated" = "";
+
};
+
};
+
"tray" = {
+
icon-size = 25;
+
spacing = 12;
+
};
+
"clock" = {
+
tooltip-format = "<tt><small>{calendar}</small></tt>";
+
format = "{:%H:%M:%S}  ";
+
format-alt = "{%d %b %Y}";
+
interval = 1;
+
};
+
"cpu" = {
+
format = "{usage}% ";
+
interval = 5;
+
tooltip = false;
+
};
+
"memory" = {format = "{}% ";};
+
"temperature" = {
+
critical-threshold = 80;
+
format = "{temperatureC}°C {icon}";
+
format-icons = ["" "" "" "" ""];
+
};
+
"backlight" = {
+
format = "{percent}% {icon}";
+
format-icons = ["󰃚" "󰃛" "󰃜" "󰃝" "󰃞" "󰃟" "󰃠"];
+
};
+
"battery" = {
+
states = {
+
good = 80;
+
warning = 30;
+
critical = 15;
+
};
+
format = "{capacity}% {icon}";
+
format-charging = "{capacity}% 󰂄";
+
format-plugged = "{capacity}% ";
+
format-alt = "{time} {icon}";
+
format-icons = ["󰂎" "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹"];
+
};
+
"network" = {
+
format-wifi = "{essid} <big></big>";
+
format-ethernet = "{ifname}: {ipaddr}/{cidr} 󰈀";
+
format-linked = "{ifname} (No IP) 󰄡";
+
format-disconnected = "Disconnected! ⚠";
+
format-alt = "{ifname}: {ipaddr}/{cidr}";
+
on-click = lib.getExe pkgs.networkmanagerapplet;
+
};
+
"wireplumber" = {
+
format = "{volume}% {icon}";
+
format-muted = "󰝟";
+
format-icons = ["" "" ""];
+
on-click = lib.getExe pkgs.helvum;
+
};
+
"custom/media" = {
+
format = "{icon}{}";
+
return-type = "json";
+
format-icons = {
+
Paused = " ";
+
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";
+
};
+
};
+
};
+
};
+
}
-382
modules/iceshrimp.nix
···
-
{
-
config,
-
lib,
-
pkgs,
-
...
-
}: let
-
inherit (lib) mkOption types mdDoc;
-
cfg = config.services.iceshrimp;
-
iceshrimpSettingsFormat = pkgs.formats.yaml {};
-
iceshrimpConfigFile = iceshrimpSettingsFormat.generate "default.yml" cfg.settings;
-
stateDir = "/var/lib/iceshrimp";
-
in {
-
options.services.iceshrimp = {
-
enable = lib.mkEnableOption "iceshrimp ActivityPub server";
-
image = mkOption {
-
type = types.nonEmptyStr;
-
default = "iceshrimp.dev/iceshrimp/iceshrimp:latest";
-
description = mdDoc ''
-
The docker image to use for the iceshrimp server.
-
'';
-
};
-
listenPort = mkOption {
-
type = types.port;
-
example = 3001;
-
default = 3000;
-
description = mdDoc ''
-
The host port that iceshrimp will listen on. Defaults to 3000.
-
'';
-
};
-
settings = mkOption {
-
description = mdDoc ''
-
The iceshrimp settings to use, defaults taken from example.yml in the Calckey repo.
-
Note that you are only required to set the `url` setting, all other settings have defaults. This is to prevent starting an instance with no URL, which doesn't work.
-
See [The example.yml](https://gitlab.prometheus.systems/iceshrimp/firefish/-/blob/develop/.config/example.yml) for all available keys.
-
'';
-
type = types.submodule {
-
freeformType = iceshrimpSettingsFormat.type;
-
options = {
-
url = mkOption {
-
type = types.nonEmptyStr;
-
example = "https://example.com";
-
description = mdDoc ''
-
The publically accessible URL of the iceshrimp instance.
-
CANNOT BE CHANGED AFTER INSTALLATION!!
-
'';
-
};
-
accountDomain = mkOption {
-
type = types.nullOr types.str;
-
example = "example.social";
-
default = null;
-
description =
-
mdDoc
-
"OPTIONAL - Domain used for account handles, if you want the frontend at a subdomain but for account handles to be on a root domain, i.e. having the frontend at iceshrimp.example.social but the accounts being of the form @account@example.social.";
-
};
-
port = mkOption {
-
type = types.port;
-
example = 3001;
-
default = 3000;
-
description = mdDoc ''
-
The listening port for the iceshrimp service INSIDE THE CONTAINER. This is not the external port, which is set in `config.firefish.listenPort`
-
'';
-
};
-
cuid = {
-
length = mkOption {
-
type = types.ints.between 16 24;
-
example = 18;
-
default = 16;
-
description = mdDoc ''
-
The length of the cuid to generate. The default should be fine, but if you are running a large or distributed server, consider increasing it.
-
'';
-
};
-
fingerprint = mkOption {
-
type = types.nullOr types.nonEmptyStr;
-
example = "my-fingerprint";
-
default = null;
-
description = mdDoc ''
-
Set this to a unique string across workers(such as the machine's hostname)
-
ONLY if your workers are running in multiple hosts.
-
'';
-
};
-
};
-
maxNoteLength = mkOption {
-
type = types.ints.between 1 100000;
-
example = 5000;
-
default = 3000;
-
description = mdDoc ''
-
The maximum note length to allow users to send.
-
'';
-
};
-
maxCaptionLength = mkOption {
-
type = types.ints.between 1 8192;
-
example = 2000;
-
default = 1500;
-
description = mdDoc ''
-
The maximum caption length to allow users to add to an image.
-
'';
-
};
-
reservedUsernames = mkOption {
-
type = types.listOf types.nonEmptyStr;
-
example = ["some" "example" "usernames"];
-
default = ["root" "admin" "administrator" "me" "system"];
-
description = mdDoc ''
-
Usernames that only the administrator is allowed to register with.
-
'';
-
};
-
disableHsts = mkOption {
-
type = types.bool;
-
example = false;
-
default = true;
-
description = mdDoc ''
-
Whether to disable HSTS for the iceshrimp server.
-
'';
-
};
-
clusterLimit = mkOption {
-
type = types.int;
-
example = 4;
-
default = 1;
-
description = mdDoc ''
-
How many worker processes to run.
-
'';
-
};
-
onlyQueueProcessor = mkOption {
-
type = types.ints.between 0 1;
-
example = 1;
-
default = 0;
-
description = mdDoc ''
-
Whether to run in worker-only mode.
-
'';
-
};
-
deliverJobConcurrency = mkOption {
-
type = types.int;
-
example = 64;
-
default = 128;
-
description = mdDoc ''
-
The max deliver jobs to run on a worker.
-
'';
-
};
-
inboxJobPerSec = mkOption {
-
type = types.int;
-
example = 32;
-
default = 16;
-
description = mdDoc ''
-
The max inbox jobs to run on a worker.
-
'';
-
};
-
deliverJobMaxAttempts = mkOption {
-
type = types.int;
-
example = 10;
-
default = 12;
-
description = mdDoc ''
-
The maximum number of times to attempt sending a deliver job before aborting.
-
'';
-
};
-
inboxJobMaxAttempts = mkOption {
-
type = types.int;
-
example = 6;
-
default = 8;
-
description = mdDoc ''
-
The maximum number of times to attempt sending an inbox job before aborting.
-
'';
-
};
-
outgoingAddressFamily = mkOption {
-
type = types.enum ["ipv4" "ipv6" "dual"];
-
example = "dual";
-
default = "ipv4";
-
description = mdDoc ''
-
The IP address family to use for outgoing requests.
-
'';
-
};
-
syslog = {
-
host = mkOption {
-
type = types.nullOr types.nonEmptyStr;
-
example = "localhost";
-
default = null;
-
description = ''
-
The host that should recieve syslog logs from iceshrimp.
-
'';
-
};
-
port = mkOption {
-
type = types.nullOr types.port;
-
example = 514;
-
default = null;
-
description = mdDoc ''
-
The port that the syslog server is listening on.
-
'';
-
};
-
};
-
proxy = mkOption {
-
type = types.nullOr types.nonEmptyStr;
-
example = "http://127.0.0.1:3128";
-
default = null;
-
description = mdDoc ''
-
The HTTP/HTTPS proxy to use.
-
'';
-
};
-
proxyBypassHosts = mkOption {
-
type = types.listOf types.nonEmptyStr;
-
example = ["web.kaiteki.app" "127.0.0.1"];
-
default = [];
-
description = mdDoc ''
-
Hosts that should not be connected to with the proxy.
-
'';
-
};
-
proxySmtp = mkOption {
-
type = types.nullOr types.nonEmptyStr;
-
example = "http://127.0.0.1:3128";
-
default = null;
-
description = mdDoc ''
-
The proxy to use for SMTP. Can be an http, socks4, or socks5 proxy.
-
'';
-
};
-
mediaProxy = mkOption {
-
type = types.nullOr types.nonEmptyStr;
-
example = "https://example.com/proxy";
-
default = null;
-
description = mdDoc ''
-
The proxy to use to send media to the client.
-
'';
-
};
-
proxyRemoteFiles = mkOption {
-
type = types.bool;
-
example = true;
-
default = false;
-
description = mdDoc "Whether to proxy remote files.";
-
};
-
mediaCleanup = {
-
cron = mkOption {
-
type = types.bool;
-
example = true;
-
default = false;
-
};
-
maxAgeDays = mkOption {
-
type = types.int;
-
example = 30;
-
default = 0;
-
description = mdDoc "The number of days to keep media for";
-
};
-
cleanAvatars = mkOption {
-
type = types.bool;
-
example = true;
-
default = false;
-
description =
-
mdDoc "Whether to clean avatars on a timer with other media.";
-
};
-
cleanHeaders = mkOption {
-
type = types.bool;
-
example = true;
-
default = false;
-
description =
-
mdDoc "Whether to clean headers on a timer with other media.";
-
};
-
};
-
images = {
-
info = mkOption {
-
type = types.str;
-
example = "/twemoji/1f440.svg";
-
default = "/twemoji/1f440.svg";
-
description = mdDoc "Path to the image to use for the info icon.";
-
};
-
notFound = mkOption {
-
type = types.str;
-
example = "/twemoji/2049.svg";
-
default = "/twemoji/2049.svg";
-
description =
-
mdDoc "Path to the image to use for the notFound icon.";
-
};
-
error = mkOption {
-
type = types.str;
-
example = "/twemoji/1f480.svg";
-
default = "/twemoji/1f480.svg";
-
description =
-
mdDoc "Path to the image to use for the error icon.";
-
};
-
};
-
searchEngine = mkOption {
-
type = types.str;
-
example = "https://search.brave.com/search?q=";
-
default = "https://duckduckgo.com/?q=";
-
description =
-
mdDoc
-
"The search engine base string to use for the MFM search box.";
-
};
-
allowedPrivateNetworks = mkOption {
-
type = types.listOf types.nonEmptyStr;
-
example = ["127.0.0.1/32"];
-
default = ["127.0.0.1/32"];
-
description =
-
mdDoc
-
"The networks to classify as private when connecting to the server.";
-
};
-
twa = {
-
nameSpace = mkOption {
-
type = types.nullOr types.nonEmptyStr;
-
example = "android_app";
-
default = null;
-
description = mdDoc "The TWA namespace to allow.";
-
};
-
packageName = mkOption {
-
type = types.nullOr types.nonEmptyStr;
-
example = "tld.domain.twa";
-
default = null;
-
description =
-
mdDoc
-
"The name of the android app package that can use this TWA.";
-
};
-
sha256CertFingerprints = mkOption {
-
type = types.nullOr (types.listOf types.nonEmptyStr);
-
example = ["AB:CD:EF"];
-
default = null;
-
description =
-
mdDoc
-
"The SHA256 certificate fingerprint(s) of the app package abouve";
-
};
-
};
-
maxFileSize = mkOption {
-
type = types.int;
-
example = 100000;
-
default = 262144000;
-
description = mdDoc "The max upload file size. Defaults to 250 MB.";
-
};
-
};
-
};
-
};
-
-
envFile = mkOption {
-
type = types.path;
-
example = /path/to/secret.env;
-
default = "";
-
description = mdDoc ''
-
The secret environment file to load into the database and iceshrimp server containers.
-
The file should contain the variable `POSTGRES_PASSWORD`, set to the password of the Postgres database user.
-
'';
-
};
-
};
-
config = lib.mkIf cfg.enable {
-
services.iceshrimp.settings = {
-
db = {
-
host = "iceshrimp-db";
-
port = 5432;
-
db = "iceshrimp";
-
user = "iceshrimp";
-
pass = "iceshrimpDBPassword123!";
-
};
-
redis = {
-
host = "iceshrimp-redis";
-
port = 6379;
-
};
-
};
-
virtualisation.oci-containers.containers = {
-
iceshrimp-server = {
-
image = cfg.image;
-
dependsOn = ["iceshrimp-db" "iceshrimp-redis" ];
-
environment = {NODE_ENV = "production";};
-
ports = [
-
"${builtins.toString cfg.listenPort}:${
-
builtins.toString cfg.settings.port
-
}"
-
];
-
volumes = [
-
"${stateDir}/files:/iceshrimp/files"
-
"${iceshrimpConfigFile}:/iceshrimp/.config/default.yml:ro"
-
];
-
extraOptions = ["--network=iceshrimp"];
-
};
-
iceshrimp-redis = {
-
image = "docker.io/redis:7.0-alpine";
-
volumes = ["${stateDir}/redis:/data"];
-
extraOptions = ["--network=iceshrimp"];
-
};
-
iceshrimp-db = {
-
image = "docker.io/postgres:12.2-alpine";
-
environment = {
-
POSTGRES_PASSWORD = "iceshrimpDBPassword123!";
-
POSTGRES_USER = "iceshrimp";
-
POSTGRES_DB = "iceshrimp";
-
};
-
volumes = ["${stateDir}/db:/var/lib/postgresql/data"];
-
extraOptions = ["--network=iceshrimp"];
-
};
-
};
-
};
-
}
-29
modules/pyrox.nix
···
-
{
-
config,
-
lib,
-
pkgs,
-
myLib,
-
...
-
}: let
-
inherit (lib) mkOption types;
-
inherit (myLib) myTypes;
-
cfg = config.pyrox.services;
-
in {
-
# Import all config.pyrox modules
-
imports = [
-
./forgejo-runner.nix
-
];
-
-
options.pyrox.metadata = {
-
hosts = mkOption {
-
description = "Each host that is in the PyroNet Network";
-
type = types.attrsOf (myTypes.hostModule);
-
};
-
serviceHosts = mkOption {
-
description = "The services and what hosts they run on.";
-
type = types.submodule {
-
freeformType = types.anything;
-
};
-
};
-
};
-
}
-13
patches/rga.patch
···
-
diff --git a/src/adapters/pandoc.rs b/src/adapters/pandoc.rs
-
index 0eaf7ed..3f0a4c3 100644
-
--- a/src/adapters/pandoc.rs
-
+++ b/src/adapters/pandoc.rs
-
@@ -80,7 +80,6 @@ impl SpawningFileAdapter for PandocAdapter {
-
//.arg("--to=commonmark-header_attributes-link_attributes-fenced_divs-markdown_in_html_blocks-raw_html-native_divs-native_spans-bracketed_spans")
-
.arg("--to=plain")
-
- .arg("--wrap=none")
-
- .arg("--atx-headers");
-
+ .arg("--wrap=none");
-
cmd
-
}
-
}
pkgs/caddyBin.nix packages/caddy/default.nix
-24
pkgs/caddyBin2.nix
···
-
{
-
fetchFromGitea,
-
lib,
-
stdenv,
-
pkgs,
-
}:
-
stdenv.mkDerivation {
-
pname = "caddy-bin";
-
version = "2.5.2";
-
phases = ["unpackPhase" "installPhase"];
-
-
src = fetchFromGitea rec {
-
domain = "git.exozy.me";
-
owner = "thehedgehog";
-
repo = "nix";
-
rev = "c1db2bc786df5f843b243e7516338c0a487c0571";
-
sha256 = "sha256-/hC/H3OvKGRMqylqwK70Y/LjPFKgSsjWOx5tvKYyOvk=";
-
};
-
-
installPhase = ''
-
install -d $out/bin
-
install -m 755 binaries/caddy $out/bin/caddy
-
'';
-
}
pkgs/go-jamming.nix packages/go-jamming/default.nix
-22
pkgs/nerdfont-symbols.nix
···
-
{
-
lib,
-
fetchzip,
-
}:
-
fetchzip {
-
name = "nerdfont-symbols-only";
-
url = "https://github.com/ryanoasis/nerd-fonts/releases/download/2.2.0-RC/NerdFontsSymbolsOnly.zip";
-
-
sha256 = "sha256-UQatqcUf41mqki6hy/zFpz8GgiM0sUAe83ghI5we5rA=";
-
-
postFetch = ''
-
mkdir -p $out/share/fonts/opentype/NerdFontSymbolsOnly
-
unzip -j $downloadedFile \*.ttf -d $out/share/fonts/opentype/NerdFontSymbolsOnly
-
'';
-
-
meta = with lib; {
-
description = "The Nerd Fonts symbols in 1 font.";
-
homepage = "https://nerdfonts.com";
-
license = licenses.mit;
-
maintainers = with maintainers; [thehedgeh0g];
-
};
-
}
+2 -2
pkgs/olympus.nix packages/olympus/default.nix
···
}: let
olympus = pkgs.stdenv.mkDerivation rec {
pname = "olympus";
-
version = "3729";
+
version = "4085";
# https://everestapi.github.io/
src = pkgs.fetchzip {
url = "https://dev.azure.com/EverestAPI/Olympus/_apis/build/builds/${version}/artifacts?artifactName=linux.main&$format=zip#linux.main.zip";
-
sha256 = "sha256-8ZKOa4jOKtqY+zTpDIfKq1Jy1m39X11/Yvmsxud/SmE=";
+
hash = "sha256-8qHQ59QQvUfm4/2rbPaweh+q6dbzTUMMJ1n5duJ3XpI=";
};
buildInputs = [pkgs.unzip];
-30
pkgs/xcaddy.nix
···
-
{
-
lib,
-
pkgs,
-
fetchFromGitHub,
-
buildGoModule,
-
stdenv,
-
...
-
}:
-
buildGoModule rec {
-
pname = "xcaddy";
-
version = "0.3.0";
-
proxyVendor = true;
-
subPackages = ["cmd/xcaddy"];
-
-
src = fetchFromGitHub {
-
owner = "caddyserver";
-
repo = "xcaddy";
-
rev = "v${version}";
-
sha256 = "sha256-kB2WyHaln/arvISzVjcgPLHIUC/dCzL9Ub8aEl2xL2c=";
-
};
-
-
vendorSha256 = "sha256-6ZAMRe9MsCuShXCIKEYtItqLM8bKlIf0m70RsNYPG10=";
-
-
meta = with lib; {
-
homepage = "https://caddyserver.com";
-
description = "Caddy build tool";
-
license = licenses.asl20;
-
maintainers = with maintainers; [thehedgeh0g];
-
};
-
}
+3
shells/default/default.nix
···
+
{ inputs, pkgs, ...}: let
+
mkShell = inputs.mkshell-minimal pkgs;
+
in mkShell {}
+20
systems/x86_64-linux/marvin/secrets/buildbot-gitea-token.age
···
+
age-encryption.org/v1
+
-> ssh-ed25519 iqBxIA sXjW2SR1XZX72GNOub2LDOyPErSL1frz/6h1/PCpYQc
+
C1S5xYK8e0wjxXUo3Fv1Bly/KexFni/vUVQXvTOaYjM
+
-> ssh-rsa fFaiTA
+
hp5tbxse6zTj3F9+cURU7l1wgQ7xPqetn//fPbeAWgOaE6mV5AgKmul7rHEL9IIH
+
aFTvalTWR/KnFznYtlW/k8NJ8kxsO8xF+E5TzFnJHoJ1kcnxzx470m/erc928n48
+
XcqN+XT2OS7xxH8i4v+pTqsCniK5oKpUbXujFBDdLQzHr6PfudD7KflSDklIdYEB
+
Hcd1wPtnOwD7lPPrH4MIVNcAsZdc1gdieWI6WAyYhwyCGkHx+AAtbGBGIRxpM6eA
+
/iau2CyIL3NoQO5ahuocI3j6JZg/rjf8CrB6BOcjST63xxJOtb/Z1vCDMN8IL7h5
+
BC/W0jeLSWG6j/HtGXQHcBuuCe9X6ghNxHjJnXTlW5gyy/5fkfg1VwH1GH7LSgr3
+
tULl2deCUc13COd+c74wPl1tndaCFou3syWQI1+g6cxafdjNeC4toQVVTjiWKArW
+
9FxAfmOHRqkren+G68rV3r9HUwiik5yfFj3i0ReiSJOs+PnFdwiia+qEyEU6c+RA
+
ZKm02DA0xdIKvWRhBcV3LfXa59gM/fqHY7fPOr764UE8G3OxhU41YokRxSF2Amjr
+
SrrTdd9ifydgm/6QOezR/rGdIPednZGw7AifVDtzStqfeK2N/1UptXmRTqJxNKDl
+
HqChILGJP+4oQ9C40DBJKqoDoQ4cgdABf+cVvum4Vuo
+
-> ssh-ed25519 wpmdHA ihAY2EmeXBKtEYivtyxIM4f9DT8l4r+fB1aZq+/bBjI
+
cTxIJd2UpHpk6+kRC6kYnkWpk5vNOKN3KaTObI2yK60
+
--- wb5Zy32SMDk6XSAwzGDLz1fHZkTmFQRJu3UdOSO6ALs
+
�6�3
+
��x�p�(SFx��9%�l�`��mNy�i'��?i�������@Nw��ϖ�Xh\ơ� �A�X�{�
systems/x86_64-linux/marvin/secrets/buildbot-oauth-secret.age

This is a binary file and will not be displayed.

+19
systems/x86_64-linux/marvin/secrets/buildbot-worker-password.age
···
+
age-encryption.org/v1
+
-> ssh-ed25519 iqBxIA gwCfKQU/RuO5wvWJt+BNo9vMIH4cQNKC4YBo4zgeM00
+
568cl7NUSUNWPCF3SL8SSqsyV3qqKmM4CoqmQ+yynUs
+
-> ssh-rsa fFaiTA
+
xa/L5kqpE+MAOnbQFeOi4u53k9RdTz7di+bFiDwkUMoxPwKKWmT6DejEq2JmqcL6
+
adkNyc7sS9mfyoCC55WttpC1VBtyCtWCvJIuG8vtO11RsBfA6GvHLG4uuuHRGEqQ
+
i9IGIVBIUdCT+q4Eu8zV5hVEdbuufDGTbp1Ye2MZszl99XE3FKBgBNMfMyYL4fO4
+
+GE6kuTMdgwlI1CKFlQH5cZSMwGtm1ElTZcwd0Zl1Zu/5Y4mKwJ78RLtdmoIpYW/
+
8TnvuH1uD6PFZQ6f0RDxNnEnyZuAezTx16tjFfTuoI1/lyvq6t6et/f9TysKTnZZ
+
W0PSBFvTaxE1IKaO/PRynd9ZrBbLgk8pibCP6HgM8ev1Gbl4vLjq/0t+t0PEVquH
+
y0MXvO6OvjGs89JS9/AYbBAsFxmD/FcKGm857fKFqE2a+SguX0oTBbjNx/PG0rAm
+
RTx9CR2wCUhTq5KheRmL+Ik/T/Yv4QuDid6p93PHcwJ2YUqXPyMEuTyv/nhjSEGa
+
v3GX7sIQh0aC0LSHF0ielfyxjvAXysNKiIZaN+DU0tGTgKW/QvMOnUKB4X3EZCHu
+
yMGgV1vR+pVTLx7xoAyjPL9DQC9ezMlSs5gcZVEV3NLRndz5Es2SAgg7r0mXy5fg
+
PZz7XVriGa+2JhcAnDbFWgFjqwI7r5MSTpq8Sl9FZ8E
+
-> ssh-ed25519 wpmdHA wfideEEHVJwKpYxqET5LDOE859htEZIpg1UxKIGSayM
+
V5vr78i22cOHPS8+ZFluqMDfH9D3vzkHQ51Oos+MWq0
+
--- ltXrwcgDWjvOiOkbNmi8MAUtgcevsUKA2ooV7UyB03s
+
�� ������U���������q���{l���˓��<��=r��Žv�ݸ�H���Z��V��
+21
systems/x86_64-linux/marvin/secrets/buildbot-workers.age
···
+
age-encryption.org/v1
+
-> ssh-ed25519 iqBxIA NyjUU036+HYwviv9FB7Onyl3YYScNe/vLXpAYnbbJxU
+
pecvax2BSVOYEgCHxoQyWTRzBRpq8N2ertX0QAw600Y
+
-> ssh-rsa fFaiTA
+
Tdwy6FqSqpMxc7x/Ygwiz8ssPwug7sk1BZ0QghMZkoO8KPJwldUcYfsgQxklzisx
+
JuMDTBacCxN6/RnIfvcagtYZ2NeKsGkhk6KZ1QtcDt9oWrLD9KQBs/YlBmkJGE3L
+
SqAcQX9AybGQ+ODS8ZbXR7WTcCy0I85Jiy60QYRfkX5lElL0BAbbuphn6xtm0dt7
+
YuArYTndGI1KOgcnDCia8Az84vzjIh/Cp4AGthmhAOQP2R1k94LI8p1639RqlrkT
+
XAdsglg344l7ki2Eib4pPADDmhKttrJ/79DTK0X+1757PaUyxMif55WIrxQLzE2s
+
QHhwj1pka1HynIGy87cwILAlvqWNFUQ9lTbfMNfTLMBEJ7hH/HB6Adpmr0CVhKKG
+
B3WfC9l3v/15owcb3qLeP/dkaarjHbTM4FafOLkjrhdEgYCEGK/ls3vx0Deq4x39
+
G3WO/fclUQyjcO/g17i9yyfmuupL11Juk8xRyaU5fzi5O7gtGnPlLxhBqXE1s9Xa
+
FzSSBHztAYAT7D7wodoE+LsTAajRoMQnTkFuP0pvO81C8z7dMXVckYvPco8dTbHY
+
wujBpw+h//2oIfWxgM6lzZGKny+VsbFSVDz3JURCeWUaFpjdDHzkk7fd+fXAdhcx
+
Wh25XuYYKvr1SOjo1ux9hAgbH/KAGKy9hoXzpbs6q6I
+
-> ssh-ed25519 wpmdHA iO+7sYjfsEVkwxtiRMgi/5liBd5I56Cl3nIo5fFe6gc
+
Rhez8a+eG9D4kV6I3R7eRdEty3dVyYybBCsDoD3gy8Q
+
--- W7rtaU3i9bkD3+2PKJbOeDK8AlFhpW0t3Lp6MeJ7RiQ
+
���
+
.I�s ��q^hA���Ch�D��s��������|����8[�%xX�n+�Qb�#f�gUL�C�c9p������RgBd9e%'Y8�F��gկ~�15�D���d�K��C�c>���w
+
tP(�cr�����p7
+47
systems/x86_64-linux/marvin/services/buildbot.nix
···
+
{config, data, ...}: let
+
as = config.age.secrets;
+
d = data.services.buildbot;
+
g = data.services.git;
+
bbSecret = {
+
owner = "buildbot";
+
group = "buildbot";
+
};
+
in {
+
services.buildbot-nix.master = {
+
enable = true;
+
dbUrl = "postgresql://buildbot@localhost/buildbot";
+
workersFile = as.buildbot-workers.path;
+
authBackend = "gitea";
+
gitea = {
+
enable = true;
+
tokenFile = as.buildbot-gitea-token.path;
+
oauthSecretFile = as.buildbot-oauth-secret.path;
+
instanceUrl = g.extUrl;
+
oauthId = "2bfd5c46-43a7-4d98-b443-9176dc0a9452";
+
topic = "buildbot-enable";
+
};
+
admins = [
+
"pyrox"
+
];
+
domain = d.extUrl;
+
useHttps = true;
+
};
+
services.postgresql.ensureUsers = [{
+
name = "buildbot";
+
ensureDBOwnership = true;
+
ensureClauses.login = true;
+
}];
+
services.postgresql.ensureDatabases = [ "buildbot" ];
+
services.buildbot-master.port = 6915;
+
age.secrets = {
+
buildbot-gitea-token = bbSecret // {
+
file = ../secrets/buildbot-gitea-token.age;
+
};
+
buildbot-oauth-secret = bbSecret // {
+
file = ../secrets/buildbot-oauth-secret.age;
+
};
+
buildbot-workers = bbSecret // {
+
file = ../secrets/buildbot-workers.age;
+
};
+
};
+
}