Compare commits
10 commits
a7494307a1
...
dc1712cf46
| Author | SHA1 | Date | |
|---|---|---|---|
| dc1712cf46 | |||
| e33187bf0c | |||
| a319e55cf2 | |||
| 2c61d217a1 | |||
|
|
bd0a03e7b8 | ||
| 08f1aefbd1 | |||
| 4f7e125ed3 | |||
| 8cb043ccde | |||
| ccf1408352 | |||
| 9046677414 |
|
|
@ -1,13 +0,0 @@
|
|||
{...}: {
|
||||
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 = {};
|
||||
}
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
{pkgs, ...}: {
|
||||
bosun.key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBUKDCjB0VpQubi8BfnYKbh4MIE1tcvKQesdoPE4NXAf";
|
||||
|
||||
home.packages = with pkgs; [
|
||||
helix
|
||||
];
|
||||
}
|
||||
|
|
@ -1,106 +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
|
||||
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`.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
{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";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
{...}: {
|
||||
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'"];}
|
||||
];
|
||||
}
|
||||
|
Before Width: | Height: | Size: 424 KiB |
|
Before Width: | Height: | Size: 311 KiB |
|
|
@ -1,5 +0,0 @@
|
|||
- 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
|
||||
|
Before Width: | Height: | Size: 345 KiB |
|
Before Width: | Height: | Size: 2.2 MiB |
|
|
@ -1,32 +0,0 @@
|
|||
{
|
||||
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
|
||||
];
|
||||
}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
{pkgs, ...}: {
|
||||
bosun.key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHl33DPxxzxrNNjM8rL4ktAj4ExzCyGiU8rKog0csxNA";
|
||||
|
||||
home.packages = with pkgs; [
|
||||
harbor.to-s3
|
||||
harbor.connect-to-mercury
|
||||
];
|
||||
}
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
{
|
||||
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
|
|
@ -115,6 +115,33 @@
|
|||
"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",
|
||||
|
|
@ -238,6 +265,29 @@
|
|||
"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,
|
||||
|
|
@ -301,6 +351,38 @@
|
|||
"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": [
|
||||
|
|
@ -359,6 +441,28 @@
|
|||
}
|
||||
},
|
||||
"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",
|
||||
|
|
@ -379,7 +483,7 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts_5": {
|
||||
"flake-parts_6": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"stylix",
|
||||
|
|
@ -400,7 +504,7 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts_6": {
|
||||
"flake-parts_7": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": "nixpkgs-lib_3"
|
||||
},
|
||||
|
|
@ -436,6 +540,27 @@
|
|||
"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,
|
||||
|
|
@ -509,6 +634,28 @@
|
|||
"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": {
|
||||
|
|
@ -528,6 +675,33 @@
|
|||
"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": [
|
||||
|
|
@ -556,11 +730,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1765480374,
|
||||
"narHash": "sha256-HlbvQAqLx7WqZFFQZ8nu5UUJAVlXiV/kqKbyueA8srw=",
|
||||
"lastModified": 1769723138,
|
||||
"narHash": "sha256-kgkwjs33YfJasADIrHjHcTIDs3wNX0xzJhnUP+oldEw=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "39cb677ed9e908e90478aa9fe5f3383dfc1a63f3",
|
||||
"rev": "175532b6275b34598a0ceb1aef4b9b4006dd4073",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -603,6 +777,36 @@
|
|||
"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",
|
||||
|
|
@ -659,6 +863,22 @@
|
|||
"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,
|
||||
|
|
@ -838,7 +1058,7 @@
|
|||
},
|
||||
"nur": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts_4",
|
||||
"flake-parts": "flake-parts_5",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
|
|
@ -905,6 +1125,75 @@
|
|||
"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",
|
||||
|
|
@ -920,6 +1209,7 @@
|
|||
"home-manager": "home-manager_2",
|
||||
"master": "master",
|
||||
"musnix": "musnix",
|
||||
"ngipkgs": "ngipkgs",
|
||||
"niri": "niri",
|
||||
"nixpkgs": "nixpkgs_6",
|
||||
"noctalia": "noctalia",
|
||||
|
|
@ -929,6 +1219,75 @@
|
|||
"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",
|
||||
|
|
@ -936,13 +1295,13 @@
|
|||
"base16-helix": "base16-helix",
|
||||
"base16-vim": "base16-vim",
|
||||
"firefox-gnome-theme": "firefox-gnome-theme",
|
||||
"flake-parts": "flake-parts_5",
|
||||
"flake-parts": "flake-parts_6",
|
||||
"gnome-shell": "gnome-shell",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"nur": "nur_2",
|
||||
"systems": "systems_4",
|
||||
"systems": "systems_5",
|
||||
"tinted-foot": "tinted-foot",
|
||||
"tinted-kitty": "tinted-kitty",
|
||||
"tinted-schemes": "tinted-schemes",
|
||||
|
|
@ -1009,6 +1368,21 @@
|
|||
}
|
||||
},
|
||||
"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=",
|
||||
|
|
@ -1125,13 +1499,34 @@
|
|||
"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": 1762977756,
|
||||
"narHash": "sha256-4PqRErxfe+2toFJFgcRKZ0UI9NSIOJa+7RXVtBhy4KE=",
|
||||
"lastModified": 1770197578,
|
||||
"narHash": "sha256-AYqlWrX09+HvGs8zM6ebZ1pwUqjkfpnv8mewYwAo+iM=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "c5ae371f1a6a7fd27823bc500d9390b38c05fa55",
|
||||
"rev": "00c21e4c93d963c50d4c0c89bfa84ed6e0694df2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -1161,7 +1556,7 @@
|
|||
},
|
||||
"waka-victoriametrics": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts_6",
|
||||
"flake-parts": "flake-parts_7",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
|
|
|
|||
35
flake.nix
|
|
@ -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,6 +55,10 @@
|
|||
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";
|
||||
};
|
||||
|
|
@ -86,33 +90,4 @@
|
|||
./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;
|
||||
# };
|
||||
# };
|
||||
# }
|
||||
}
|
||||
|
|
|
|||
5
home/by-host/aepplet/default.nix
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{...}: {
|
||||
bosun = {
|
||||
key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPjqieS4GkYAa1WRYZpxjgYsj7VGZ9U+rTFCkX8M0umD";
|
||||
};
|
||||
}
|
||||
|
|
@ -68,6 +68,11 @@ in {
|
|||
home.packages = with pkgs; [
|
||||
reader
|
||||
tdf
|
||||
slack
|
||||
signal-desktop
|
||||
telegram-desktop
|
||||
vesktop # Discord client
|
||||
# jitsi-meet
|
||||
];
|
||||
|
||||
accounts.email = {
|
||||
|
|
@ -6,7 +6,16 @@
|
|||
gtk = {
|
||||
enable = true;
|
||||
|
||||
iconTheme.name = "breeze-dark";
|
||||
iconTheme = {
|
||||
name = "Adwaita";
|
||||
package = pkgs.adwaita-icon-theme;
|
||||
};
|
||||
|
||||
theme = {
|
||||
name = "Adwaita";
|
||||
package = pkgs.gnome-themes-extra;
|
||||
};
|
||||
|
||||
# cursorTheme = {
|
||||
# name = "BreezeX-RosePineDawn-Linux";
|
||||
# package = pkgs.rose-pine-cursor;
|
||||
|
|
@ -14,9 +23,14 @@
|
|||
# };
|
||||
};
|
||||
|
||||
qt = {
|
||||
enable = true;
|
||||
style.name = "adwaita";
|
||||
};
|
||||
|
||||
home.sessionVariables = {
|
||||
GTK_USE_PORTAL = "1";
|
||||
GTK_THEME = "rose-pine";
|
||||
# GTK_THEME = "rose-pine";
|
||||
XCURSOR_SIZE = "32";
|
||||
};
|
||||
}
|
||||
110
home/by-host/endurance/config/dev.nix
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
{
|
||||
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";
|
||||
# };
|
||||
# };
|
||||
};
|
||||
};
|
||||
}
|
||||
11
home/by-host/endurance/config/jujutsu.nix
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
{...}: {
|
||||
programs.jujutsu = {
|
||||
enable = true;
|
||||
settings = {
|
||||
user = {
|
||||
name = "Christopher Mühl";
|
||||
email = "toki@toph.so";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
30
home/by-host/endurance/default-applications.nix
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
{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";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
pkgs,
|
||||
config,
|
||||
inputs,
|
||||
...
|
||||
} @ all: {
|
||||
bosun.key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHl33DPxxzxrNNjM8rL4ktAj4ExzCyGiU8rKog0csxNA";
|
||||
|
|
@ -10,7 +11,7 @@
|
|||
# inputs.ovos.homeManagerModules.default
|
||||
./gaming.nix
|
||||
./ssh.nix
|
||||
./email.nix
|
||||
./communication.nix
|
||||
./gpg
|
||||
./niri
|
||||
./stylix.nix
|
||||
|
|
@ -153,6 +154,9 @@
|
|||
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";
|
||||
|
|
@ -15,6 +15,11 @@
|
|||
# gimpPlugins.bimp # batch image manipulation, broken atm
|
||||
# rawtherapee
|
||||
|
||||
# CAD
|
||||
freecad
|
||||
openscad
|
||||
antimony
|
||||
|
||||
vcv-rack # eurorack synth simulator
|
||||
supercollider # audio programming language
|
||||
];
|
||||
|
|
@ -23,12 +23,22 @@
|
|||
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
|
||||
];
|
||||
6
home/by-host/endurance/niri/autostart.nix
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{...}: {
|
||||
programs.niri.settings.spawn-at-startup = [
|
||||
# open fastfetch by default
|
||||
{argv = ["kitty" "--title" "'fastfetch'" "sh" "-c" "'fastfetch; read'"];}
|
||||
];
|
||||
}
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
programs.niri.settings = {
|
||||
binds = with config.lib.niri.actions; {
|
||||
"Mod+space".action = spawn "fuzzel";
|
||||
"Mod+e".action = spawn "dolphin";
|
||||
"Mod+e".action = spawn "nautilus";
|
||||
"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";
|
||||
|
|
@ -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/configurations/home/toph@endurance/wallpapers";
|
||||
directory = "/nix/harbor/desktops/home/wallpapers";
|
||||
recursiveSearch = false;
|
||||
randomEnabled = true;
|
||||
};
|
||||
|
|
@ -15,9 +15,17 @@
|
|||
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.firefox.profileNames = ["default" "work" "streaming"];
|
||||
targets = {
|
||||
gtk.enable = false;
|
||||
qt.enable = false;
|
||||
firefox.profileNames = ["default" "work" "streaming"];
|
||||
};
|
||||
|
||||
cursor = {
|
||||
package = pkgs.rose-pine-cursor;
|
||||
14
home/by-host/endurance/wakatime.nix
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
{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
|
||||
# '';
|
||||
# };
|
||||
}
|
||||
16
home/by-host/vasa/default.nix
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
} @ all: {
|
||||
bosun.key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHl33DPxxzxrNNjM8rL4ktAj4ExzCyGiU8rKog0csxNA";
|
||||
|
||||
imports =
|
||||
[
|
||||
];
|
||||
|
||||
home.username = "christopher";
|
||||
home.homeDirectory = "/Users/christopher";
|
||||
|
||||
elements.kitty.enable = true;
|
||||
}
|
||||
BIN
home/wallpapers/portrait/wallhaven-8ogqyj.png
Normal file
|
After Width: | Height: | Size: 4.4 MiB |
BIN
home/wallpapers/portrait/wallhaven-xlrk9l.png
Normal file
|
After Width: | Height: | Size: 2.9 MiB |
BIN
home/wallpapers/ultrawide/wallhaven-601kyq.png
Normal file
|
After Width: | Height: | Size: 7.1 MiB |
|
Before Width: | Height: | Size: 7.4 MiB After Width: | Height: | Size: 7.6 MiB |
BIN
home/wallpapers/ultrawide/wallhaven-72k3l3.png
Normal file
|
After Width: | Height: | Size: 7.2 MiB |
BIN
home/wallpapers/ultrawide/wallhaven-j3opy5.png
Normal file
|
After Width: | Height: | Size: 3.9 MiB |
BIN
home/wallpapers/ultrawide/wallhaven-m96dy9.png
Normal file
|
After Width: | Height: | Size: 8.6 MiB |
BIN
home/wallpapers/ultrawide/wallhaven-q6gqo5.png
Normal file
|
After Width: | Height: | Size: 4.9 MiB |
BIN
home/wallpapers/ultrawide/wallhaven-rdqr7w.png
Normal file
|
After Width: | Height: | Size: 12 MiB |
|
|
@ -10,50 +10,32 @@
|
|||
];
|
||||
|
||||
bosun = {
|
||||
# quirks = ["avahi" "docker"];
|
||||
|
||||
key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPjqieS4GkYAa1WRYZpxjgYsj7VGZ9U+rTFCkX8M0umD";
|
||||
|
||||
profiles = {
|
||||
docker.enable = true;
|
||||
work.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
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
|
||||
];
|
||||
|
||||
console = {
|
||||
font = "Lat2-Terminus16";
|
||||
keyMap = lib.mkForce "de";
|
||||
programs = {
|
||||
vim.enable = true;
|
||||
git.enable = true;
|
||||
};
|
||||
|
||||
programs.vim.enable = true;
|
||||
programs.git.enable = true;
|
||||
|
||||
# Disable the firewall so that all traffic is allowed
|
||||
networking.firewall.enable = false;
|
||||
|
||||
|
|
@ -9,7 +9,6 @@
|
|||
inputs.flatpak.nixosModules.nix-flatpak
|
||||
./hardware.nix
|
||||
./disko.nix
|
||||
./metrics.nix
|
||||
];
|
||||
|
||||
bosun = {
|
||||
|
|
@ -23,34 +22,64 @@
|
|||
key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPjqieS4GkYAa1WRYZpxjgYsj7VGZ9U+rTFCkX8M0umD";
|
||||
};
|
||||
|
||||
qt = {
|
||||
enable = true;
|
||||
platformTheme = "qt5ct";
|
||||
style = "kvantum";
|
||||
};
|
||||
|
||||
networking = {
|
||||
hostName = "endurance";
|
||||
firewall.enable = false;
|
||||
interfaces.eno1.wakeOnLan.enable = true;
|
||||
};
|
||||
|
||||
# Set your time zone.
|
||||
time.timeZone = "Europe/Berlin";
|
||||
|
||||
console = {
|
||||
font = "Lat2-Terminus16";
|
||||
useXkbConfig = true; # use xkbOptions in tty.
|
||||
};
|
||||
|
||||
xdg.portal = {
|
||||
# Nomad client-only (no server) — joins the cluster for GPU/compute tasks
|
||||
services.nomad = {
|
||||
enable = true;
|
||||
xdgOpenUsePortal = 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";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Make nomad CLI work with Tailscale-bound API
|
||||
environment.etc."profile.d/nomad.sh".text = ''
|
||||
export NOMAD_ADDR="http://$(tailscale ip -4):4646"
|
||||
'';
|
||||
|
||||
programs = {
|
||||
weylus.users = ["toph"];
|
||||
|
||||
gnupg.agent = {
|
||||
enable = true;
|
||||
pinentryPackage = pkgs.pinentry-gtk2;
|
||||
enableSSHSupport = true;
|
||||
};
|
||||
|
||||
dconf.enable = true;
|
||||
|
||||
steam = {
|
||||
|
|
@ -58,10 +87,7 @@
|
|||
protontricks.enable = true;
|
||||
remotePlay.openFirewall = true;
|
||||
};
|
||||
# VR support
|
||||
envision.enable = true;
|
||||
|
||||
# For game-related system optimisations
|
||||
gamemode.enable = true;
|
||||
|
||||
_1password.enable = true;
|
||||
|
|
@ -71,6 +97,20 @@
|
|||
# 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 = {
|
||||
|
|
@ -83,9 +123,6 @@
|
|||
];
|
||||
};
|
||||
|
||||
openssh.enable = true;
|
||||
openssh.settings.PasswordAuthentication = false;
|
||||
|
||||
hardware.openrgb.enable = true;
|
||||
|
||||
# Bluetooth manager
|
||||
|
|
@ -98,33 +135,8 @@
|
|||
'';
|
||||
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;
|
||||
|
|
@ -147,19 +159,6 @@
|
|||
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
|
||||
|
|
@ -208,11 +207,6 @@
|
|||
overdrive.enable = true;
|
||||
};
|
||||
|
||||
bluetooth = {
|
||||
enable = true;
|
||||
powerOnBoot = true;
|
||||
};
|
||||
|
||||
graphics = {
|
||||
enable = true;
|
||||
enable32Bit = true;
|
||||
|
|
@ -221,6 +215,11 @@
|
|||
];
|
||||
};
|
||||
|
||||
bluetooth = {
|
||||
enable = true;
|
||||
powerOnBoot = true;
|
||||
};
|
||||
|
||||
# SANE scanner support
|
||||
sane = {
|
||||
enable = true;
|
||||
|
|
@ -237,10 +236,12 @@
|
|||
keyboard.zsa.enable = true;
|
||||
};
|
||||
|
||||
system.stateVersion = "23.05"; # Do not change this value!
|
||||
# Do not change this value!
|
||||
system.stateVersion = "23.05";
|
||||
|
||||
boot = {
|
||||
# Set up our bootloader
|
||||
boot.loader = {
|
||||
loader = {
|
||||
efi.canTouchEfiVariables = true;
|
||||
grub = {
|
||||
enable = true;
|
||||
|
|
@ -249,25 +250,13 @@
|
|||
};
|
||||
};
|
||||
|
||||
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; [
|
||||
extraModulePackages = with config.boot.kernelPackages; [
|
||||
v4l2loopback
|
||||
];
|
||||
boot.kernelModules = ["v4l2loopback"];
|
||||
boot.extraModprobeConfig = ''
|
||||
|
||||
kernelModules = ["v4l2loopback"];
|
||||
extraModprobeConfig = ''
|
||||
options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1
|
||||
'';
|
||||
};
|
||||
}
|
||||
10
hosts/vasa/default.nix
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
{...}: {
|
||||
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 = {};
|
||||
}
|
||||
5
modules/darwin/default.nix
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
imports = [
|
||||
./secrets.nix
|
||||
];
|
||||
}
|
||||
8
modules/darwin/secrets.nix
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
# inputs.agenix.darwinModules.default
|
||||
];
|
||||
}
|
||||
|
|
@ -1,10 +1,16 @@
|
|||
{inputs, ...}: let
|
||||
inherit (inputs) self;
|
||||
|
||||
mkHome = user: host: {
|
||||
imports = [
|
||||
(self + "/configurations/home/${user}@${host}")
|
||||
mkHome = user: host: system: inputs.home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = inputs.nixpkgs.legacyPackages.${system};
|
||||
extraSpecialArgs = {
|
||||
inherit inputs;
|
||||
hostname = host;
|
||||
};
|
||||
|
||||
modules = [
|
||||
(self + "/modules/home")
|
||||
(self + "/home/by-host/${host}")
|
||||
];
|
||||
};
|
||||
in {
|
||||
|
|
@ -13,8 +19,7 @@ in {
|
|||
];
|
||||
|
||||
flake.homeConfigurations = {
|
||||
"toph@endurance" = mkHome "toph" "endurance";
|
||||
"toph@vasa" = mkHome "toph" "vasa";
|
||||
"toph@aepplet" = mkHome "toph" "aepplet";
|
||||
"toph@endurance" = mkHome "toph" "endurance" "x86_64-linux";
|
||||
"toph@vasa" = mkHome "toph" "vasa" "x86_64-darwin";
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
mkHost = hostname: config:
|
||||
{
|
||||
path = ../../configurations/nixos/${hostname};
|
||||
path = ../../hosts/${hostname};
|
||||
deployable = true;
|
||||
specialArgs = {inherit inputs hostname;};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,8 @@
|
|||
{ pkgs, ... }: {
|
||||
{
|
||||
pkgs,
|
||||
hostname,
|
||||
...
|
||||
}: {
|
||||
# the `modules/generic` folder is generic only across nixos and darwin, not
|
||||
# across home manager. home modules are in `modules/home`
|
||||
imports = [
|
||||
|
|
@ -7,10 +11,16 @@
|
|||
./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
|
||||
|
|
|
|||
|
|
@ -2,15 +2,22 @@
|
|||
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;
|
||||
dates = "weekly";
|
||||
# TODO: nix-darwin uses "interval" as a key
|
||||
dates = lib.mkIf (hostname != "vasa") "weekly";
|
||||
options = "--delete-older-than 21d";
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -11,11 +11,6 @@
|
|||
with lib; let
|
||||
cfg = config.bosun;
|
||||
in {
|
||||
imports = [
|
||||
inputs.agenix.nixosModules.default
|
||||
inputs.agenix-rekey.nixosModules.default
|
||||
];
|
||||
|
||||
options.bosun = {
|
||||
rekeyPath = mkOption {
|
||||
type = types.str;
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ in {
|
|||
enable = true;
|
||||
|
||||
settings = {
|
||||
cursor_trail = "1";
|
||||
window_padding_width = "3 3";
|
||||
paste_actions = "no-op";
|
||||
# font_family = "Monaspace Neon NF";
|
||||
|
|
|
|||
|
|
@ -5,5 +5,12 @@
|
|||
./system.nix
|
||||
./users.nix
|
||||
./nix-ld.nix
|
||||
./ssh.nix
|
||||
./secrets.nix
|
||||
];
|
||||
|
||||
console = {
|
||||
font = "Lat2-Terminus16";
|
||||
useXkbConfig = true; # use xkbOptions in tty.
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,16 @@
|
|||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) mkIf;
|
||||
|
||||
sddmTheme = pkgs.sddm-astronaut.override {
|
||||
embeddedTheme = "japanese_aesthetic";
|
||||
themeConfig = {
|
||||
};
|
||||
};
|
||||
in {
|
||||
imports = [
|
||||
#inputs.niri.nixosModules.niri
|
||||
|
|
@ -15,9 +20,11 @@ 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 = {
|
||||
|
|
@ -26,21 +33,35 @@ in {
|
|||
};
|
||||
|
||||
services = {
|
||||
xserver.enable = true;
|
||||
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
|
||||
'';
|
||||
};
|
||||
|
||||
displayManager = {
|
||||
defaultSession = "niri";
|
||||
|
||||
sddm = {
|
||||
sddm = let
|
||||
theme = "sddm-astronaut-theme";
|
||||
in {
|
||||
enable = true;
|
||||
wayland.enable = true;
|
||||
package = pkgs.kdePackages.sddm;
|
||||
|
||||
# wayland.enable = true;
|
||||
|
||||
inherit theme;
|
||||
extraPackages = [sddmTheme];
|
||||
settings.Theme.Current = theme;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
xdgOpenUsePortal = true;
|
||||
# xdgOpenUsePortal = true;
|
||||
config.common.default = "gtk";
|
||||
|
||||
extraPortals = with pkgs; [
|
||||
|
|
|
|||
16
modules/nixos/secrets.nix
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
config,
|
||||
inputs',
|
||||
inputs,
|
||||
hostname,
|
||||
pkgs,
|
||||
lib,
|
||||
self,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
inputs.agenix.nixosModules.default
|
||||
inputs.agenix-rekey.nixosModules.default
|
||||
../generic/secrets.nix
|
||||
];
|
||||
}
|
||||
|
|
@ -1,8 +1,7 @@
|
|||
{...}: {
|
||||
imports = [
|
||||
./lnxlink.nix
|
||||
./beszel.nix
|
||||
./ollama.nix
|
||||
./traefik.nix
|
||||
./metrics.nix
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,28 +0,0 @@
|
|||
{
|
||||
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}";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,84 +0,0 @@
|
|||
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
|
||||
23
modules/nixos/services/metrics.nix
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
{...}: {
|
||||
services = {
|
||||
tailscale = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
prometheus.exporters = {
|
||||
node = {
|
||||
enable = true;
|
||||
port = 9000;
|
||||
|
||||
enabledCollectors = [
|
||||
"systemd"
|
||||
"swap"
|
||||
];
|
||||
};
|
||||
# tailscale = {
|
||||
# enable = true;
|
||||
# port = 9001;
|
||||
# };
|
||||
};
|
||||
};
|
||||
}
|
||||
10
modules/nixos/ssh.nix
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
{...}: {
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
PasswordAuthentication = false;
|
||||
# TODO: Determine which user to allow!
|
||||
AllowUsers = ["toph" "root"];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -16,8 +16,12 @@
|
|||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
backupFileExtension = "hm-bak";
|
||||
|
||||
users.toph = inputs.self.homeConfigurations."toph@${hostname}";
|
||||
users.toph.imports = [
|
||||
(inputs.self + "/modules/home")
|
||||
(inputs.self + "/home/by-host/${hostname}")
|
||||
];
|
||||
|
||||
extraSpecialArgs = {
|
||||
inherit inputs hostname;
|
||||
|
|
@ -27,6 +31,7 @@
|
|||
users = {
|
||||
users.toph = {
|
||||
isNormalUser = true;
|
||||
uid = 1000;
|
||||
initialPassword = "wheel";
|
||||
# hashedPasswordFile = config.age.secrets.tophPassword.path;
|
||||
shell = pkgs.fish;
|
||||
|
|
|
|||
|
|
@ -8,13 +8,14 @@
|
|||
# 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 {
|
||||
importChannel = input:
|
||||
import input {
|
||||
system = final.stdenv.hostPlatform.system;
|
||||
config = final.config;
|
||||
};
|
||||
in
|
||||
overlayFn {
|
||||
inherit inputs;
|
||||
inherit inputs lib;
|
||||
channels =
|
||||
{
|
||||
nixpkgs = final;
|
||||
|
|
@ -31,4 +32,5 @@ in [
|
|||
(withChannels (import ./lix.nix))
|
||||
(withChannels (import ./packages.nix))
|
||||
(withChannels (import ./unstable.nix))
|
||||
(withChannels (import ./spacedrive.nix))
|
||||
]
|
||||
|
|
|
|||
20
overlays/spacedrive.nix
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
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
|
||||
]);
|
||||
});
|
||||
}
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
{
|
||||
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";
|
||||
};
|
||||
}
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
{
|
||||
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"];
|
||||
};
|
||||
}
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
{pkgs, ...}:
|
||||
pkgs.writeShellApplication {
|
||||
name = "connect-to-mercury";
|
||||
text = builtins.readFile ./connect-to-mercury;
|
||||
}
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
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…óí[ŽËɳœ
|
||||