Compare commits

..

No commits in common. "dc1712cf4656ddfd6a10421322888922deb01815" and "a7494307a18890aa005c64f6dc86d0eb8e9eae6b" have entirely different histories.

90 changed files with 674 additions and 943 deletions

View file

@ -0,0 +1,13 @@
{...}: {
system.stateVersion = 5;
elements = {
hostname = "molybdenum";
secrets = {
key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPjqieS4GkYAa1WRYZpxjgYsj7VGZ9U+rTFCkX8M0umD";
};
};
# For some reason this is required for hm to work with nix-darwin
users.users.christopher = {};
}

View file

@ -0,0 +1,7 @@
{pkgs, ...}: {
bosun.key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBUKDCjB0VpQubi8BfnYKbh4MIE1tcvKQesdoPE4NXAf";
home.packages = with pkgs; [
helix
];
}

View file

@ -6,16 +6,7 @@
gtk = {
enable = true;
iconTheme = {
name = "Adwaita";
package = pkgs.adwaita-icon-theme;
};
theme = {
name = "Adwaita";
package = pkgs.gnome-themes-extra;
};
iconTheme.name = "breeze-dark";
# cursorTheme = {
# name = "BreezeX-RosePineDawn-Linux";
# package = pkgs.rose-pine-cursor;
@ -23,14 +14,9 @@
# };
};
qt = {
enable = true;
style.name = "adwaita";
};
home.sessionVariables = {
GTK_USE_PORTAL = "1";
# GTK_THEME = "rose-pine";
GTK_THEME = "rose-pine";
XCURSOR_SIZE = "32";
};
}

View file

@ -0,0 +1,106 @@
{
pkgs,
config,
...
}: {
home.packages = with pkgs; [
# Editors
jetbrains-toolbox # Installer for JetBrains IDEs
zed-editor
code-cursor
vscode
atuin-desktop
rfc # TUI-based RFC reader
nix-init # Generate Nix packages from URLs
install-nothing
# Language Servers
lua-language-server
rust-analyzer
nodePackages.typescript
nodePackages.typescript-language-server
nil # nix lsp
# trurl # Parsing and manipulating URLs via CLI
pandoc # Document converter
ripgrep # Grep file search
dig # DNS
onefetch # Git information tool
tokei # Like cloc
gource
zeal # Offline documentation browser
harbor.dedoc # Terminal-based documentation viewer
just # Just a command runner
claude-monitor
devenv
gitui
harbor.oryx # TUI for sniffing network traffic using eBPF
# Build tools
cargo
glibc
gcc
php82
php82Packages.composer
bun
nodejs_20
nodejs_20.pkgs.pnpm
];
bosun.secrets.npmrc = {
rekeyFile = "npmrc.age";
path = "${config.home.homeDirectory}/.npmrc";
};
programs = {
go.enable = true;
direnv = {
enable = true;
nix-direnv.enable = true;
config.global.log_filter = "^$";
};
claude-code = {
enable = true;
# package = inputs.unstable.${system}.claude-code;
commands = {
fix-github-issue = ''
Please analyze and fix the GitHub issue $ARGUMENTS.
Follow these steps:
1. Use `gh issue view` to get the issue details
2. Understand the problem described in the issue. If necessary, follow links to other mentioned issues to understand context
3. Search the codebase for relevant files
4. Implement the necessary changes to fix the issue
5. Write and run tests to verify the fix
6. Ensure code passes linting and type checking
7. Create a descriptive commit message
8. Push and create a PR
Remember to use the GitHub CLI (`gh`) for all GitHub-related tasks.
'';
commit = ''
---
argument-hint: [commit-style]
---
Create a commit message. The message should be succinct, only with a one-liner explaining
the most relevant changes and possibly some reasoning for changes, but only where relevant.
Try to follow this commit style, if specified: '$ARGUMENTS'. If no commit style is specified,
try doing atomic commits. That is, split up larger changes into atomic commits that stand
for themselves.
Do not include a `Co-authored-by`.
'';
};
};
};
}

View file

@ -0,0 +1,25 @@
{pkgs, ...}: {
home.packages = with pkgs; [
# Simple browsers for HTML
qutebrowser
harbor.firefox-with-context # Open URLs in different browser profiles based on context
];
xdg.mimeApps = {
enable = true;
defaultApplicationPackages = with pkgs; [
kdePackages.gwenview # image viewer
kdePackages.okular # pdf viewer
kdePackages.ark # Archives
vlc # Video player
];
# Only want to use qute for HTML files, not URLs
defaultApplications = {
"text/html" = "qutebrowser";
"x-scheme-handler/http" = "firefox-with-context";
"x-scheme/handler/https" = "firefox-with-context";
};
};
}

View file

@ -1,7 +1,6 @@
{
pkgs,
config,
inputs,
...
} @ all: {
bosun.key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHl33DPxxzxrNNjM8rL4ktAj4ExzCyGiU8rKog0csxNA";
@ -11,7 +10,7 @@
# inputs.ovos.homeManagerModules.default
./gaming.nix
./ssh.nix
./communication.nix
./email.nix
./gpg
./niri
./stylix.nix
@ -154,9 +153,6 @@
harbor.quick-zeal
harbor.spawn-term
];
username = "toph";
homeDirectory = "/home/toph";
};
# home.file.".config/Yubico/u2f_keys".text = "christopher:C7akk/T8XYov6fOk3rGo0ZW66QPMtdLnGznPuK+tTh/qmPecvECzGVMKJuh5M7nYsMoT6r/idAP88FGinf/rpw==,ydS/PgUALZriaaHYS81u3x8rRFulq727GDJRlvbJhP2yeKK7Ih+xqRceyabLR3MxRN8PT/MtC1I/Xjaxl0S2Rg==,es256,+presence";

View file

@ -68,11 +68,6 @@ in {
home.packages = with pkgs; [
reader
tdf
slack
signal-desktop
telegram-desktop
vesktop # Discord client
# jitsi-meet
];
accounts.email = {

View file

@ -15,11 +15,6 @@
# gimpPlugins.bimp # batch image manipulation, broken atm
# rawtherapee
# CAD
freecad
openscad
antimony
vcv-rack # eurorack synth simulator
supercollider # audio programming language
];

View file

@ -23,22 +23,12 @@
onlyoffice-desktopeditors # libreoffice alternative
speedcrunch # GUI calculator app
calibre # eBook Manager
spacedrive-v2
# loupe # Photo viewer
(dokieli.overrideAttrs
(final: prev: {
installPhase = ''
runHook preInstall
mkdir -p $out/bin
cp -r * $out
rm $out/LICENSE
runHook postInstall
'';
}))
cider-2 # Apple music player
fractal # Matrix client
gomuks # Matrix client TUI
telegram-desktop
vesktop # Discord client
filezilla # FTP Client
mochi # SRS flashcards
];

View file

@ -0,0 +1,10 @@
{...}: {
programs.niri.settings.spawn-at-startup = [
# this is a funny fix for xdg environment not properly being set and thus
# xdg-open not working properly
{argv = ["sleep" "5;" "systemctl" "--user" "restart" "xdg-desktop-portal"];}
# open fastfetch by default
{argv = ["kitty" "--title" "'fastfetch'" "sh" "-c" "'fastfetch; read'"];}
];
}

View file

@ -8,7 +8,7 @@
programs.niri.settings = {
binds = with config.lib.niri.actions; {
"Mod+space".action = spawn "fuzzel";
"Mod+e".action = spawn "nautilus";
"Mod+e".action = spawn "dolphin";
"Mod+d".action = spawn "zeal"; # Documentation viewer
"Mod+c".action = spawn "${pkgs.harbor.spawn-term}/bin/spawn-term";
"Mod+g".action = spawn "${pkgs.harbor.hg-picker}/bin/hg-picker";

View file

@ -22,37 +22,37 @@
};
bar = {
# position = "left";
position = "left";
density = "comfortable";
# floating = true;
floating = true;
marginHorizontal = 0.73;
marginVertical = 0.73;
# widgets = {
# left = [
# {id = "ControlCenter";}
# {id = "SystemMonitor";}
# ];
widgets = {
left = [
{id = "ControlCenter";}
{id = "SystemMonitor";}
];
# center = [
# # {id = "MediaMini";}
# {id = "Workspace";}
# ];
center = [
# {id = "MediaMini";}
{id = "Workspace";}
];
# right = [
# {id = "Tray";}
# {id = "ScreenRecorder";}
# {id = "Volume";}
# {id = "NotificationHistory";}
# {id = "Clock";}
# ];
# };
right = [
{id = "Tray";}
{id = "ScreenRecorder";}
{id = "Volume";}
{id = "NotificationHistory";}
{id = "Clock";}
];
};
};
wallpaper = {
enabled = true;
overviewEnabled = false;
directory = "/nix/harbor/desktops/home/wallpapers";
directory = "/nix/harbor/desktops/configurations/home/toph@endurance/wallpapers";
recursiveSearch = false;
randomEnabled = true;
};

View file

@ -15,17 +15,9 @@
autoEnable = true;
# TODO: Figure out a way for automatic dark-/light-mode switching
# I've tried:
# rose-pine-dawn
# rose-pine-moon
# ayu-mirage
base16Scheme = "${pkgs.base16-schemes}/share/themes/rose-pine-dawn.yaml";
targets = {
gtk.enable = false;
qt.enable = false;
firefox.profileNames = ["default" "work" "streaming"];
};
targets.firefox.profileNames = ["default" "work" "streaming"];
cursor = {
package = pkgs.rose-pine-cursor;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 MiB

After

Width:  |  Height:  |  Size: 7.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 424 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 KiB

View file

@ -0,0 +1,5 @@
- cat-vibes: https://wall.alphacoders.com/big.php?i=1384032
- yellow-bedroom: https://wall.alphacoders.com/big.php?i=1395930
- sunny-cityscape: https://wall.alphacoders.com/big.php?i=1395929
- chill-room: https://wall.alphacoders.com/big.php?i=1350899
- evening-ambience-cafe: https://wall.alphacoders.com/big.php?i=1349198

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

View file

@ -0,0 +1,32 @@
{
pkgs,
config,
...
}: {
elements.secrets = {
rekeyPath = "christopher_beryllium";
key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBUKDCjB0VpQubi8BfnYKbh4MIE1tcvKQesdoPE4NXAf";
needs = {
traefik-env = "traefik.env.age";
};
};
# virtualisation.quadlet.containers = {
# echo = {
# autoStart = true;
# serviceConfig = {
# RestartSec = "10";
# Restart = "always";
# };
# containerConfig = {
# image = "docker.io/mendhak/http-https-echo:31";
# publishPorts = ["127.0.0.1:8080:8080"];
# };
# };
# };
home.packages = with pkgs; [
helix
];
}

View file

@ -0,0 +1,8 @@
{pkgs, ...}: {
bosun.key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHl33DPxxzxrNNjM8rL4ktAj4ExzCyGiU8rKog0csxNA";
home.packages = with pkgs; [
harbor.to-s3
harbor.connect-to-mercury
];
}

View file

@ -10,32 +10,50 @@
];
bosun = {
key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPjqieS4GkYAa1WRYZpxjgYsj7VGZ9U+rTFCkX8M0umD";
# quirks = ["avahi" "docker"];
profiles = {
docker.enable = true;
work.enable = true;
};
key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPjqieS4GkYAa1WRYZpxjgYsj7VGZ9U+rTFCkX8M0umD";
};
system.stateVersion = "24.11";
# Enable nix flakes
nix = {
package = pkgs.nixVersions.stable;
extraOptions = ''
experimental-features = nix-command flakes
'';
};
services.openssh = {
enable = true;
settings = {
PasswordAuthentication = false;
AllowUsers = ["toph"];
};
};
# Set the default drive, which in the case of Mercury is
# a VirtualBox image.
disko.devices.disk.main.device = "/dev/sda";
boot.loader.grub.enable = true;
networking.hostName = "aepplet";
time.timeZone = "Europe/Berlin";
environment.systemPackages = with pkgs; [
inputs.docker-compose-1.legacyPackages."x86_64-linux".docker-compose
gnumake
];
programs = {
vim.enable = true;
git.enable = true;
console = {
font = "Lat2-Terminus16";
keyMap = lib.mkForce "de";
};
programs.vim.enable = true;
programs.git.enable = true;
# Disable the firewall so that all traffic is allowed
networking.firewall.enable = false;

View file

@ -9,6 +9,7 @@
inputs.flatpak.nixosModules.nix-flatpak
./hardware.nix
./disko.nix
./metrics.nix
];
bosun = {
@ -22,64 +23,34 @@
key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPjqieS4GkYAa1WRYZpxjgYsj7VGZ9U+rTFCkX8M0umD";
};
qt = {
enable = true;
platformTheme = "qt5ct";
style = "kvantum";
};
networking = {
hostName = "endurance";
firewall.enable = false;
interfaces.eno1.wakeOnLan.enable = true;
};
# Nomad client-only (no server) — joins the cluster for GPU/compute tasks
services.nomad = {
enable = true;
dropPrivileges = false;
extraSettingsPaths = [
(builtins.toFile "docker-plugin.hcl" ''
plugin "docker" {
config {
volumes {
enabled = true
}
}
}
'')
];
settings = {
datacenter = "home";
bind_addr = "{{ GetInterfaceIP \"tailscale0\" }}";
addresses = {
http = "0.0.0.0";
};
advertise = {
http = "{{ GetInterfaceIP \"tailscale0\" }}";
rpc = "{{ GetInterfaceIP \"tailscale0\" }}";
serf = "{{ GetInterfaceIP \"tailscale0\" }}";
};
client = {
enabled = true;
servers = ["alvin" "fram" "great-western"];
node_class = "workstation";
meta = {
has_gpu = "true";
has_display = "true";
location = "local";
};
};
};
# Set your time zone.
time.timeZone = "Europe/Berlin";
console = {
font = "Lat2-Terminus16";
useXkbConfig = true; # use xkbOptions in tty.
};
# Make nomad CLI work with Tailscale-bound API
environment.etc."profile.d/nomad.sh".text = ''
export NOMAD_ADDR="http://$(tailscale ip -4):4646"
'';
xdg.portal = {
enable = true;
xdgOpenUsePortal = true;
};
programs = {
weylus.users = ["toph"];
gnupg.agent = {
enable = true;
pinentryPackage = pkgs.pinentry-gtk2;
enableSSHSupport = true;
};
dconf.enable = true;
steam = {
@ -87,7 +58,10 @@
protontricks.enable = true;
remotePlay.openFirewall = true;
};
# VR support
envision.enable = true;
# For game-related system optimisations
gamemode.enable = true;
_1password.enable = true;
@ -97,20 +71,6 @@
# require enabling PolKit integration on some desktop environments (e.g. Plasma).
polkitPolicyOwners = ["toph"];
};
obs-studio = {
enable = true;
enableVirtualCamera = true;
plugins = with pkgs.obs-studio-plugins; [
wlrobs
obs-vaapi
obs-pipewire-audio-capture
obs-backgroundremoval
obs-move-transition
droidcam-obs
];
};
};
services = {
@ -123,6 +83,9 @@
];
};
openssh.enable = true;
openssh.settings.PasswordAuthentication = false;
hardware.openrgb.enable = true;
# Bluetooth manager
@ -135,8 +98,33 @@
'';
udev.packages = [pkgs.platformio-core.udev];
# Linux link via MQTT
lnxlink.enable = true;
beszel-agent.enable = true;
beszel-agent.key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMkUPOw28Cu2LMuzfmvjT/L2ToNHcADwGyGvSpJ4wH2T";
elements.ollama.enable = true;
# waka-victoriametrics = {
# enable = true;
# listenAddress = "127.0.0.1:8080";
# victoriametrics.url = "http://localhost:8428/api/v1/write";
# metrics.labels = [
# "project"
# "language"
# "editor"
# "branch"
# "category"
# "operating_system"
# ];
# };
pipewire = {
enable = lib.mkForce true;
alsa.enable = true;
jack.enable = true;
pulse.enable = true;
};
usbmuxd = {
enable = true;
package = pkgs.usbmuxd2;
@ -159,6 +147,19 @@
pcscd.enable = true;
};
programs = {
thunar.enable = true;
thunar.plugins = with pkgs.xfce; [
thunar-archive-plugin
];
gnupg.agent = {
enable = true;
pinentryPackage = pkgs.pinentry-gtk2;
enableSSHSupport = true;
};
};
environment = {
# List packages installed in system profile. To search, run:
# $ nix search wget
@ -207,6 +208,11 @@
overdrive.enable = true;
};
bluetooth = {
enable = true;
powerOnBoot = true;
};
graphics = {
enable = true;
enable32Bit = true;
@ -215,11 +221,6 @@
];
};
bluetooth = {
enable = true;
powerOnBoot = true;
};
# SANE scanner support
sane = {
enable = true;
@ -236,27 +237,37 @@
keyboard.zsa.enable = true;
};
# Do not change this value!
system.stateVersion = "23.05";
system.stateVersion = "23.05"; # Do not change this value!
boot = {
# Set up our bootloader
loader = {
efi.canTouchEfiVariables = true;
grub = {
enable = true;
device = "nodev";
efiSupport = true;
};
# Set up our bootloader
boot.loader = {
efi.canTouchEfiVariables = true;
grub = {
enable = true;
device = "nodev";
efiSupport = true;
};
extraModulePackages = with config.boot.kernelPackages; [
v4l2loopback
];
kernelModules = ["v4l2loopback"];
extraModprobeConfig = ''
options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1
'';
};
programs.obs-studio = {
enable = true;
enableVirtualCamera = true;
plugins = with pkgs.obs-studio-plugins; [
wlrobs
obs-vaapi
obs-pipewire-audio-capture
obs-backgroundremoval
obs-move-transition
droidcam-obs
];
};
boot.extraModulePackages = with config.boot.kernelPackages; [
v4l2loopback
];
boot.kernelModules = ["v4l2loopback"];
boot.extraModprobeConfig = ''
options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1
'';
}

View file

@ -0,0 +1,52 @@
{
inputs,
config,
pkgs,
...
}: {
bosun.secrets.victoriametricsEnvFile = "victoria.env.age";
services = {
telegraf = {
enable = true;
environmentFiles = [
# This defines the VICTORIAMETRICS_PASSWORD environment variable
config.age.secrets.victoriametricsEnvFile.path
];
extraConfig = {
inputs = {
http_response = [
{
urls = ["https://toph.so" "https://aleph.garden" "https://aph.gdn" "https://radicle.toph.so"];
}
];
internet_speed = [
{
interval = "60m";
}
];
};
outputs.influxdb = [
{
urls = ["https://vm.toph.so"];
database = "toph";
username = "victoria-with-the-secrets";
password = "\${VICTORIAMETRICS_PASSWORD}";
skip_database_creation = false;
exclude_retention_policy_tag = true;
content_encoding = "gzip";
}
];
};
};
# traefik.routes.solid-pod = {
# rule = "Host(`pod.toph.so`)";
# url = "http://localhost:3000";
# };
};
# systemd.tmpfiles.rules = [
# "d /var/lib/solid - - - - -"
# ];
}

419
flake.lock generated
View file

@ -115,33 +115,6 @@
"type": "github"
}
},
"buildbot-nix": {
"inputs": {
"flake-parts": "flake-parts_4",
"hercules-ci-effects": "hercules-ci-effects",
"nixpkgs": [
"ngipkgs",
"nixpkgs"
],
"treefmt-nix": [
"ngipkgs",
"treefmt-nix"
]
},
"locked": {
"lastModified": 1769920146,
"narHash": "sha256-Co8wpqWe5SWzsx0Fy2Q7+tpnDlvHe+ksX+9Lis4NJFw=",
"owner": "nix-community",
"repo": "buildbot-nix",
"rev": "21a138e5230c23fb253559bea63ec0979156aff3",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "buildbot-nix",
"type": "github"
}
},
"community-solid-server": {
"inputs": {
"flake-parts": "flake-parts_2",
@ -265,29 +238,6 @@
"type": "github"
}
},
"dream2nix": {
"inputs": {
"nixpkgs": [
"ngipkgs",
"nixpkgs"
],
"purescript-overlay": "purescript-overlay",
"pyproject-nix": "pyproject-nix"
},
"locked": {
"lastModified": 1765953015,
"narHash": "sha256-5FBZbbWR1Csp3Y2icfRkxMJw/a/5FGg8hCXej2//bbI=",
"owner": "nix-community",
"repo": "dream2nix",
"rev": "69eb01fa0995e1e90add49d8ca5bcba213b0416f",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "dream2nix",
"type": "github"
}
},
"easy-hosts": {
"locked": {
"lastModified": 1755470564,
@ -351,38 +301,6 @@
"type": "github"
}
},
"flake-compat_3": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_4": {
"flake": false,
"locked": {
"lastModified": 1767039857,
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
"owner": "NixOS",
"repo": "flake-compat",
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
@ -441,28 +359,6 @@
}
},
"flake-parts_4": {
"inputs": {
"nixpkgs-lib": [
"ngipkgs",
"buildbot-nix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1768135262,
"narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_5": {
"inputs": {
"nixpkgs-lib": [
"nur",
@ -483,7 +379,7 @@
"type": "github"
}
},
"flake-parts_6": {
"flake-parts_5": {
"inputs": {
"nixpkgs-lib": [
"stylix",
@ -504,7 +400,7 @@
"type": "github"
}
},
"flake-parts_7": {
"flake-parts_6": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib_3"
},
@ -540,27 +436,6 @@
"type": "github"
}
},
"flake-utils_2": {
"inputs": {
"systems": [
"ngipkgs",
"systems"
]
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flatpak": {
"locked": {
"lastModified": 1739444422,
@ -634,28 +509,6 @@
"type": "github"
}
},
"gitignore_2": {
"inputs": {
"nixpkgs": [
"ngipkgs",
"pre-commit-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"gnome-shell": {
"flake": false,
"locked": {
@ -675,33 +528,6 @@
"type": "gitlab"
}
},
"hercules-ci-effects": {
"inputs": {
"flake-parts": [
"ngipkgs",
"buildbot-nix",
"flake-parts"
],
"nixpkgs": [
"ngipkgs",
"buildbot-nix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1768476106,
"narHash": "sha256-V0YOJRum50gtKgwavsAfwXc9+XAsJCC7386YZx1sWGQ=",
"owner": "hercules-ci",
"repo": "hercules-ci-effects",
"rev": "c19e263e6e22ec7379d972f19e6a322f943c73fb",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "hercules-ci-effects",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
@ -730,11 +556,11 @@
]
},
"locked": {
"lastModified": 1769723138,
"narHash": "sha256-kgkwjs33YfJasADIrHjHcTIDs3wNX0xzJhnUP+oldEw=",
"lastModified": 1765480374,
"narHash": "sha256-HlbvQAqLx7WqZFFQZ8nu5UUJAVlXiV/kqKbyueA8srw=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "175532b6275b34598a0ceb1aef4b9b4006dd4073",
"rev": "39cb677ed9e908e90478aa9fe5f3383dfc1a63f3",
"type": "github"
},
"original": {
@ -777,36 +603,6 @@
"type": "github"
}
},
"ngipkgs": {
"inputs": {
"buildbot-nix": "buildbot-nix",
"dream2nix": "dream2nix",
"flake-utils": "flake-utils_2",
"nixdoc-to-github": "nixdoc-to-github",
"nixpkgs": [
"nixpkgs"
],
"pre-commit-hooks": "pre-commit-hooks_2",
"sbt-derivation": "sbt-derivation",
"sops-nix": "sops-nix",
"systems": "systems_4",
"treefmt-nix": "treefmt-nix_2"
},
"locked": {
"lastModified": 1769442174,
"narHash": "sha256-J0DqkOiV4DhFL9NHSNY5Qu794dMYRVm+estBM54ojXM=",
"owner": "ngi-nix",
"repo": "ngipkgs",
"rev": "672c78f6c140b480ca37cd04a4ee250fb00b1b7d",
"type": "github"
},
"original": {
"owner": "ngi-nix",
"repo": "ngipkgs",
"rev": "672c78f6c140b480ca37cd04a4ee250fb00b1b7d",
"type": "github"
}
},
"niri": {
"inputs": {
"niri-stable": "niri-stable",
@ -863,22 +659,6 @@
"type": "github"
}
},
"nixdoc-to-github": {
"flake": false,
"locked": {
"lastModified": 1717409038,
"narHash": "sha256-P4ZfOrlnRPNiZwiQn2pY44nPfk9cqI7FxOVaTnZwDCI=",
"owner": "fricklerhandwerk",
"repo": "nixdoc-to-github",
"rev": "47054a3b3a0f072ecd0402de3911d0979d09a7ab",
"type": "github"
},
"original": {
"owner": "fricklerhandwerk",
"repo": "nixdoc-to-github",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1767051569,
@ -1058,7 +838,7 @@
},
"nur": {
"inputs": {
"flake-parts": "flake-parts_5",
"flake-parts": "flake-parts_4",
"nixpkgs": [
"nixpkgs"
]
@ -1125,75 +905,6 @@
"type": "github"
}
},
"pre-commit-hooks_2": {
"inputs": {
"flake-compat": "flake-compat_4",
"gitignore": "gitignore_2",
"nixpkgs": [
"ngipkgs",
"nixpkgs"
]
},
"locked": {
"lastModified": 1769939035,
"narHash": "sha256-Fok2AmefgVA0+eprw2NDwqKkPGEI5wvR+twiZagBvrg=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "a8ca480175326551d6c4121498316261cbb5b260",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"type": "github"
}
},
"purescript-overlay": {
"inputs": {
"flake-compat": "flake-compat_3",
"nixpkgs": [
"ngipkgs",
"dream2nix",
"nixpkgs"
],
"slimlock": "slimlock"
},
"locked": {
"lastModified": 1728546539,
"narHash": "sha256-Sws7w0tlnjD+Bjck1nv29NjC5DbL6nH5auL9Ex9Iz2A=",
"owner": "thomashoneyman",
"repo": "purescript-overlay",
"rev": "4ad4c15d07bd899d7346b331f377606631eb0ee4",
"type": "github"
},
"original": {
"owner": "thomashoneyman",
"repo": "purescript-overlay",
"type": "github"
}
},
"pyproject-nix": {
"inputs": {
"nixpkgs": [
"ngipkgs",
"dream2nix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1763017646,
"narHash": "sha256-Z+R2lveIp6Skn1VPH3taQIuMhABg1IizJd8oVdmdHsQ=",
"owner": "pyproject-nix",
"repo": "pyproject.nix",
"rev": "47bd6f296502842643078d66128f7b5e5370790c",
"type": "github"
},
"original": {
"owner": "pyproject-nix",
"repo": "pyproject.nix",
"type": "github"
}
},
"root": {
"inputs": {
"agenix": "agenix",
@ -1209,7 +920,6 @@
"home-manager": "home-manager_2",
"master": "master",
"musnix": "musnix",
"ngipkgs": "ngipkgs",
"niri": "niri",
"nixpkgs": "nixpkgs_6",
"noctalia": "noctalia",
@ -1219,75 +929,6 @@
"waka-victoriametrics": "waka-victoriametrics"
}
},
"sbt-derivation": {
"inputs": {
"flake-utils": [
"ngipkgs",
"flake-utils"
],
"nixpkgs": [
"ngipkgs",
"nixpkgs"
]
},
"locked": {
"lastModified": 1698464090,
"narHash": "sha256-Pnej7WZIPomYWg8f/CZ65sfW85IfIUjYhphMMg7/LT0=",
"owner": "zaninime",
"repo": "sbt-derivation",
"rev": "6762cf2c31de50efd9ff905cbcc87239995a4ef9",
"type": "github"
},
"original": {
"owner": "zaninime",
"repo": "sbt-derivation",
"type": "github"
}
},
"slimlock": {
"inputs": {
"nixpkgs": [
"ngipkgs",
"dream2nix",
"purescript-overlay",
"nixpkgs"
]
},
"locked": {
"lastModified": 1688756706,
"narHash": "sha256-xzkkMv3neJJJ89zo3o2ojp7nFeaZc2G0fYwNXNJRFlo=",
"owner": "thomashoneyman",
"repo": "slimlock",
"rev": "cf72723f59e2340d24881fd7bf61cb113b4c407c",
"type": "github"
},
"original": {
"owner": "thomashoneyman",
"repo": "slimlock",
"type": "github"
}
},
"sops-nix": {
"inputs": {
"nixpkgs": [
"ngipkgs",
"nixpkgs"
]
},
"locked": {
"lastModified": 1769921679,
"narHash": "sha256-twBMKGQvaztZQxFxbZnkg7y/50BW9yjtCBWwdjtOZew=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "1e89149dcfc229e7e2ae24a8030f124a31e4f24f",
"type": "github"
},
"original": {
"owner": "Mic92",
"repo": "sops-nix",
"type": "github"
}
},
"stylix": {
"inputs": {
"base16": "base16",
@ -1295,13 +936,13 @@
"base16-helix": "base16-helix",
"base16-vim": "base16-vim",
"firefox-gnome-theme": "firefox-gnome-theme",
"flake-parts": "flake-parts_6",
"flake-parts": "flake-parts_5",
"gnome-shell": "gnome-shell",
"nixpkgs": [
"nixpkgs"
],
"nur": "nur_2",
"systems": "systems_5",
"systems": "systems_4",
"tinted-foot": "tinted-foot",
"tinted-kitty": "tinted-kitty",
"tinted-schemes": "tinted-schemes",
@ -1368,21 +1009,6 @@
}
},
"systems_4": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"systems_5": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
@ -1499,34 +1125,13 @@
"type": "github"
}
},
"treefmt-nix_2": {
"inputs": {
"nixpkgs": [
"ngipkgs",
"nixpkgs"
]
},
"locked": {
"lastModified": 1769691507,
"narHash": "sha256-8aAYwyVzSSwIhP2glDhw/G0i5+wOrren3v6WmxkVonM=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "28b19c5844cc6e2257801d43f2772a4b4c050a1b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"unstable": {
"locked": {
"lastModified": 1770197578,
"narHash": "sha256-AYqlWrX09+HvGs8zM6ebZ1pwUqjkfpnv8mewYwAo+iM=",
"lastModified": 1762977756,
"narHash": "sha256-4PqRErxfe+2toFJFgcRKZ0UI9NSIOJa+7RXVtBhy4KE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "00c21e4c93d963c50d4c0c89bfa84ed6e0694df2",
"rev": "c5ae371f1a6a7fd27823bc500d9390b38c05fa55",
"type": "github"
},
"original": {
@ -1556,7 +1161,7 @@
},
"waka-victoriametrics": {
"inputs": {
"flake-parts": "flake-parts_7",
"flake-parts": "flake-parts_6",
"nixpkgs": [
"nixpkgs"
]

View file

@ -47,7 +47,7 @@
inputs.nixpkgs.follows = "unstable";
};
# affinity-nix.url = "github:mrshmllow/affinity-nix";
# affinity-nix.url = "github:mrshmllow/affinity-nix";
musnix.url = "github:musnix/musnix";
flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.6.0";
git-global-log.url = "github:tophcodes/git-global-log";
@ -55,10 +55,6 @@
url = "github:nix-community/NUR";
inputs.nixpkgs.follows = "nixpkgs";
};
ngipkgs = {
url = "github:ngi-nix/ngipkgs/?ref=672c78f6c140b480ca37cd04a4ee250fb00b1b7d";
inputs.nixpkgs.follows = "nixpkgs";
};
community-solid-server = {
url = "github:tophcodes/CommunitySolidServer.nix/main";
};
@ -90,4 +86,33 @@
./modules/flake
];
});
# # Add modules only to specific hosts
# systems.hosts = with inputs; {
# cobalt.modules = [
# stylix.nixosModules.stylix
# ovos.nixosModules.default
# waka-victoriametrics.nixosModules.default
# ];
# };
# overlays = with inputs; [
# ovos.overlays.default
# (final: prev: {
# waka-victoriametrics = waka-victoriametrics.packages.${final.system}.default;
# })
# ];
# outputs-builder = channels: {
# formatter = channels.nixpkgs.alejandra;
# };
# })
# // {
# agenix-rekey = inputs.agenix-rekey.configure {
# userFlake = inputs.self;
# nixosConfigurations = inputs.self.nixosConfigurations // inputs.self.darwinConfigurations;
# homeConfigurations = inputs.self.homeConfigurations;
# };
# };
# }
}

View file

@ -1,5 +0,0 @@
{...}: {
bosun = {
key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPjqieS4GkYAa1WRYZpxjgYsj7VGZ9U+rTFCkX8M0umD";
};
}

View file

@ -1,110 +0,0 @@
{
pkgs,
config,
...
}: {
home.packages = with pkgs; [
# Editors
jetbrains-toolbox # Installer for JetBrains IDEs
zed-editor
code-cursor
vscode
atuin-desktop
rfc # TUI-based RFC reader
nix-init # Generate Nix packages from URLs
install-nothing
# Language Servers
lua-language-server
rust-analyzer
nodePackages.typescript
nodePackages.typescript-language-server
nil # nix lsp
# trurl # Parsing and manipulating URLs via CLI
pandoc # Document converter
ripgrep # Grep file search
dig # DNS
onefetch # Git information tool
tokei # Like cloc
gource # Git history viz
zeal # Offline documentation browser
harbor.dedoc # Terminal-based documentation viewer
just # Just a command runner
claude-monitor
devenv
gitui
tea
harbor.oryx # TUI for sniffing network traffic using eBPF
# BMAD
sox
ffmpeg
bc
pipx
piper-tts
pulseaudioFull
# Build tools
cargo
glibc
gcc
php82
php82Packages.composer
bun
nomad
];
bosun.secrets.npmrc = {
rekeyFile = "npmrc.age";
path = "${config.home.homeDirectory}/.npmrc";
};
programs = {
go.enable = true;
direnv = {
enable = true;
nix-direnv.enable = true;
config.global.log_filter = "^$";
};
claude-code = {
enable = true;
# package = inputs.unstable.${system}.claude-code;
# mcpServers = {
# fetch = {
# args = ["-y" "@modelcontextprotocol/server-fetch"];
# command = "npx";
# type = "stdio";
# };
# playwright = {
# args = ["-y" "@modelcontextprotocol/server-playwright"];
# command = "npx";
# type = "stdio";
# };
# stackexchange = {
# args = ["-y" "mcp-server-stackexchange"];
# command = "npx";
# type = "stdio";
# };
# arxiv = {
# args = ["-y" "mcp-server-arxiv"];
# command = "npx";
# type = "stdio";
# };
# claudezilla = {
# command = "bun";
# args = ["/home/toph/code/vendor/claudezilla/mcp/server.js"];
# type = "stdio";
# };
# };
};
};
}

View file

@ -1,11 +0,0 @@
{...}: {
programs.jujutsu = {
enable = true;
settings = {
user = {
name = "Christopher Mühl";
email = "toki@toph.so";
};
};
};
}

View file

@ -1,30 +0,0 @@
{pkgs, ...}: let
defaultApplicationPackages = with pkgs; [
nautilus # file viewer
loupe # image viewer
kdePackages.okular # pdf viewer
# kdePackages.ark # Archives
vlc # Video player
];
in {
home.packages = with pkgs;
[
# Simple browsers for HTML
qutebrowser
harbor.firefox-with-context # Open URLs in different browser profiles based on context
]
++ defaultApplicationPackages;
xdg.mimeApps = {
enable = true;
inherit defaultApplicationPackages;
# Only want to use qute for HTML files, not URLs
defaultApplications = {
"text/html" = "qutebrowser";
"x-scheme-handler/http" = "firefox-with-context";
"x-scheme-handler/https" = "firefox-with-context";
};
};
}

View file

@ -1,6 +0,0 @@
{...}: {
programs.niri.settings.spawn-at-startup = [
# open fastfetch by default
{argv = ["kitty" "--title" "'fastfetch'" "sh" "-c" "'fastfetch; read'"];}
];
}

View file

@ -1,14 +0,0 @@
{pkgs, ...}: {
home.packages = [pkgs.wakatime-cli];
# programs.fish = {
# interactiveShellInit = ''
# function __wakatime_hook --on-event fish_prompt
# wakatime-cli --write --plugin "fish-wakatime/0.1" \
# --entity-type app \
# --project (basename (pwd)) \
# --entity (pwd) &
# end
# '';
# };
}

View file

@ -1,16 +0,0 @@
{
pkgs,
config,
...
} @ all: {
bosun.key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHl33DPxxzxrNNjM8rL4ktAj4ExzCyGiU8rKog0csxNA";
imports =
[
];
home.username = "christopher";
home.homeDirectory = "/Users/christopher";
elements.kitty.enable = true;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 MiB

View file

@ -1,10 +0,0 @@
{...}: {
system.stateVersion = 5;
# bosun = {
# key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPjqieS4GkYAa1WRYZpxjgYsj7VGZ9U+rTFCkX8M0umD";
# };
# For some reason this is required for hm to work with nix-darwin
# users.users.christopher = {};
}

View file

@ -1,5 +0,0 @@
{
imports = [
./secrets.nix
];
}

View file

@ -1,8 +0,0 @@
{
inputs,
...
}: {
imports = [
# inputs.agenix.darwinModules.default
];
}

View file

@ -1,16 +1,10 @@
{inputs, ...}: let
inherit (inputs) self;
mkHome = user: host: system: inputs.home-manager.lib.homeManagerConfiguration {
pkgs = inputs.nixpkgs.legacyPackages.${system};
extraSpecialArgs = {
inherit inputs;
hostname = host;
};
modules = [
mkHome = user: host: {
imports = [
(self + "/configurations/home/${user}@${host}")
(self + "/modules/home")
(self + "/home/by-host/${host}")
];
};
in {
@ -19,7 +13,8 @@ in {
];
flake.homeConfigurations = {
"toph@endurance" = mkHome "toph" "endurance" "x86_64-linux";
"toph@vasa" = mkHome "toph" "vasa" "x86_64-darwin";
"toph@endurance" = mkHome "toph" "endurance";
"toph@vasa" = mkHome "toph" "vasa";
"toph@aepplet" = mkHome "toph" "aepplet";
};
}

View file

@ -3,7 +3,7 @@
mkHost = hostname: config:
{
path = ../../hosts/${hostname};
path = ../../configurations/nixos/${hostname};
deployable = true;
specialArgs = {inherit inputs hostname;};
}

View file

@ -1,8 +1,4 @@
{
pkgs,
hostname,
...
}: {
{ pkgs, ... }: {
# the `modules/generic` folder is generic only across nixos and darwin, not
# across home manager. home modules are in `modules/home`
imports = [
@ -11,16 +7,10 @@
./secrets.nix
];
# TODO: Move all of these into their own modules?
networking.hostName = hostname;
environment.systemPackages = with pkgs; [
pre-commit
git
gitleaks
helix
fish
just
nh
age

View file

@ -2,22 +2,15 @@
pkgs,
lib,
inputs,
hostname,
...
}: {
nix = {
package = pkgs.lixPackageSets.stable.lix;
# TODO: Is this even needed with lix?
# extraOptions = ''
# experimental-features = nix-command flakes
# '';
# automatic cleanup
gc = {
automatic = true;
# TODO: nix-darwin uses "interval" as a key
dates = lib.mkIf (hostname != "vasa") "weekly";
dates = "weekly";
options = "--delete-older-than 21d";
};

View file

@ -11,6 +11,11 @@
with lib; let
cfg = config.bosun;
in {
imports = [
inputs.agenix.nixosModules.default
inputs.agenix-rekey.nixosModules.default
];
options.bosun = {
rekeyPath = mkOption {
type = types.str;

View file

@ -19,7 +19,6 @@ in {
enable = true;
settings = {
cursor_trail = "1";
window_padding_width = "3 3";
paste_actions = "no-op";
# font_family = "Monaspace Neon NF";

View file

@ -5,12 +5,5 @@
./system.nix
./users.nix
./nix-ld.nix
./ssh.nix
./secrets.nix
];
console = {
font = "Lat2-Terminus16";
useXkbConfig = true; # use xkbOptions in tty.
};
}

View file

@ -1,16 +1,11 @@
{
inputs,
pkgs,
lib,
config,
...
}: let
inherit (lib) mkIf;
sddmTheme = pkgs.sddm-astronaut.override {
embeddedTheme = "japanese_aesthetic";
themeConfig = {
};
};
in {
imports = [
#inputs.niri.nixosModules.niri
@ -20,11 +15,9 @@ in {
environment.systemPackages = with pkgs; [
wayland-utils
wl-clipboard
# libsForQt5.qtstyleplugin-kvantum
libsForQt5.qtstyleplugin-kvantum
xwayland-satellite
nautilus
sddmTheme
kdePackages.qtmultimedia # required for our sddm theme
];
programs.niri = {
@ -33,35 +26,21 @@ in {
};
services = {
xserver = {
enable = true;
displayManager.setupCommands = ''
/run/current-system/sw/bin/xrandr --output HDMI-A-1 --primary
/run/current-system/sw/bin/xrandr --output DP-3 --right-of HDMI-A-1 --rotate left
'';
};
xserver.enable = true;
displayManager = {
defaultSession = "niri";
sddm = let
theme = "sddm-astronaut-theme";
in {
sddm = {
enable = true;
package = pkgs.kdePackages.sddm;
# wayland.enable = true;
inherit theme;
extraPackages = [sddmTheme];
settings.Theme.Current = theme;
wayland.enable = true;
};
};
};
xdg.portal = {
enable = true;
# xdgOpenUsePortal = true;
xdgOpenUsePortal = true;
config.common.default = "gtk";
extraPortals = with pkgs; [

View file

@ -1,16 +0,0 @@
{
config,
inputs',
inputs,
hostname,
pkgs,
lib,
self,
...
}: {
imports = [
inputs.agenix.nixosModules.default
inputs.agenix-rekey.nixosModules.default
../generic/secrets.nix
];
}

View file

@ -1,7 +1,8 @@
{...}: {
imports = [
./lnxlink.nix
./beszel.nix
./ollama.nix
./traefik.nix
./metrics.nix
];
}

View file

@ -0,0 +1,28 @@
{
config,
pkgs,
lib,
...
}:
with lib; let
cfg = config.services.lnxlink;
in {
options.services = {
lnxlink = {
enable = mkEnableOption "Enable LNXlink";
};
};
config = mkIf cfg.enable {
systemd.services.lnxlink = {
enable = true;
wantedBy = ["multi-user.target"];
serviceConfig = {
# Note: Logging will also be done to the working directory, so logs will
# be lost upon a restart.
WorkingDirectory = "/tmp";
ExecStart = "${pkgs.harbor.lnxlink}/bin/lnxlink -i -c ${./lnxlink.yaml}";
};
};
};
}

View file

@ -0,0 +1,84 @@
mqtt:
prefix: lnxlink
clientId: cobalt
server: nanomq.intern.muehl.dev
port: 1883
auth:
user: cobalt
pass: cobalt
tls: false
keyfile: ''
certfile: ''
ca_certs: ''
discovery:
enabled: true
lwt:
enabled: true
qos: 1
clear_on_off: true
update_interval: 5
update_on_change: false
hass_url: null
hass_api: null
modules: null
custom_modules: null
exclude:
- audio_select
- active_window
- bash
- battery
- beacondb
- bluetooth
- boot_select
- brightness
- fullscreen
- gpio
- gpu
- idle
- inference_time
- ir_remote
- keep_alive
- keyboard_hotkeys
- media
- mouse
- network
- notify
- power_profile
- restful
- screen_onoff
- screenshot
- send_keys
- speech_recognition
- systemd
- sys_updates
- steam
- wifi
- webcam
- xdg_open
- wol
- docker
settings:
systemd: null
gpio:
inputs: null
outputs: null
hotkeys: null
battery:
include_batteries: []
exclude_batteries: []
disk_usage:
include_disks: []
exclude_disks: []
statistics: https://analyzer.bkbilly.workers.dev
bash:
allow_any_command: false
expose: null
mounts:
autocheck: false
directories: []
ir_remote:
receiver: null
transmitter: null
buttons: []
restful:
port: 8112

View file

@ -1,23 +0,0 @@
{...}: {
services = {
tailscale = {
enable = true;
};
prometheus.exporters = {
node = {
enable = true;
port = 9000;
enabledCollectors = [
"systemd"
"swap"
];
};
# tailscale = {
# enable = true;
# port = 9001;
# };
};
};
}

View file

@ -1,10 +0,0 @@
{...}: {
services.openssh = {
enable = true;
settings = {
PasswordAuthentication = false;
# TODO: Determine which user to allow!
AllowUsers = ["toph" "root"];
};
};
}

View file

@ -16,12 +16,8 @@
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
backupFileExtension = "hm-bak";
users.toph.imports = [
(inputs.self + "/modules/home")
(inputs.self + "/home/by-host/${hostname}")
];
users.toph = inputs.self.homeConfigurations."toph@${hostname}";
extraSpecialArgs = {
inherit inputs hostname;
@ -31,7 +27,6 @@
users = {
users.toph = {
isNormalUser = true;
uid = 1000;
initialPassword = "wheel";
# hashedPasswordFile = config.age.secrets.tophPassword.path;
shell = pkgs.fish;

View file

@ -8,14 +8,13 @@
# wrapper that provides channels arg to each overlay
withChannels = overlayFn: final: prev: let
# Import channels with the same config as the main nixpkgs
importChannel = input:
import input {
system = final.stdenv.hostPlatform.system;
config = final.config;
};
importChannel = input: import input {
system = final.stdenv.hostPlatform.system;
config = final.config;
};
in
overlayFn {
inherit inputs lib;
inherit inputs;
channels =
{
nixpkgs = final;
@ -32,5 +31,4 @@ in [
(withChannels (import ./lix.nix))
(withChannels (import ./packages.nix))
(withChannels (import ./unstable.nix))
(withChannels (import ./spacedrive.nix))
]

View file

@ -1,20 +0,0 @@
{
channels,
lib,
...
}: final: prev: {
spacedrive-v2 = channels.unstable.spacedrive.overrideAttrs (old: {
version = "2.0.0-alpha.1";
src = prev.fetchurl {
url = "https://github.com/spacedriveapp/spacedrive/releases/download/v2.0.0-alpha.1/Spacedrive-linux-x86_64.deb";
hash = "sha256-26qxNO17DTYQSYtH6aRy0PoNpb4BGeoZWOQWZtfV3IY=";
};
buildInputs =
(old.buildInputs or [])
++ (with channels.unstable; [
libheif
ffmpeg_7-full.lib
]);
});
}

View file

@ -0,0 +1,37 @@
{
pkgs,
lib,
...
}:
pkgs.python3Packages.buildPythonApplication {
pname = "lnxlink";
version = "2025.7.0";
pyproject = true;
# Linking my fork here which allows for newer versions of setuptools and wheel.
# Also includes some fixes that make the program actually work with NixOS.
src = pkgs.fetchFromGitHub {
owner = "padarom";
repo = "lnxlink";
rev = "7202e48";
hash = "sha256-E2J1d9D5SJWGEutAPAo1BM98cMzH7QrqIz3yrlXpzGE=";
};
build-system = with pkgs.python3Packages; [setuptools wheel];
dependencies = with pkgs.python3Packages; [
distro
pyyaml
paho-mqtt
requests
psutil
inotify
jeepney
];
meta = {
homepage = "https://github.com/bkbilly/lnxlink";
description = "Effortlessly manage your Linux machine using MQTT.";
license = lib.licenses.mit;
mainProgram = "lnxlink";
};
}

View file

@ -0,0 +1,35 @@
{
lib,
stdenv,
fetchurl,
}:
stdenv.mkDerivation rec {
pname = "oxigraph";
version = "0.5.3-post.1";
src = fetchurl {
url = "https://github.com/oxigraph/oxigraph/releases/download/v${version}/oxigraph_v${version}_x86_64_linux_gnu";
hash = "sha256-6yLJ8wuhGu2GoCWMji+Lt1WoDZxRmTLXVMwKb3+ByRQ=";
};
dontUnpack = true;
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/bin
cp $src $out/bin/oxigraph
chmod +x $out/bin/oxigraph
runHook postInstall
'';
meta = with lib; {
description = "SPARQL graph database";
homepage = "https://github.com/oxigraph/oxigraph";
license = with licenses; [asl20 mit];
maintainers = [];
mainProgram = "oxigraph";
platforms = ["x86_64-linux"];
};
}

View file

@ -0,0 +1,5 @@
{pkgs, ...}:
pkgs.writeShellApplication {
name = "connect-to-mercury";
text = builtins.readFile ./connect-to-mercury;
}

View file

@ -0,0 +1,7 @@
age-encryption.org/v1
-> ssh-ed25519 /u/eYA BvO3LN0SaFuuw7V5V+qRkAKFtW+ASCtMEo+HBOnccRk
2tdN2DqV/NKLX00LBp012xqimkBCdbZBFPXoQOWDqKc
-> ig7-grease 0X s
I8yjO2SGIHc0WeWWDQ51XA
--- ADjzRKqqYst1LvYy8n4DsZnHLiBFv+r+H+NdiHJ8V64
?¬´~<cô¨ÄmUP”æå³Ñ(ÊnÉq<C389>?“×p°ï<C2B0>RµVÒJt?Ù%Å´Ëhg,žó<C5BE>À±éCÓ-wÓÄšnÊšNa¹‰9<E280B0>“¹|Fz_ß'jíÂ<C382>`<60>lœâî*Z1åBP¾"búá‘ò/ñôÒΓWærßa¥ïÓÞ ¾"Œy?Ö$¸‰„,jÞn#¯ŒÎ;îw…óí[ŽËɳœ

Binary file not shown.

Binary file not shown.

BIN
secrets/victoria.env.age Normal file

Binary file not shown.