Compare commits

...

7 Commits

17 changed files with 503 additions and 53 deletions

View File

@ -0,0 +1,7 @@
{
imports = [
./home.nix
./other.nix
./pvv.nix
];
}

25
home/config/ssh/home.nix Normal file
View File

@ -0,0 +1,25 @@
{ ... }:
{
programs.ssh.matchBlocks = {
suiseir = {
user = "h7x4";
hostname = "heimen.hopto.me";
port = 23934;
};
pir = {
user = "h7x4";
hostname = "gingakei.loginto.me";
port = 41348;
};
tsukir = {
user = "h7x4";
hostname = "gingakei.loginto.me";
port = 45497;
};
"git.nani.wtf git.tsuki.local git.seiun.cloud" = {
user = "git";
hostname = "gingakei.loginto.me";
port = 45497;
};
};
}

18
home/config/ssh/other.nix Normal file
View File

@ -0,0 +1,18 @@
{ lib, ... }:
{
programs.ssh.matchBlocks = {
"ntnu" = {
user = "oysteikt";
hostname = "login.stud.ntnu.no";
};
"gitlab.stud.idi.ntnu.no" = {
user = "git";
proxyJump = "pvv";
};
"pascal wack" = {
user = "h7x4";
hostname = "wiki.wackattack.eu";
port = 1337;
};
};
}

View File

@ -1,13 +1,23 @@
{ pkgs, lib, extendedLib, secrets, ... }:
{ pkgs, lib, extendedLib, ... }:
let
inherit (secrets.ssh.users.pvv) normalUser adminUser;
adminUser = "root";
normalUser = "oysteikt";
# http://www.pvv.ntnu.no/pvv/Maskiner
normalMachines = [
[ "hildring" "pvv-login" "pvv" ]
"demiurgen"
"eirin"
[ "jokum" "pvv-nix" ]
"bekkalokk"
"ildkule"
"shark"
"buskerud"
"bicep"
{
names = [ "bob" ];
proxyJump = "hildring";
}
"knutsen"
"isvegg"
[ "microbel" "pvv-users" "pvv-mail" ]
];
@ -16,18 +26,17 @@ let
[ "knakelibrak" "pvv-databases" ]
[ "spikkjeposche" "pvv-web" "pvv-wiki" "pvv-webmail" ]
"sleipner"
"fenris"
# "fenris"
"balduzius"
"joshua"
"skrotnisse"
# "skrotnisse"
"principal"
"tom"
"monty"
{
names = ["dvask"];
proxyJump = "monty";
}
# "monty"
# {
# names = [ "dvask" ];
# proxyJump = "monty";
# }
[ "innovation" "pvv-minecraft" ]
];
@ -44,7 +53,7 @@ let
inherit (lib.lists) head;
inherit (lib.strings) split;
in
names: { hostname = "${head names}.pvv.org"; };
names: { hostname = "${head names}.pvv.ntnu.no"; };
# AttrSet -> AttrSet -> AttrSet
convertMachineWithDefaults = defaults: normalizedMachine: let

View File

@ -8,7 +8,7 @@ in {
./shell.nix
./packages.nix
./config/ssh/hosts/pvv.nix
./config/ssh
./config/xdg
./programs/atuin.nix
@ -21,15 +21,13 @@ in {
./programs/less.nix
./programs/ncmpcpp.nix
./programs/neovim.nix
./programs/newsboat.nix
./programs/newsboat
./programs/tmux.nix
./programs/zsh
../modules/machineVars.nix
./modules/colors.nix
./modules/shellAliases.nix
inputs.secrets.outputs.home-config
] ++ optionals graphics [
./config/gtk.nix
@ -112,6 +110,10 @@ in {
enable = true;
# packageSet = pkgs.texlive.combined.scheme-medium;
};
tealdeer = {
enable = true;
settings.updates.auto_update = true;
};
zoxide.enable = true;
};

View File

@ -0,0 +1,118 @@
let
link = name: url: { inherit name url; };
short = short: name: url: { name = short; inherit url; };
dir = name: bookmarks: { inherit name bookmarks; };
in [
(short "tr" "Translate" "https://translate.google.no/?hl=no")
(short "gm" "Gmail" "https://mail.google.com/mail/u/0/#inbox")
(short "" "Jisho" "https://jisho.org/?color_theme=dark")
(short "Gitea" "Gitea - nani.wtf" "https://git.nani.wtf/explore/repos")
(link "GitHub" "http://github.com")
(short "/u/" "danger/u/" "https://dangeru.us/")
(link "PVV" "https://www.pvv.ntnu.no/")
(short "PVVM" "PVV Mail" "https://webmail2.pvv.ntnu.no/roundcube/")
(short "ΩV" "Omega Verksted" "https://omegav.no/")
(dir "Nix" [
(link "Nixpkgs" "https://github.com/NixOS/nixpkgs")
(link "Home-manager" "https://github.com/nix-community/home-manager")
(link "Nixpkgs Manual" "https://ryantm.github.io/nixpkgs/")
(link "Nix Lib Manual" "https://teu5us.github.io/nix-lib.html")
(link "Nix Lib" "https://github.com/NixOS/nixpkgs/tree/master/lib")
(link "Nix Lib - Strings" "https://github.com/NixOS/nixpkgs/blob/master/lib/strings.nix")
(link "Nix Lib - Lists" "https://github.com/NixOS/nixpkgs/blob/master/lib/lists.nix")
(link "Nix Lib - Attrs" "https://github.com/NixOS/nixpkgs/blob/master/lib/attrs.nix")
(link "Noogle" "https://noogle.dev/")
(link "Nixpkgs Hound" "https://search.nix.gsc.io/")
(short "NXPR" "Nixpkgs PR Progress Tracker" "https://nixpk.gs/pr-tracker.html")
(link "Nix package versions" "https://lazamar.co.uk/nix-versions/")
(link "Pkgs on Nix" "https://pkgs.on-nix.com/")
(link "NixOS Infra Status" "https://status.nixos.org/")
(link "NixOS R13Y" "https://r13y.com/")
])
(dir "CTF" [
(link "HackTheBox" "https://www.hackthebox.eu/")
(link "TryHackMe" "https://tryhackme.com/dashboard")
(link "OverTheWire" "https://overthewire.org/wargames/")
(link "NetGarage" "https://io.netgarage.org/")
(link "Exploit Education" "http://exploit.education/")
])
(dir "Misc & Tools" [
(link "ASCIIFlow" "https://asciiflow.com/#/")
(link "CopyChar" "https://copychar.cc/")
(link "CyberChef" "https://gchq.github.io/CyberChef/")
(link "Device Info" "https://www.deviceinfo.me/")
(link "Diagrams" "https://app.diagrams.net/")
(link "FakeMail" "http://www.fakemailgenerator.com/")
(link "FilePizza" "https://file.pizza/")
(link "IPLeak" "https://ipleak.net/")
(link "LaTeX" "https://www.codecogs.com/latex/eqneditor.php")
(link "ManualsLib" "https://www.manualslib.com/")
(link "Namechk" "https://namechk.com/")
(link "NamingSchemes" "https://namingschemes.com/")
(link "Oryx" "https://configure.ergodox-ez.com/ergodox-ez/layouts/53Pyn/latest/0")
(link "Pastebin" "https://pastebin.com/u/h7x4")
(link "PDFescape" "https://www.pdfescape.com/")
(link "Pixabay" "https://pixabay.com/")
(link "Pixlr" "https://pixlr.com/e/")
(link "Privnote" "https://privnote.com/")
(link "Quiver" "https://q.uiver.app/")
(short "RD" "RomajiDesu" "http://www.romajidesu.com/")
(link "waaai" "https://waa.ai/")
(link "NitroType" "https://www.nitrotype.com/race")
(link "Duolingo" "https://www.duolingo.com/learn")
(link "Kanji Garden" "https://kanji.garden/")
(link "Compiler Explorer" "https://godbolt.org/")
(link "Readme.so" "https://readme.so/")
(link "Regexr" "https://regexr.com/")
(link "Keybr" "https://www.keybr.com/")
(link "HackerRank" "https://www.hackerrank.com/")
(link "Project Euler" "https://projecteuler.net/archives")
(link "FlutterGems" "https://fluttergems.dev/")
(link "BashOneliners" "http://www.bashoneliners.com/oneliners/popular/")
(link "PosterDB" "https://theposterdb.com/")
(link "WikiChip" "https://en.wikichip.org/wiki/WikiChip")
(link "Gitea - dodsorf.as" "https://git.dodsorf.as/explore/repos")
(link "Gitea - feal.no" "https://git.feal.no/explore/repos")
(link "Gitea - glados.no" "https://git.glados.no/explore/repos")
(link "Chinese Text Project" "https://ctext.org/")
(link "Just delete me" "https://backgroundchecks.org/justdeleteme/")
(link "Unicode Resources" "http://xahlee.info/comp/unicode_essays_index.html")
(link "UTF8 Everywhere" "https://utf8everywhere.org/")
(link "Polar" "https://getpolarized.io/")
(link "Everything I Know" "https://wiki.nikitavoloboev.xyz/")
(link "Aphyr Posts" "https://aphyr.com/")
(link "Cursed Computer Iceberg" "https://suricrasia.online/iceberg/")
(link "EPWING dicts" "https://www.japaneselanguagetools.com/docs/other_dics.html")
(link "Itazuraneko" "https://itazuraneko.neocities.org/#learn")
(link " - The Gear Of Seasons" "https://hexe.net/")
(link "jpdb" "https://jpdb.io/")
])
(dir "Selfhosting" [
(link "NoIP" "https://my.noip.com/#!/dynamic-dns")
(link "Epik" "https://registrar.epik.com/domain/portfolio")
(link "ASUS Gateway" "http://router.asus.com/")
(link "Cloudflare Dashboard" "https://dash.cloudflare.com")
(link "WWW" "https://www.nani.wtf/")
(link "MAdmin" "https://madmin.nani.wtf")
(link "Git" "https://git.nani.wtf/explore/repos/")
(link "Hydra" "https://hydra.nani.wtf/")
(link "Docs" "https://docs.nani.wtf/")
(link "Grafana" "https://log.nani.wtf/")
])
(dir "NTNU" [
(link "Innsida" "https://innsida.ntnu.no/start#/feed/")
(link "Outlook" "https://outlook.office.com/mail/inbox")
(link "Blackboard" "https://ntnu.blackboard.com/")
(link "Grades" "https://grades.no/")
(link "Wikipendium" "https://www.wikipendium.no/")
(link "Inspera" "https://ntnu.inspera.no/")
(link "Shorty" "https://s.ntnu.no/")
(link "NTNU Tjenester" "https://i.ntnu.no/alt-innhold")
(link "EMNR" "https://emnr.no/")
])
]

View File

@ -0,0 +1,173 @@
{ pkgs, ... }:
{
"Amazon.com".metaData.hidden = true;
"Bing".metaData.hidden = true;
"Wikipedia (en)".metaData.hidden = true;
"Google".metaData.alias = "gg";
"DuckDuckGo".metaData.alias = "dd";
"Arch Package Repository" = {
urls = [{
template = "https://www.archlinux.org/packages/";
params = [{ name = "q"; value = "{searchTerms}"; }];
}];
icon = "${pkgs.super-tiny-icons}/share/icons/SuperTinyIcons/svg/arch_linux.svg";
definedAliases = [ "pac" ];
};
"Arch Wiki" = {
urls = [{
template = "https://wiki.archlinux.org/index.php";
params = [
{ name = "title"; value = "Special:Search"; }
{ name = "search"; value = "{searchTerms}"; }
];
}];
icon = "${pkgs.super-tiny-icons}/share/icons/SuperTinyIcons/svg/arch_linux.svg";
definedAliases = [ "aw" ];
};
"AUR" = {
urls = [{
template = "https://aur.archlinux.org/packages/";
params = [
{ name = "O"; value = "0"; }
{ name = "K"; value = "{searchTerms}"; }
];
}];
icon = "${pkgs.super-tiny-icons}/share/icons/SuperTinyIcons/svg/arch_linux.svg";
definedAliases = [ "aur" ];
};
"Dart Packages" = {
urls = [{
template = "https://pub.dev/packages";
params = [{ name = "q"; value = "{searchTerms}"; }];
}];
icon = "${pkgs.super-tiny-icons}/share/icons/SuperTinyIcons/svg/dart.svg";
definedAliases = [ "pub" ];
};
"GitHub" = {
urls = [{
template = "https://github.com/search";
params = [{ name = "q"; value = "{searchTerms}"; }];
}];
icon = "${pkgs.super-tiny-icons}/share/icons/SuperTinyIcons/svg/github.svg";
definedAliases = [ "gh" ];
};
"HomeManager Options" = {
urls = [{
template = "https://mipmip.github.io/home-manager-option-search/?{searchTerms}";
}];
icon = "${pkgs.super-tiny-icons}/share/icons/SuperTinyIcons/svg/nixos.svg";
definedAliases = [ "hms" ];
};
"Hoogle" = {
urls = [{
template = "https://hoogle.haskell.org/";
params = [{ name = "hoogle"; value = "{searchTerms}"; }];
}];
# TODO: this has got to have an icon of some sort...
# icon = "${pkgs.super-tiny-icons}/share/icons/SuperTinyIcons/svg/haskell.svg";
definedAliases = [ "hg" ];
};
"Melpa" = {
urls = [{
template = "https://melpa.org/";
params = [{ name = "q"; value = "{searchTerms}"; }];
}];
definedAliases = [ "mel" ];
};
"MyAnimeList" = {
urls = [{
template = "https://myanimelist.net/anime.php";
params = [{ name = "q"; value = "{searchTerms}"; }];
}];
definedAliases = [ "mal" ];
};
"NixOS Options" = {
urls = [{
template = "https://search.nixos.org/options";
params = [{ name = "query"; value = "{searchTerms}"; }];
}];
icon = "${pkgs.super-tiny-icons}/share/icons/SuperTinyIcons/svg/nixos.svg";
definedAliases = [ "nxo" ];
};
"Nixpkgs Packages" = {
urls = [{
template = "https://search.nixos.org/packages";
params = [{ name = "query"; value = "{searchTerms}"; }];
}];
icon = "${pkgs.super-tiny-icons}/share/icons/SuperTinyIcons/svg/nixos.svg";
definedAliases = [ "nxp" ];
};
"Pixabay" = {
urls = [{
template = "https://pixabay.com/images/search/{searchTerms}/";
}];
definedAliases = [ "pix" "pxb" ];
};
"RomajiDesu" = {
urls = [{
template = "https://www.romajidesu.com/dictionary/meaning-of-{searchTerms}.html";
}];
definedAliases = [ "rd" "rom" ];
};
"SynonymOrdboka" = {
urls = [{
template = "https://www.synonymordboka.no/no/";
params = [{ name = "q"; value = "{searchTerms}"; }];
}];
definedAliases = [ "syn" ];
};
"Translate" = {
urls = [{
template = "https://translate.google.com/?#auto|auto|{searchTerms}";
}];
icon = "${pkgs.super-tiny-icons}/share/icons/SuperTinyIcons/svg/google.svg";
definedAliases = [ "tr" ];
};
"Unicode Character Table" = {
urls = [{
template = "https://unicode-table.com/en/search/?p&q={searchTerms}";
}];
definedAliases = [ "ut" ];
};
"YouTube" = {
urls = [{
template = "https://www.youtube.com/results";
params = [{ name = "search_query"; value = "{searchTerms}"; }];
}];
icon = "${pkgs.super-tiny-icons}/share/icons/SuperTinyIcons/svg/youtube.svg";
definedAliases = [ "yt" ];
};
"" = {
urls = [{
template = "https://jisho.org/search/{searchTerms}";
params = [{ name = "color_theme"; value = "dark"; }];
}];
definedAliases = [ "js" ];
};
"" = {
urls = [{
template = "https://jisho.org/search/%23kanji%20{searchTerms}";
params = [{ name = "color_theme"; value = "dark"; }];
}];
definedAliases = [ "kan" ];
};
}

View File

@ -1,15 +1,15 @@
{ pkgs, secrets, ... }:
{ pkgs, ... }:
{
programs.firefox = {
enable = true;
profiles.h7x4 = {
bookmarks = [{
toolbar = true;
bookmarks = secrets.browser.bookmarks;
bookmarks = import ./browser/bookmarks.nix;
}];
search = {
default = "Google";
engines = secrets.browser.engines { inherit pkgs; };
engines = import ./browser/engines.nix { inherit pkgs; };
force = true;
};
settings = {};

View File

@ -3,6 +3,8 @@ let
defaultBrowser = "google-chrome-stable %u";
videoViewer = "mpv %u";
in {
imports = [ ./sources.nix ];
programs.newsboat = {
enable = true;
autoReload = true;

View File

@ -0,0 +1,41 @@
{ ... }:
let
mkSource = tags: url: { inherit tags url; };
in {
programs.newsboat.urls = [
(mkSource [ "tech" "linux" ] "https://lukesmith.xyz/rss.xml")
(mkSource [ "tech" "vim" "old" ] "https://castel.dev/rss.xml")
(mkSource [ "tech" "linux" "nixos" ] "https://christine.website/blog.rss")
(mkSource [ "japanese" "language" "old" ] "http://feeds.feedburner.com/LocalizingJapan")
(mkSource [ "tech" "linux" ] "http://xahlee.info/comp/blog.xml")
(mkSource [ "japanese" "language" ] "https://www.outlier-linguistics.com/blogs/japanese.atom")
(mkSource [ "tech" "linux" ] "https://archlinux.org/feeds/news/")
(mkSource [ "tech" "linux" ] "https://bartoszmilewski.com/feed/")
(mkSource [ "tech" "linux" "nixos" ] "https://nixos.org//blog/announcements-rss.xml")
(mkSource [ "tech" "linux" ] "https://www.digitalneanderthal.com/index.xml")
(mkSource [ "tech" "ntnu" ] "https://omegav.no/newsrss")
(mkSource [ "tech" ] "https://code.visualstudio.com/feed.xml")
(mkSource [ "tech" "linux" "nixos" ] "https://blog.ysndr.de/atom.xml")
(mkSource [ "tech" "linux" "nixos" ] "https://kaushikc.org/atom.xml")
(mkSource [ "tech" "linux" "nixos" ] "https://ianthehenry.com/feed.xml")
(mkSource [ "tech" "linux" "ntnu" ] "https://www.pvv.ntnu.no/w/api.php?hidebots=1&urlversion=1&days=7&limit=50&action=feedrecentchanges&feedformat=atom")
(mkSource [ "ntnu" ] "https://varsel.it.ntnu.no/subscribe/rss/")
(mkSource [ "tech" "linux" "japanese" ] "https://www.ncaq.net/feed.atom")
(mkSource [ "tech" "linux" "haskell" "nixos" "functional-programming" ] "https://www.haskellforall.com/feeds/posts/default")
(mkSource [ "tech" "haskell" "functional-programming" ] "https://williamyaoh.com/feed.atom")
(mkSource [ "tech" "haskell" "functional-programming" ] "https://www.parsonsmatt.org/feed.xml")
(mkSource [ "tech" "haskell" "functional-programming" "python" ] "http://blog.ezyang.com/feed/")
(mkSource [ "tech" "haskell" "functional-programming" ] "https://lexi-lambda.github.io/feeds/all.rss.xml")
(mkSource [ "tech" "haskell" "functional-programming" ] "https://www.stephendiehl.com/feed.rss")
(mkSource [ "tech" "haskell" "functional-programming" "emacs" ] "https://chrisdone.com/rss.xml")
(mkSource [ "tech" "haskell" "functional-programming" "nixos" ] "https://markkarpov.com/feed.atom")
(mkSource [ "tech" "flutter" ] "https://resocoder.com/feed/")
(mkSource [ "tech" "compilers" ] "https://existentialtype.wordpress.com/feed/")
(mkSource [ "tech" "compilers" "haskell" "functional-programming" "old" ] "https://skilpat.tumblr.com/rss")
(mkSource [ "language" ] "https://feeds.feedburner.com/blogspot/Ckyi")
(mkSource [ "tech" "compilers" ] "https://go.dev/blog/feed.atom")
(mkSource [ "tech" "linux" "nixos" ] "https://myme.no/feed.xml")
(mkSource [ "tech" "linux" "nixos" "compilers" ] "https://flyx.org/feed.xml")
(mkSource [ "tech" "linux" ] "https://blog.jfx.ac/feed.xml")
];
}

View File

@ -1,5 +1,14 @@
{ config, lib, pkgs, inputs, specialArgs, ... }:
{
imports = [
./services/docker.nix
./services/libvirtd.nix
./services/logiops.nix
./services/postgres.nix
./services/stable-diffusion.nix
./services/tailscale.nix
];
machineVars = {
headless = false;
gaming = true;
@ -37,13 +46,7 @@
hostName = "kasei";
networkmanager.enable = true;
interfaces.enp6s0.useDHCP = true;
firewall = {
enable = true;
allowedTCPPorts = [ 7860 ];
allowedUDPPorts = [ config.services.tailscale.port ];
checkReversePath = "loose";
trustedInterfaces = [ "tailscale0" ];
};
firewall.enable = true;
hostId = "f0660cef";
};
@ -56,32 +59,6 @@
tailscale.enable = true;
};
# TODO: remove when merged: https://github.com/NixOS/nixpkgs/pull/167388
systemd = {
services = {
logid = {
description = "Logitech Configuration Daemon";
startLimitIntervalSec = 0;
wants = [ "multi-user.target" ];
after = [ "multi-user.target" ];
wantedBy = [ "graphical-session.target" ];
serviceConfig = {
Type = "simple";
ExecStart = "${pkgs.logiops}/bin/logid";
User = "root";
ExecReload = "/bin/kill -HUP $MAINPID";
Restart="on-failure";
};
};
};
};
virtualisation = {
docker.enable = true;
libvirtd.enable = true;
};
boot = {
initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" "sr_mod" ];
initrd.kernelModules = [ ];
@ -134,6 +111,5 @@
cpu.amd.updateMicrocode = true;
enableRedistributableFirmware = true;
keyboard.zsa.enable = true;
logitech.wireless.enable = true;
};
}

View File

@ -0,0 +1,4 @@
{ ... }:
{
virtualisation.docker.enable = true;
}

View File

@ -0,0 +1,4 @@
{ ... }:
{
virtualisation.libvirtd.enable = true;
}

View File

@ -0,0 +1,23 @@
{ pkgs, ... }:
{
# TODO: remove when merged: https://github.com/NixOS/nixpkgs/pull/167388
systemd.services = {
logid = {
description = "Logitech Configuration Daemon";
startLimitIntervalSec = 0;
wants = [ "multi-user.target" ];
after = [ "multi-user.target" ];
wantedBy = [ "graphical-session.target" ];
serviceConfig = {
Type = "simple";
ExecStart = "${pkgs.logiops}/bin/logid";
User = "root";
ExecReload = "/bin/kill -HUP $MAINPID";
Restart="on-failure";
};
};
};
hardware.logitech.wireless.enable = true;
}

View File

@ -0,0 +1,13 @@
{ ... }:
{
services.postgresql = {
enable = true;
enableTCPIP = true;
authentication = ''
# tailscale xps
host all all 100.94.170.21/32 md5
'';
};
networking.firewall.allowedTCPPorts = [ 5432 ];
}

View File

@ -0,0 +1,25 @@
{ pkgs, ... }:
{
systemd.services.sdwebui = {
description = "Stable Diffusion Web UI";
wants = [ "multi-user.target" ];
after = [ "multi-user.target" ];
path = with pkgs; [
nix
git
nix-output-monitor
bash
];
serviceConfig = {
Type = "simple";
ExecStart = "/home/h7x4/sd-webui/run.sh";
User = "h7x4";
ExecReload = "/bin/kill -HUP $MAINPID";
Restart="on-failure";
WorkingDirectory = "/home/h7x4/sd-webui";
};
};
networking.firewall.allowedTCPPorts = [ 7860 ];
}

View File

@ -0,0 +1,10 @@
{ config, ... }:
{
services.tailscale.enable = true;
networking.firewall = {
allowedUDPPorts = [ config.services.tailscale.port ];
checkReversePath = "loose";
trustedInterfaces = [ "tailscale0" ];
};
}