Compare commits

..

1 commit

Author SHA1 Message Date
58de17df43 flake.lock: update 2025-01-06 05:03:35 +00:00
172 changed files with 3455 additions and 3110 deletions

View file

@ -19,3 +19,7 @@ creation_rules:
key_groups:
- age:
- *notoh
- path_regex: secrets/homepage/[^/]+\.yaml$
key_groups:
- age:
- *notoh

26
LICENSE
View file

@ -1,13 +1,21 @@
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
MIT License
Copyright (C) 2004 notohh <contact@notohh.dev>
Copyright (c) 2023 notohh
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
0. You just DO WHAT THE FUCK YOU WANT TO.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -14,13 +14,12 @@
<img src="https://ci.flake.sh/api/badges/9/status.svg" alt="status-badge" />
</a>
<p></p>
<img src="https://i.imgur.com/G34pKzL.png"></img>
<img src="https://i.imgur.com/TbveB7E.png"></img>
<img src="https://i.imgur.com/s2zvbRt.png"></img>
<p>
Screenshots updated: 2025-02-09
Screenshot updated: 2024-04-26
</p>
<h4>
:warning: this config is a constant WIP,
:warning: this config is a constant WIP,
and will change constantly as i continue to learn about nix. stuff will be updated, restructed, added, and removed quite often. please also note that everything hosted here is what works best for me, and could totally be ineffecient, or just a dead wrong way of doing something.</h4>
</div>
@ -39,7 +38,6 @@
- :building_construction: [tsuru](hosts/tsuru)
- :snowflake: [yuki](hosts/yuki)
- :electric_plug: [modules](modules)
- :airplane: [overlays](overlays)
- :package: [pkgs](pkgs)
- :lock: [secrets](secrets)

2099
flake.lock generated

File diff suppressed because it is too large Load diff

102
flake.nix
View file

@ -4,9 +4,8 @@
outputs = inputs:
inputs.flake-parts.lib.mkFlake {inherit inputs;} {
imports = [
inputs.pre-commit-hooks.flakeModule
./hosts
./overlays
./modules
./hosts/deploy.nix
./home/profiles
];
@ -16,6 +15,28 @@
pkgs,
...
}: {
pre-commit = {
check.enable = true;
settings = {
excludes = ["flake.lock"];
hooks = {
stylua.enable = true;
statix.enable = true;
alejandra.enable = true;
deadnix = {
enable = true;
excludes = ["overlays.nix"];
};
prettier = {
enable = true;
files = "\\.(js|ts|md|json)$";
settings = {
trailing-comma = "none";
};
};
};
};
};
devShells.default = pkgs.mkShell {
name = "snowflake";
shellHook = config.pre-commit.installationScript;
@ -35,27 +56,46 @@
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
### hypr
hyprland = {
url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
inputs.nixpkgs.follows = "nixpkgs";
};
hypridle.url = "github:hyprwm/hypridle";
hyprlock = {
url = "github:hyprwm/hyprlock";
inputs.nixpkgs.follows = "nixpkgs";
inputs.hyprutils.follows = "hyprutils";
};
hyprpicker = {
url = "github:hyprwm/hyprpicker";
inputs.nixpkgs.follows = "nixpkgs";
inputs.hyprutils.follows = "hyprutils";
};
hyprpaper = {
url = "github:hyprwm/hyprpaper";
inputs.nixpkgs.follows = "nixpkgs";
inputs.hyprutils.follows = "hyprutils";
};
# hyprsunset = {
# url = "github:hyprwm/hyprsunset";
# inputs.nixpkgs.follows = "nixpkgs";
# inputs.hyprutils.follows = "hyprutils";
# };
hyprutils = {
url = "github:hyprwm/hyprutils";
inputs.nixpkgs.follows = "nixpkgs";
};
xdg-portal-hyprland = {
url = "github:hyprwm/xdg-desktop-portal-hyprland";
inputs.nixpkgs.follows = "nixpkgs";
inputs.hyprutils.follows = "hyprutils";
};
hyprland-plugins = {
url = "github:hyprwm/hyprland-plugins";
inputs.hyprland.follows = "hyprland";
};
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
hypridle.url = "github:hyprwm/hypridle";
hyprlock.url = "github:hyprwm/hyprlock";
hyprpicker.url = "github:hyprwm/hyprpicker";
hyprpaper.url = "github:hyprwm/hyprpaper";
hyprsunset.url = "github:hyprwm/hyprsunset";
### everything else
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
deploy-rs.url = "github:serokell/deploy-rs";
sops-nix.url = "github:Mic92/sops-nix";
hyprpanel.url = "github:jas-singhfsu/hyprpanel";
zen.url = "github:youwen5/zen-browser-flake";
scls.url = "github:estin/simple-completion-language-server";
### other stuff
nix-gaming.url = "github:fufexan/nix-gaming";
nur.url = "github:nix-community/NUR";
yazi.url = "github:sxyazi/yazi";
@ -64,14 +104,26 @@
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
atuin.url = "github:atuinsh/atuin";
flake-parts.url = "github:hercules-ci/flake-parts";
stylix.url = "github:danth/stylix";
eww.url = "github:elkowar/eww";
anyrun.url = "github:Kirottu/anyrun";
botoh.url = "git+https://git.flake.sh/notohh/botoh";
catppuccin.url = "github:catppuccin/nix";
nixpkgs-xr.url = "github:nix-community/nixpkgs-xr";
prismlauncher.url = "github:PrismLauncher/PrismLauncher";
manga-tui.url = "github:josueBarretogit/manga-tui";
spicetify-nix.url = "github:Gerg-L/spicetify-nix";
nix-topology.url = "github:oddlama/nix-topology";
nix-flatpak.url = "github:gmodena/nix-flatpak";
conduwuit.url = "github:girlbossceo/conduwuit";
neptune = {
url = "github:uwu/neptune";
inputs.nixpkgs.follows = "nixpkgs";
};
deploy-rs = {
url = "github:serokell/deploy-rs";
inputs.nixpkgs.follows = "nixpkgs";
};
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
};
}

View file

@ -29,7 +29,6 @@
gnupg
ripgrep
lazydocker
ffmpeg
yt-dlp
nfs-utils
dig
@ -39,8 +38,8 @@
unrar
p7zip
procs
atac
navi
busybox
];
stateVersion = "23.05";
};

View file

@ -6,8 +6,10 @@
../../programs/browsers/chromium
../../programs/terminal/wezterm
../../programs/terminal/zellij
# ../../programs/themes.nix
../../programs/gtk.nix
../../programs/media/cava.nix
../../programs/mako.nix
../../programs/media/spotify-player.nix
../../programs/media/zathura.nix
];
@ -63,6 +65,10 @@
Hostname 100.73.192.45
User notoh
IdentityFile ~/.ssh/haru
Host kaze
Hostname 100.69.79.81
User notoh
IdentityFile ~/.ssh/kaze
Host basegbot
HostName 100.83.81.116
User basegbot

View file

@ -4,23 +4,19 @@
...
}: {
imports = [
inputs.catppuccin.homeManagerModules.catppuccin
./stylix.nix
../../services
../../programs/anyrun
../../programs/hyprpanel
../../programs/eww
../../programs/browsers/firefox
../../programs/terminal/wezterm
../../programs/terminal/zellij
../../programs/terminal/television
../../programs/editors/zed
../../programs/media/cava.nix
../../programs/media/spicetify.nix
../../programs/themes.nix
../../programs/opencomposite.nix
../../programs/gtk.nix
../../programs/mako.nix
#../../programs/media/spotify-player.nix
../../programs/media/zathura.nix
../../programs/media/easyeffects.nix
../../programs/media/mpv.nix
../../programs/media/jellyfin-mpv-shim.nix
../../wayland/hyprland
../../wayland/services/hypridle.nix
../../wayland/services/hyprpaper.nix
@ -30,44 +26,46 @@
chromium
vesktop
technorino
code-cursor
obsidian
signal-desktop
obs-studio
pavucontrol
anki-bin
virt-manager
qbittorrent
miru
hyprpicker
imv
mpv
ffmpeg
rustypaste-cli
gimp
cryptomator
ventoy-bin-full
wine
bottles
prismlauncher
lutris
r2modman
moonlight-qt
tokei
jellyfin-media-player
jellyfin-rpc
wlx-overlay-s
losslesscut-bin
mangohud
uxplay
drawio
postman
gale
krita
bolt-launcher
cinny-desktop
inputs.zen.packages.${pkgs.system}.default
jetbrains.goland
distrobox
tidal-hifi
neptune
inputs.nix-gaming.packages.${pkgs.system}.osu-lazer-bin
inputs.manga-tui.packages.${pkgs.system}.manga-tui
inputs.prismlauncher.packages.${pkgs.system}.prismlauncher
# inputs.hyprsunset.packages.${pkgs.system}.default
(callPackage ../../../pkgs/passgen {})
(callPackage ../../../pkgs/forex {})
(callPackage ../../../pkgs/cpm {})
];
catppuccin = {
enable = true;
flavor = "mocha";
accent = "pink";
};
programs.ssh = {
enable = true;
extraConfig = ''
@ -103,6 +101,10 @@
Hostname 100.73.192.45
User notoh
IdentityFile ~/.ssh/haru
Host kaze
Hostname 100.69.79.81
User notoh
IdentityFile ~/.ssh/kaze
Host basegbot
HostName 100.83.81.116
User basegbot

View file

@ -0,0 +1,53 @@
{
inputs,
pkgs,
...
}: {
imports = [inputs.stylix.homeManagerModules.stylix];
stylix = {
enable = true;
autoEnable = false;
polarity = "dark";
base16Scheme = "${pkgs.base16-schemes}/share/themes/tokyo-night-dark.yaml";
fonts = {
monospace = {
name = "JetBrainsMono NF Medium";
package = pkgs.nerd-fonts.jetbrains-mono;
};
serif = {
name = "Noto Serif";
package = pkgs.noto-fonts;
};
sansSerif = {
name = "Noto Sans";
package = pkgs.noto-fonts;
};
emoji = {
name = "Twitter Color Emoji";
package = pkgs.twitter-color-emoji;
};
sizes = {
applications = 10;
desktop = 10;
popups = 10;
terminal = 12;
};
};
cursor = {
name = "Bibata-Modern-Classic";
package = pkgs.bibata-cursors;
size = 24;
};
opacity = {
terminal = 0.6;
};
targets = {
mako.enable = true;
lazygit.enable = true;
nushell.enable = true;
yazi.enable = true;
bat.enable = true;
};
};
}

View file

@ -1,6 +1,6 @@
{pkgs, ...}: {
programs.firefox = {
enable = false;
enable = true;
policies = {
DisablePocket = true;
DisplayBookmarksToolbar = true;
@ -109,16 +109,16 @@
"x-scheme-handler/discord-409416265891971072" = ["discord-409416265891971072.desktop"];
"x-scheme-handler/discord-402572971681644545" = ["discord-402572971681644545.desktop"];
"x-scheme-handler/discord-696343075731144724" = ["discord-696343075731144724.desktop"];
"x-scheme-handler/http" = ["zen.desktop"];
"x-scheme-handler/https" = ["zen.desktop"];
"x-scheme-handler/chrome" = ["zen.desktop"];
"x-scheme-handler/http" = ["firefox.desktop"];
"x-scheme-handler/https" = ["firefox.desktop"];
"x-scheme-handler/chrome" = ["firefox.desktop"];
"text/html" = ["firefox.desktop"];
"application/x-extension-htm" = ["zen.desktop"];
"application/x-extension-html" = ["zen.desktop"];
"application/x-extension-shtml" = ["zen.desktop"];
"application/xhtml+xml" = ["zen.desktop"];
"application/x-extension-xhtml" = ["zen.desktop"];
"application/x-extension-xht" = ["zen.desktop"];
"application/x-extension-htm" = ["firefox.desktop"];
"application/x-extension-html" = ["firefox.desktop"];
"application/x-extension-shtml" = ["firefox.desktop"];
"application/xhtml+xml" = ["firefox.desktop"];
"application/x-extension-xhtml" = ["firefox.desktop"];
"application/x-extension-xht" = ["firefox.desktop"];
};
};
}

View file

@ -10,6 +10,7 @@ _: {
enable = true;
defaultEditor = true;
settings = {
theme = "onedark";
editor = {
auto-save = true;
true-color = true;

View file

@ -1,10 +1,9 @@
{
pkgs,
lib,
inputs,
...
}: {
home.packages = [inputs.scls.defaultPackage.${pkgs.system}];
home.packages = [(pkgs.callPackage ../../../../pkgs/scls {})];
programs.helix.languages = {
language = with pkgs; [
{

View file

@ -1,29 +0,0 @@
{pkgs, ...}: {
imports = [./usersettings.nix ./userkeymap.nix];
programs.zed-editor = {
enable = false;
package = pkgs.zed-editor.fhsWithPackages (pkgs: [pkgs.zlib pkgs.openssl]);
extensions = [
# langs
"html"
"toml"
"git-firefly"
"latex"
"svelte"
"scss"
"nix"
"nu"
"gosum"
"scls"
# misc
"env"
"discord-presence"
"wakatime"
# themes
"catppuccin"
"material-icon-theme"
];
};
}

View file

@ -1,15 +0,0 @@
_: {
programs.zed-editor.userKeymaps = [
{
context = "Workspace";
bindings = {
ctrl-shift-t = "workspace::NewTerminal";
};
}
{
context = "Editor";
bindings = {
};
}
];
}

View file

@ -1,58 +0,0 @@
_: {
programs.zed-editor.userSettings = {
ui_font_size = 16;
ui_font_family = "JetBrainsMono Nerd Font";
buffer_font_size = 16;
buffer_font_family = "JetBrainsMono Nerd Font";
relative_line_numbers = true;
hour_format = "hour24";
shell = "nu";
theme = {
dark = "Catppuccin Mocha (pink)";
light = "Catppuccin Mocha (pink)";
};
tabs = {
file_icons = true;
git_status = true;
};
indent_guides = {
enable = true;
};
inlay_hints = {
enable = true;
};
telemetry = {
diagnostics = false;
metrics = false;
};
assistant = {
default_model = {
provider = "copilot_chat";
model = "gpt-4o";
};
version = "2";
};
languages = {
Nix = {
language_servers = ["nil"];
formatter = {
external = {
command = "alejandra";
arguments = ["--quiet" "--"];
};
};
};
lsp = {
discord_presence = {
initialization_options = {
git_integration = false;
rules = {
mode = "blacklist";
paths = ["/home/notoh/dev/ec" "/home/notoh/dev/yamilol"];
};
};
};
};
};
};
}

View file

@ -0,0 +1,24 @@
* {
all: unset;
}
@import "./style/mixins.scss";
@import "./style/menu.scss";
@import "./style/music.scss";
@import "./style/workspaces.scss";
@import "./style/sysinfo.scss";
.logo {
margin: 0.4rem 10rem 0.4rem 1rem;
border-radius: 8px;
background-color: $background;
}
.time {
font-size: 16px;
margin: 0.5rem 1rem 0.5rem 1rem;
padding-left: 0.4rem;
padding-right: 0.4rem;
border-radius: 8px;
background-color: $background;
}

View file

@ -0,0 +1,49 @@
(include "./widgets/logo.yuck")
(include "./widgets/workspaces.yuck")
(include "./widgets/menu.yuck")
(include "./widgets/time.yuck")
(include "./widgets/music.yuck")
(include "./widgets/sysinfo.yuck")
(include "./vars.yuck")
(defwidget left []
(box :orientation "h"
:halign "start"
(logo)
(workspaces)))
(defwidget center[]
(box :orientation "h"
:halign "center"
(music)))
(defwidget right []
(box :orientation "h"
:halign "end"
(cpu)
(time)
(menu)))
(defwidget bar []
(centerbox :orientation "h"
(left)
(center)
(right)))
(defwindow bar
:monitor 0
:windowtype "dock"
:geometry (geometry
:x "0%"
:y "0%"
:width "100%"
:height "47px"
:anchor "top center")
:stacking "fg"
:reserve (struts :distance "40px" :side "top")
:windowtype "dock"
:wm-ignore false
:exclusive true;
(bar))

View file

@ -0,0 +1,21 @@
#!/usr/bin/env bash
COVER_PATH=$1
cd $COVER_PATH
IMGPATH="$COVER_PATH/music_cover.png"
playerctl -F metadata mpris:artUrl 2>/dev/null | while read -r COVER_URL; do
if [[ "$COVER_URL" = https* ]]; then
if [ ! -e "$COVER_PATH/$(basename "$COVER_URL")" ]; then
wget -N "$COVER_URL" -o /dev/null
fi
rm "$IMGPATH"
ln -s "$(basename "$COVER_URL")" "$IMGPATH"
echo "$IMGPATH"
elif [ "$COVER_URL" = "" ]; then
echo ""
else
echo "$COVER_URL"
fi
done

View file

@ -0,0 +1,24 @@
/* tokyonight */
$red: #f7768e;
$orange: #ff9e64;
$yellow: #e0af68;
$light-green: #9ece6a;
$green: #73daca;
$turquoise: #89ddff;
$light-cyan: #b4f9f8;
$teal: #2ac3de;
$cyan: #7dcfff;
$blue: #7aa2f7;
$magenta: #bb9af7;
$white: #c0caf5;
$light-gray: #9aa5ce;
$parameters: #cfc9c2;
$comment: #565f89;
$black: #414868;
$foreground: #a9b1d6;
$foreground-highlight: #c0caf5;
$foreground-gutter: #363b54;
$background: #1a1b26;
$background-highlight: #30374b;
$background-menu: #16161e;

View file

@ -0,0 +1,64 @@
@import "./mixins.scss";
@import "./colors.scss";
.menu-widget {
font-size: 20px;
margin: 0.5rem 1.2rem 0.5rem 1.5rem;
padding-right: 0.3rem;
border-radius: 8px;
background-color: $background;
}
.menubox {
border: 3px solid $background-highlight;
border-radius: 10px;
background-color: $background;
}
.menubox-header {
@include button-sizing;
font-size: 32px;
background-color: $background-highlight;
margin: 2rem;
}
.menubox-text {
@include button-sizing;
background-color: $background;
}
.menubox-widgets {
@include button-sizing();
background-color: $background-highlight;
margin: 2rem;
transition: all 100ms ease;
&:hover {
@include button-sizing();
background-color: $red;
transition: all 100ms ease;
color: $background-highlight;
}
}
.cpu {
@include sysinfo();
color: $red;
}
.mem {
@include sysinfo();
color: $green;
font-size: 17px;
}
.storage {
@include sysinfo();
color: $blue;
font-size: 24px;
}
.info-box {
@include button-sizing;
background-color: $background-highlight;
margin: 2rem;
}

View file

@ -0,0 +1,23 @@
@import "./colors.scss";
@mixin workspace-font {
font-size: 20px;
font-weight: normal;
}
@mixin button-sizing {
margin: 10px;
border-radius: 16px;
padding: 10px 10px 10px 10px;
font-size: 32px;
}
@mixin sysinfo {
margin: 10px;
font-size: 24px;
background-color: $light-gray;
}
@mixin widget-border-radius {
border-radius: 8px;
}

View file

@ -0,0 +1,92 @@
@import "./mixins.scss";
@import "./colors.scss";
.music {
@include widget-border-radius;
font-size: 15px;
background-color: $background;
margin: 0.5rem 2rem 0.5rem 1rem;
padding-left: 1rem;
padding-right: 1rem;
}
.music-cover {
@include widget-border-radius;
background-size: 42px 42px;
background-position: center;
background-repeat: no-repeat;
margin-top: 0.3rem;
margin-bottom: 0.3rem;
min-height: 2rem;
min-width: 4rem;
border-radius: 0.8rem;
}
.music-cover-big {
margin: 0rem;
background-size: 450px 450px;
background-position: center;
background-repeat: no-repeat;
border-radius: 30%;
}
.music-widget {
background-position: center;
background-repeat: no-repeat;
background-size: 1100px 1100px;
border: 3px solid $background-highlight;
border-radius: 0.7rem;
}
.music-widget-title {
@include widget-border-radius;
font-size: 24px;
margin: 2rem 2rem 0rem 1rem;
background-color: $background;
padding: 1.1rem;
border: 3px solid $background-highlight;
}
.music-controls {
@include button-sizing;
background-color: $background;
margin: 5rem 7rem 2rem 6rem;
padding: 0.4rem;
border-radius: 8px;
border: 3px solid $background-highlight;
}
.hover-play {
transition: all 200ms ease;
border-radius: 5px;
&:hover {
background-color: $green;
transition: all 200ms ease;
color: $background-highlight;
border-radius: 5px;
}
}
.hover-pause {
transition: all 200ms ease;
border-radius: 5px;
&:hover {
background-color: $red;
transition: all 200ms ease;
color: $background-highlight;
border-radius: 5px;
}
}
.close-button {
margin: 0.5rem 2rem 0rem 30rem;
background-color: $background;
border-radius: 8px;
padding: 0.5rem;
&:hover {
background-color: $red;
transition: all 100ms ease-in;
color: $background-highlight;
border-radius: 5px;
}
}

View file

@ -0,0 +1,14 @@
@import "./mixins.scss";
@import "./colors.scss";
.sysinfo-cpu {
@include sysinfo;
color: $red;
margin: 0.1rem;
}
.sysinfo-mem {
@include sysinfo;
color: $green;
margin: 0.1rem;
}

View file

@ -0,0 +1,27 @@
@import "./mixins.scss";
@import "./colors.scss";
.workspaces {
@include widget-border-radius;
margin: 0.5rem 4rem 0.5rem 1rem;
padding-left: 1rem;
background-color: $background;
}
.ws0 {
color: $red;
@include workspace-font();
}
.ws1 {
color: $teal;
@include workspace-font();
}
.ws2 {
color: $cyan;
@include workspace-font();
}
.ws3 {
color: $blue;
@include workspace-font();
}

View file

@ -0,0 +1,14 @@
(deflisten musicArtist :initial "-" "playerctl --follow metadata --format '{{ artist }}'")
(deflisten musicTitle :initial "-" "playerctl --follow metadata --format '{{title}}'")
(deflisten musicCover "sh /home/notoh/snowflake/home/programs/eww/config/scripts/get-music-cover.sh /tmp/eww/cache_directory")
(defpoll time :interval "60s"
:initial "initial-value"
`date +%H:%M`)
(defpoll date :interval "60s"
:initial "initial-value"
`date +%D-%Y`)
(defpoll uptime :interval "1s" "uptime | awk '{print $3}' | tr ',' ' '")

View file

@ -0,0 +1,7 @@
(defwidget container []
(box
:class "container"
:orientation "h"
(children)
)
)

View file

@ -0,0 +1,9 @@
(defpoll time :interval "60s"
:initial "initial-value"
`date +%H:%M`)
(defwidget time []
(box
:class "time"
(label
:text time)))

View file

@ -0,0 +1,6 @@
(defwidget logo []
(box
:class "logo"
(image :path "/home/notoh/Pictures/icons/nixos.png"
:image-width 24
:image-height 24)))

View file

@ -0,0 +1,71 @@
(defwidget menu []
(button
:onclick "eww open menu-window"
(label
:text "⏻"
:class "menu-widget")))
(defwidget menubox []
(box
:orientation "v"
:space-evenly true
:class "menubox"
:spacing 0
(box :class "menubox-header"
:orientation "h"
(label :halign "start" :text time)
(label :halign "end" :text "おかえりなさい!"))
(box :class "info-box"
:orientation "h"
(circular-progress
:class "cpu"
:start-at 0
:thickness 6
:clockwise true
:value {EWW_CPU.avg}
(label
:style "font-size: 24px; margin-right: 0.1rem;"
:text "󰍛"))
(circular-progress
:class "mem"
:start-at 0
:thickness 6
:clockwise true
:value {EWW_RAM.used_mem_perc}
(label
:style "font-size: 24px; margin-right: 0.8rem;"
:text ""))
(circular-progress
:class "storage"
:start-at 0
:thickness 6
:clockwise true
:value {EWW_RAM.used_mem_perc}
(label
:style "font-size: 24px;"
:text ""))
(label
:text " ${uptime}")
)
(box :class "menubox-widgets"
:orientation "h"
(button :class "menubox-widgets text" :onclick "reboot" "")
(button :class "menubox-widgets text" :onclick "shutdown now" "")
(button :class "menubox-widgets text" :onclick "eww close menu-window" "")))
)
(defwindow menu-window
:monitor 0
:windowtype "dock"
:geometry (geometry
:x "0.9%"
:y "1.5%"
:width "25%"
:height "600px"
:anchor "top right")
:stacking "fg"
:windowtype "dock"
:wm-ignore true
:exclusive false
(menubox))

View file

@ -0,0 +1,55 @@
(defwidget bar-art []
(box
:space-evenly false
(box :class "music-cover"
:style "background-image:url('${musicCover}');")
(eventbox
:onclick "eww open music-widget"
(label :class "music"
:text "${musicTitle}"))))
(defwidget music-widget []
(box :class "music-widget"
(box :class "music-cover-big"
:space-evenly false
:orientation "h"
:style "background-image:url('${musicCover}');")
(box
:orientation "v"
:space-evenly false
:spacing 0
(box
(button
:class "close-button"
:onclick "eww close music-widget"
(label :text "" :style "font-size: 18px; margin-right: 0.5rem;")))
(label :class "music-widget-title" :text "${musicTitle}")
(label :class "music-widget-title" :text "${musicArtist}")
(box :class "music-c")
(box :class "music-controls"
:valign "center"
(button :class "hover-play" :onclick "playerctl play" "")
(button :class "hover-pause" :onclick "playerctl pause" "")))))
(defwidget music []
(box
(bar-art)))
(defwindow music-widget
:monitor 0
:windowtype "dock"
:namespace "music-widget"
:geometry (geometry
:x "0"
:y "1.5%"
:width "42%"
:height "550px"
:anchor "top center")
:stacking "fg"
:windowtype "dock"
:wm-ignore true
:exclusive false
(music-widget))

View file

@ -0,0 +1,21 @@
(defwidget cpu []
(box
:spacing 5
(circular-progress
:class "sysinfo-cpu"
:start-at 0
:thickness 4
:clockwise true
:value {EWW_CPU.avg}
(label
:style "font-size: 13px; margin-right: 0.1rem;"
:text "󰍛"))
(circular-progress
:class "sysinfo-mem"
:start-at 0
:thickness 4
:clockwise true
:value {EWW_RAM.used_mem_perc}
(label
:style "font-size: 10px; margin-right: 0.3rem;"
:text ""))))

View file

@ -0,0 +1,5 @@
(defwidget time []
(box
:class "time"
(label
:text time)))

View file

@ -0,0 +1,16 @@
(defwidget workspaces []
(box :class "workspaces"
:space-evenly true
:spacing 6
(button
:class "ws0"
:onclick "" " ")
(button
:class "ws1"
:onclick "" " ")
(button
:class "ws2"
:onclick "" " ")
(button
:class "ws3"
:onclick "" " ")))

View file

@ -0,0 +1,13 @@
{pkgs, ...}: {
home.packages = with pkgs; [
eww
playerctl
imagemagick
];
programs.eww = {
enable = true;
package = pkgs.eww;
configDir = ./config;
};
}

View file

@ -15,7 +15,6 @@ _: {
enable = true;
gitCredentialHelper.enable = true;
settings = {
git_protocol = "ssh";
editor = "hx";
prompt = "enabled";
};

27
home/programs/gtk.nix Normal file
View file

@ -0,0 +1,27 @@
{pkgs, ...}: {
# home.pointerCursor = {
# package = pkgs.bibata-cursors;
# name = "Bibata-Modern-Classic";
# size = 24;
# gtk.enable = true;
# x11.enable = true;
# };
dconf.settings = {
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
};
};
gtk = {
enable = true;
theme = {
name = "Tokyonight-Dark-BL";
package = pkgs.tokyo-night-gtk;
};
iconTheme = {
name = "Papirus";
package = pkgs.papirus-icon-theme;
};
};
}

View file

@ -1,49 +0,0 @@
{inputs, ...}: {
imports = [
inputs.hyprpanel.homeManagerModules.hyprpanel
inputs.sops-nix.homeManagerModules.sops
./settings.nix
];
programs.hyprpanel = {
enable = true;
systemd.enable = true;
hyprland.enable = false;
overwrite.enable = true;
theme = "catppuccin_mocha";
override = {
"theme.bar.buttons.workspaces.hover" = "#7f849c";
"theme.bar.buttons.workspaces.active" = "#f5c2e7";
"theme.bar.buttons.workspaces.occupied" = "#f5c2e7";
"theme.bar.buttons.workspaces.available" = "#585b70";
"theme.bar.buttons.workspaces.border" = "#f9e2af";
"theme.bar.buttons.dashboard.icon" = "#74c7ec";
"theme.bar.buttons.media.icon" = "#1ED760";
"bar.customModules.cava.showIcon" = false;
};
layout = {
"bar.layouts" = {
"0" = {
left = ["dashboard" "workspaces" "cava" "hyprsunset"];
middle = ["media"];
right = ["cpu" "ram" "volume" "clock" "weather" "systray" "notifications"];
};
"1" = {
left = [];
middle = [];
right = [];
};
"2" = {
left = [];
middle = [];
right = [];
};
"3" = {
left = [];
middle = [];
right = [];
};
};
};
};
}

View file

@ -1,76 +0,0 @@
{
pkgs,
inputs,
...
}: {
programs.hyprpanel.settings = {
bar = {
autoHide = "fullscreen";
launcher.autoDetectIcon = true;
clock = {
format = "%m/%d/%y %H:%M";
};
media = {
truncation = true;
truncation_size = 40;
};
workspaces = {
workspaces = 4;
show_icons = true;
showWsIcons = false;
showApplicationIcons = false;
monitorSpecific = false;
};
customModules = {
hyprsunset = {
temperature = "3000k";
};
weather.unit = "metric";
};
};
notifications = {
monitor = 0;
active_monitor = false;
};
menus = {
clock = {
time = {
military = true;
hideSeconds = false;
};
weather = {
enabled = false;
key = "13b77bbcf0dc420782005246250902";
unit = "metric";
location = "New York";
};
};
media = {
displayTime = true;
};
dashboard = {
stats.enable_gpu = false;
directories.enabled = false;
shortcuts.enabled = false;
powermenu = {
sleep = "${inputs.hyprland.packages.${pkgs.system}.hyprland}/bin/hyprctl dispatch dpms off";
avatar = {
image = "/home/notoh/dev/assets/pfps/pfp2.jpg";
name = "notohh";
};
};
};
};
theme = {
bar.transparent = false;
osd = {
monitor = 0;
active_monitor = false;
};
font = {
name = "Inter";
size = "17px";
};
};
};
}

12
home/programs/mako.nix Normal file
View file

@ -0,0 +1,12 @@
_: {
services.mako = {
enable = true;
icons = true;
maxIconSize = 64;
maxVisible = 3;
defaultTimeout = 5000;
ignoreTimeout = true;
anchor = "top-right";
output = "DP-1";
};
}

View file

@ -9,6 +9,12 @@ _: {
bar_width = 2;
bar_spacing = 3;
};
color = {
gradient = 1;
gradient_count = 2;
gradient_color_2 = "'#f7768e'";
gradient_color_1 = "'#7dcfff'";
};
smoothing = {
monstercat = 1;
waves = 1;

View file

@ -1,116 +0,0 @@
{pkgs, ...}: {
home.packages = [pkgs.jellyfin-mpv-shim];
xdg.configFile."jellyfin-mpv-shim/conf.json".text = ''
{
"allow_transcode_to_h265": false,
"always_transcode": false,
"audio_output": "hdmi",
"auto_play": true,
"check_updates": false,
"client_uuid": "a4204cae-4a0a-47cb-8147-6f3e92efdefb",
"connect_retry_mins": 0,
"direct_paths": false,
"discord_presence": false,
"display_mirroring": false,
"enable_gui": false,
"enable_osc": false,
"force_audio_codec": null,
"force_set_played": false,
"force_video_codec": null,
"fullscreen": true,
"health_check_interval": 300,
"idle_cmd": null,
"idle_cmd_delay": 60,
"idle_ended_cmd": null,
"idle_when_paused": false,
"ignore_ssl_cert": false,
"kb_debug": "~",
"kb_fullscreen": "f",
"kb_kill_shader": "k",
"kb_menu": "c",
"kb_menu_down": "down",
"kb_menu_esc": "esc",
"kb_menu_left": "left",
"kb_menu_ok": "enter",
"kb_menu_right": "right",
"kb_menu_up": "up",
"kb_next": ">",
"kb_pause": "space",
"kb_prev": "<",
"kb_stop": "q",
"kb_unwatched": "u",
"kb_watched": "w",
"lang": null,
"lang_filter": "und,eng,jpn,mis,mul,zxx",
"lang_filter_audio": false,
"lang_filter_sub": false,
"local_kbps": 2147483,
"log_decisions": false,
"media_ended_cmd": null,
"media_key_seek": false,
"media_keys": true,
"menu_mouse": true,
"mpv_ext": true,
"mpv_ext_ipc": false,
"mpv_ext_no_ovr": true,
"mpv_ext_path": "${pkgs.mpv}",
"mpv_ext_start": true,
"mpv_log_level": "info",
"notify_updates": false,
"play_cmd": null,
"playback_timeout": 30,
"player_name": "tsuki",
"pre_media_cmd": null,
"prefer_transcode_to_h265": false,
"raise_mpv": true,
"remote_direct_paths": false,
"remote_kbps": 10000,
"sanitize_output": true,
"screenshot_dir": null,
"screenshot_menu": true,
"seek_down": -60,
"seek_h_exact": false,
"seek_left": -5,
"seek_right": 5,
"seek_up": 60,
"seek_v_exact": false,
"shader_pack_custom": false,
"shader_pack_enable": true,
"shader_pack_profile": null,
"shader_pack_remember": true,
"shader_pack_subtype": "lq",
"skip_credits_always": false,
"skip_credits_prompt": false,
"skip_intro_always": false,
"skip_intro_prompt": true,
"stop_cmd": null,
"stop_idle": false,
"subtitle_color": "#FFFFFFFF",
"subtitle_position": "bottom",
"subtitle_size": 100,
"svp_enable": false,
"svp_socket": null,
"svp_url": "http://127.0.0.1:9901/",
"sync_attempts": 5,
"sync_max_delay_skip": 300,
"sync_max_delay_speed": 50,
"sync_method_thresh": 2000,
"sync_osd_message": true,
"sync_revert_seek": true,
"sync_speed_attempts": 3,
"sync_speed_time": 1000,
"thumbnail_enable": true,
"thumbnail_osc_builtin": true,
"thumbnail_preferred_size": 320,
"transcode_4k": false,
"transcode_av1": false,
"transcode_dolby_vision": true,
"transcode_hdr": false,
"transcode_hevc": false,
"transcode_hi10p": false,
"transcode_warning": true,
"use_web_seek": false,
"write_logs": false
}
'';
}

View file

@ -1,25 +0,0 @@
{pkgs, ...}: {
programs.mpv = {
enable = true;
scripts = with pkgs; [
mpvScripts.uosc
mpvScripts.mpris
mpvScripts.smartskip
mpvScripts.thumbfast
mpvScripts.videoclip
];
scriptOpts = {
thumbfast = {
spawn_first = true;
network = true;
hwdec = true;
};
};
config = {
osc = false;
osd-bar = false;
volume = 60;
save-position-on-quit = true;
};
};
}

View file

@ -1,20 +0,0 @@
{
inputs,
pkgs,
...
}: let
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.system};
in {
imports = [inputs.spicetify-nix.homeManagerModules.default];
programs.spicetify = {
enable = true;
experimentalFeatures = true;
enabledExtensions = with spicePkgs.extensions; [
hidePodcasts
beautifulLyrics
fullAlbumDate
shuffle
];
theme = spicePkgs.themes.hazy;
};
}

View file

@ -0,0 +1,74 @@
{pkgs, ...}: {
home.packages = [pkgs.spotify-player];
xdg.configFile."spotify-player/app.toml" = {
text = ''
theme = "tokyonight"
client_id = "bc629e700c1740a28b3f594ef1942eac"
client_port = 8080
playack_format = "{track} {artists}\n{album}\n{metadata}"
notify_format = { summary = "{track} {artists}", body = "{album}" }
copy_command = { command = "wl-copy", args = [] }
app_refresh_duration_in_ms = 32
playback_refresh_duration_in_ms = 0
cover_image_refresh_duration_in_ms = 2000
page_size_in_rows = 20
track_table_item_max_len = 32
enable_media_control = true
enable_streaming = true
enable_cover_image_cache = true
default_device = "tsuki"
play_icon = ""
pause_icon = ""
liked_icon = ""
playback_window_position = "Top"
cover_img_width = 5
cover_img_length = 11
cover_img_scale = 1.6
playback_window_width = 6
[device]
name = "tsuki"
device_type = "computer"
volume = 100
bitrate = 320
audio_cache = true
normalization = false
'';
};
xdg.configFile."spotify-player/theme.toml" = {
text = ''
[[themes]]
name = "tokyonight"
[themes.palette]
foreground = "#c0caf5"
black = "#414868"
red = "#f7768e"
green = "#9ece6a"
yellow = "#e0af68"
blue = "#2ac3de"
magenta = "#bb9af7"
cyan = "#7dcfff"
white = "#eee8d5"
bright_black = "#24283b"
bright_red = "#ff4499"
bright_green = "#73daca"
bright_yellow = "#657b83"
bright_blue = "#839496"
bright_magenta = "#ff007c"
bright_cyan = "#93a1a1"
bright_white = "#fdf6e3"
[themes.component_style]
block_title = { fg = "Magenta" }
border = {}
playback_track = { fg = "Cyan", modifiers = ["Bold"] }
playback_artists = { fg = "Cyan", modifiers = ["Bold"] }
playback_album = { fg = "Yellow" }
playback_metadata = { fg = "White" }
playback_progress_bar = { bg = "BrightBlack", fg = "Green" }
current_playing = { fg = "Green", modifiers = ["Bold"] }
page_desc = { fg = "Cyan", modifiers = ["Bold"] }
table_header = { fg = "Blue" }
selection = { modifiers = ["Bold", "Reversed"] }
'';
};
}

View file

@ -1,27 +0,0 @@
{
pkgs,
config,
...
}: {
xdg.configFile."openxr/1/active_runtime.json".source = "${pkgs.wivrn}/share/openxr/1/openxr_wivrn.json";
xdg.configFile."openvr/openvrpaths.vrpath".text = ''
{
"config" :
[
"${config.xdg.dataHome}/Steam/config"
],
"external_drivers" : null,
"jsonid" : "vrpathreg",
"log" :
[
"${config.xdg.dataHome}/Steam/logs"
],
"runtime" :
[
"${pkgs.opencomposite}/lib/opencomposite"
],
"version" : 1
}
'';
}

View file

@ -1,11 +1,6 @@
{
inputs,
pkgs,
...
}: {
_: {
programs.atuin = {
enable = true;
package = inputs.atuin.packages.${pkgs.system}.default;
enableNushellIntegration = true;
settings = {
auto_sync = true;

View file

@ -2,6 +2,7 @@ _: {
programs.bat = {
enable = true;
config = {
theme = "base16-stylix";
pager = "--RAW-CONTROL-CHARS --quit-if-one-screen --mouse";
style = "plain";
};

View file

@ -18,7 +18,15 @@ alias grep = rg
alias build = nh os boot .
alias switch = nh os switch .
alias clean = sudo nh clean all
alias deploy = nix run github:serokell/deploy-rs -- --skip-checks --targets
alias deploy = nix run github:serokell/deploy-rs
alias sakura = nix run github:serokell/deploy-rs ".#sakura"
alias kariru = nix run github:serokell/deploy-rs ".#kariru"
alias yuki = nix run github:serokell/deploy-rs ".#yuki"
alias arashi = nix run github:serokell/deploy-rs ".#arashi"
alias sora = nix run github:serokell/deploy-rs ".#sora"
alias tsuru = nix run github:serokell/deploy-rs ".#tsuru"
alias haru = nix run github:serokell/deploy-rs ".#haru"
alias kaze = nix run github:serokell/deploy-rs ".#kaze"
alias dl = yt-dlp -P ~/Videos/downloaded
alias dlad = yt-dlp -x --audio-format mp3 --embed-thumbnail
alias dlcd = yt-dlp
@ -27,63 +35,67 @@ alias shorten = rpaste -s "https://i.flake.sh/" -e 1day -u
alias send = croc --relay "100.104.42.96:9009" send
alias receive = croc --relay "100.104.42.96:9009"
alias ps = procs
alias ts = tspin
alias generate-topology = nix build ".#topology.x86_64-linux.config.output"
alias tail = tspin
alias spotify = spotify_player
alias atac = atac --directory ~/.config/atac/
nitch
$env.config = {
ls: {
use_ls_colors: true
clickable_links: true
use_ls_colors: true # use the LS_COLORS environment variable to colorize output
clickable_links: true # enable or disable clickable links. Your terminal has to support links.
}
rm: {
always_trash: false
always_trash: false # always act as if -t was given. Can be overridden with -p
}
table: {
mode: rounded
index_mode: always
mode: rounded # basic, compact, compact_double, light, thin, with_love, rounded, reinforced, heavy, none, other
index_mode: always # "always" show indexes, "never" show indexes, "auto" = show indexes when a table has "index" column
trim: {
methodology: wrapping
wrapping_try_keep_words: true
truncating_suffix: "..."
methodology: wrapping # wrapping or truncating
wrapping_try_keep_words: true # A strategy used by the 'wrapping' methodology
truncating_suffix: "..." # A suffix used by the 'truncating' methodology
}
}
history: {
max_size: 10000
sync_on_enter: true
file_format: "sqlite"
max_size: 10000 # Session has to be reloaded for this to take effect
sync_on_enter: true # Enable to share history between multiple sessions, else you have to close the session to write history to file
file_format: "sqlite" # "sqlite" or "plaintext"
}
completions: {
case_sensitive: false
quick: true
partial: true
algorithm: "prefix"
case_sensitive: false # set to true to enable case-sensitive completions
quick: true # set this to false to prevent auto-selecting completions when only one remains
partial: true # set this to false to prevent partial filling of the prompt
algorithm: "prefix" # prefix or fuzzy
external: {
enable: true
max_results: 100
completer: null
enable: true # set to false to prevent nushell looking into $env.PATH to find more suggestions, `false` recommended for WSL users as this look up my be very slow
max_results: 100 # setting it lower can improve completion performance at the cost of omitting some options
completer: null # check 'carapace_completer' above as an example
}
}
footer_mode: "auto"
filesize: {
metric: true # true => KB, MB, GB (ISO standard), false => KiB, MiB, GiB (Windows standard)
format: "auto" # b, kb, kib, mb, mib, gb, gib, tb, tib, pb, pib, eb, eib, zb, zib, auto
}
footer_mode: "auto" # always, never, number_of_rows, auto
float_precision: 2
buffer_editor: "hx"
# buffer_editor: "emacs" # command that will be used to edit the current line buffer with ctrl+o, if unset fallback to $env.EDITOR and $env.VISUAL
use_ansi_coloring: true
edit_mode: vi
shell_integration: {}
show_banner: false
render_right_prompt_on_last_line: false
edit_mode: vi # emacs, vi
shell_integration: {} # enables terminal markers and a workaround to arrow keys stop working issue
show_banner: false # true or false to enable or disable the banner
render_right_prompt_on_last_line: false # true or false to enable or disable right prompt to be rendered on last line of the prompt.
hooks: {
pre_prompt: [{ ||
null
null # replace with source code to run before the prompt is shown
}]
pre_execution: [{ ||
null
null # replace with source code to run before the repl input is run
}]
env_change: {
PWD: [{|before, after|
null
null # replace with source code to run if the PWD environment is different since the last repl input
}]
}
display_output: { ||
@ -92,6 +104,8 @@ $env.config = {
}
menus: [
# Configuration for default nushell menus
# Note the lack of souce parameter
{
name: completion_menu
only_buffer_difference: false
@ -99,7 +113,7 @@ $env.config = {
type: {
layout: columnar
columns: 4
col_width: 20
col_width: 20 # Optional value. If missing all the screen width is used to calculate column width
col_padding: 2
}
style: {
@ -129,7 +143,7 @@ $env.config = {
type: {
layout: description
columns: 4
col_width: 20
col_width: 20 # Optional value. If missing all the screen width is used to calculate column width
col_padding: 2
selection_rows: 4
description_rows: 10
@ -140,6 +154,9 @@ $env.config = {
description_text: yellow
}
}
# Example of extra menus created using a nushell source
# Use the source field to create a list of records that populates
# the menu
{
name: commands_menu
only_buffer_difference: false
@ -203,14 +220,14 @@ $env.config = {
| where command =~ $buffer
| each { |it| {value: $it.command description: $it.usage} }
}
}
}
]
keybindings: [
{
name: completion_menu
modifier: none
keycode: tab
mode: vi_normal
mode: vi_normal # Options: emacs vi_normal vi_insert
event: {
until: [
{ send: menu name: completion_menu }
@ -222,7 +239,7 @@ $env.config = {
name: completion_previous
modifier: shift
keycode: backtab
mode: [emacs, vi_normal, vi_insert]
mode: [emacs, vi_normal, vi_insert] # Note: You can add the same keybinding to all modes by using a list
event: { send: menuprevious }
}
{
@ -284,6 +301,7 @@ $env.config = {
]
}
}
# Keybindings used to trigger the user defined menus
{
name: commands_menu
modifier: control
@ -306,7 +324,7 @@ $env.config = {
event: { send: menu name: commands_with_description }
}
]
}

View file

@ -9,8 +9,28 @@
enable = true;
enableNushellIntegration = true;
settings = {
command_timeout = 2000;
palette = "tokyonight";
add_newline = false;
palettes.tokyonight = {
red = "#f7768e";
orange = "#ff9e64";
yellow = "#e0af68";
light-green = "#9ece6a";
green = "#73daca";
turquoise = "#89ddff";
light-cyan = "#b4f9f8";
teal = "#2ac3de";
cyan = "#7dcfff";
blue = "#7aa2f7";
magenta = "#bb9af7";
white = "#c0caf5";
light-gray = "#9aa5ce";
parameters = "#cfc9c2";
comment = "#565f89";
black = "#414868";
foreground = "#a9b1d6";
background = "#1a1b26";
};
format = lib.concatStrings [
"$character"
"$hostname"

View file

@ -1,5 +0,0 @@
{
"indexes": ["nixpkgs", "home-manager", "nur"],
"update_interval": "12h",
"enable_waiting_message": true
}

View file

@ -1,212 +0,0 @@
# CONFIGURATION FILE LOCATION ON YOUR SYSTEM:
# -------------------------------------------
# Defaults:
# ---------
# Linux: `$HOME/.config/television/config.toml`
# macOS: `$HOME/.config/television/config.toml`
# Windows: `%APPDATA%\television\config.toml`
#
# XDG dirs:
# ---------
# You may use XDG_CONFIG_HOME if set on your system.
# In that case, television will expect the configuration file to be in:
# `$XDG_CONFIG_HOME/television/config.toml`
#
# General settings
# ----------------------------------------------------------------------------
frame_rate = 60 # DEPRECATED: this option is no longer used
tick_rate = 50
[ui]
# Whether to use nerd font icons in the UI
# This option requires a font patched with Nerd Font in order to properly
# display glyphs (see https://www.nerdfonts.com/ for more information)
use_nerd_font_icons = false
# How much space to allocate for the UI (in percentage of the screen)
# ┌───────────────────────────────────────┐
# │ │
# │ Terminal screen │
# │ ┌─────────────────────────────┐ │
# │ │ │ │
# │ │ │ │
# │ │ │ │
# │ │ Television UI │ │
# │ │ │ │
# │ │ │ │
# │ │ │ │
# │ │ │ │
# │ └─────────────────────────────┘ │
# │ │
# │ │
# └───────────────────────────────────────┘
ui_scale = 100
# Whether to show the top help bar in the UI by default
# This option can be toggled with the (default) `ctrl-g` keybinding
show_help_bar = false
# Whether to show the preview panel in the UI by default
# This option can be toggled with the (default) `ctrl-o` keybinding
show_preview_panel = true
# Where to place the input bar in the UI (top or bottom)
input_bar_position = "top"
# DEPRECATED: title is now always displayed at the top as part of the border
# Where to place the preview title in the UI (top or bottom)
# preview_title_position = "top"
# The theme to use for the UI
# A list of builtin themes can be found in the `themes` directory of the television
# repository. You may also create your own theme by creating a new file in a `themes`
# directory in your configuration directory (see the `config.toml` location above).
theme = "catppuccin"
# Previewers settings
# ----------------------------------------------------------------------------
[previewers.file]
# The theme to use for syntax highlighting.
# Bulitin syntax highlighting uses the same syntax highlighting engine as bat.
# To get a list of your currently available themes, run `bat --list-themes`
# Note that setting the BAT_THEME environment variable will override this setting.
theme = "TwoDark"
# Keybindings
# ----------------------------------------------------------------------------
#
# Channel mode
# ------------------------
[keybindings.Channel]
# Quit the application
quit = ["esc", "ctrl-c"]
# Scrolling through entries
select_next_entry = ["down", "ctrl-n", "ctrl-j"]
select_prev_entry = ["up", "ctrl-p", "ctrl-k"]
select_next_page = "pagedown"
select_prev_page = "pageup"
# Scrolling the preview pane
scroll_preview_half_page_down = "ctrl-d"
scroll_preview_half_page_up = "ctrl-u"
# Add entry to selection and move to the next entry
toggle_selection_down = "tab"
# Add entry to selection and move to the previous entry
toggle_selection_up = "backtab"
# Confirm selection
confirm_selection = "enter"
# Copy the selected entry to the clipboard
copy_entry_to_clipboard = "ctrl-y"
# Toggle the remote control mode
toggle_remote_control = "ctrl-r"
# Toggle the send to channel mode
toggle_send_to_channel = "ctrl-s"
# Toggle the help bar
toggle_help = "ctrl-g"
# Toggle the preview panel
toggle_preview = "ctrl-o"
# Remote control mode
# -------------------------------
[keybindings.RemoteControl]
# Quit the application
quit = "esc"
# Scrolling through entries
select_next_entry = ["down", "ctrl-n", "ctrl-j"]
select_prev_entry = ["up", "ctrl-p", "ctrl-k"]
select_next_page = "pagedown"
select_prev_page = "pageup"
# Select an entry
select_entry = "enter"
# Toggle the remote control mode
toggle_remote_control = "ctrl-r"
# Toggle the help bar
toggle_help = "ctrl-g"
# Toggle the preview panel
toggle_preview = "ctrl-o"
# Send to channel mode
# --------------------------------
[keybindings.SendToChannel]
# Quit the application
quit = "esc"
# Scrolling through entries
select_next_entry = ["down", "ctrl-n", "ctrl-j"]
select_prev_entry = ["up", "ctrl-p", "ctrl-k"]
select_next_page = "pagedown"
select_prev_page = "pageup"
# Select an entry
select_entry = "enter"
# Toggle the send to channel mode
toggle_send_to_channel = "ctrl-s"
# Toggle the help bar
toggle_help = "ctrl-g"
# Toggle the preview panel
toggle_preview = "ctrl-o"
# Shell integration
# ----------------------------------------------------------------------------
#
# The shell integration feature allows you to use television as a picker for
# your shell commands (as well as your shell history with <CTRL-R>).
# E.g. typing `git checkout <CTRL-T>` will open television with a list of
# branches to choose from.
[shell_integration.channel_triggers]
# Add your channel triggers here. Each key is a channel that will be triggered
# by the corresponding commands.
# Example: say you want the following commands to trigger the following channels
# when pressing <CTRL-T>:
# `git checkout` should trigger the `git-branches` channel
# `ls` should trigger the `dirs` channel
# `cat` and `cp` should trigger the `files` channel
#
# You would add the following to your configuration file:
# ```
# [shell_integration.channel_triggers]
# "git-branches" = ["git checkout"]
# "dirs" = ["ls"]
# "files" = ["cat", "cp"]
# ```
"alias" = ["alias", "unalias"]
"env" = ["export", "unset"]
"dirs" = ["cd", "ls", "rmdir"]
"files" = [
"cat",
"less",
"head",
"tail",
"vim",
"nano",
"bat",
"cp",
"mv",
"rm",
"touch",
"chmod",
"chown",
"ln",
"tar",
"zip",
"unzip",
"gzip",
"gunzip",
"xz",
]
"git-diff" = ["git add", "git restore"]
"git-branch" = [
"git checkout",
"git branch",
"git merge",
"git rebase",
"git pull",
"git push",
]
"docker-images" = ["docker run"]
"git-repos" = ["nvim", "code", "hx", "git clone"]
[shell_integration.keybindings]
# controls which key binding should trigger tv
# for shell autocomplete
"smart_autocomplete" = "ctrl-t"
# controls which keybinding should trigger tv
# for command history
"command_history" = "ctrl-r"

View file

@ -1,9 +0,0 @@
{pkgs, ...}: {
home.packages = with pkgs; [
television
nix-search-tv
];
xdg.configFile."television/config.toml".source = ./config.toml;
# xdg.configFile."television/default_channels.toml".source = ./config.toml;
xdg.configFile."nix-search-tv/config.json".source = ./config.json;
}

View file

@ -13,10 +13,9 @@ local config = {
enable_wayland = false,
font = wezterm.font_with_fallback({ "JetBrainsMono NF Medium", "Comic Code Ligatures Medium" }),
font_size = 12.0,
window_background_opacity = 1.0,
window_background_opacity = 0.6,
text_background_opacity = 1.0,
enable_tab_bar = false,
max_fps = 144,
window_padding = { top = 20, bottom = 20, left = 20, right = 20 },
}

View file

@ -1,7 +1,6 @@
{
inputs,
pkgs,
config,
pkgs,
...
}: {
# xdg.configFile."yazi/init.lua".source = ./init.lua;
@ -9,7 +8,7 @@
programs.yazi = {
enable = true;
package = inputs.yazi.packages.${pkgs.system}.default;
package = pkgs.yazi;
enableNushellIntegration = true;
settings = {
manager = {

View file

@ -8,6 +8,7 @@ _: {
settings = {
on_force_close = "quit";
simplified_ui = false;
theme = "tokyo-night";
default_layout = "default";
copy_command = "wl-copy";
copy_clipboard = "primary";

View file

@ -1,49 +0,0 @@
{pkgs, ...}: {
catppuccin.kvantum = {
enable = true;
apply = true;
flavor = "mocha";
accent = "pink";
};
qt = {
enable = true;
platformTheme.name = "kvantum";
style.name = "kvantum";
};
catppuccin.gtk = {
enable = true;
flavor = "mocha";
accent = "pink";
gnomeShellTheme = false;
icon = {
enable = true;
flavor = "mocha";
accent = "pink";
};
};
gtk = {
enable = true;
font = {
name = "Inter";
package = pkgs.google-fonts.override {fonts = ["Inter"];};
size = 12;
};
};
dconf.settings = {
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
};
};
home.pointerCursor = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Classic";
size = 24;
gtk.enable = true;
x11.enable = true;
};
}

View file

@ -1,3 +1,3 @@
{
imports = [./gpg.nix];
imports = [./gpg.nix ./gammastep.nix];
}

View file

@ -0,0 +1,12 @@
_: {
services.gammastep = {
enable = true;
provider = "manual";
latitude = "40.730610";
longitude = "-73.935242";
dawnTime = "6:00-7:00";
duskTime = "18:00-20:15";
temperature.day = 5500;
temperature.night = 3000;
};
}

View file

@ -1,9 +1,12 @@
{pkgs, ...}: {
imports = [./services/ly.nix];
imports = [./services/greetd.nix];
environment = {
systemPackages = with pkgs; [
wayland
glib
grim
slurp
satty
wl-clipboard
];
sessionVariables = {
@ -22,13 +25,15 @@
TERMINAL = "wezterm";
# SDL_VIDEODRIVER = "wayland";
};
etc."greetd/environments".text = ''
Hyprland
'';
};
services.dbus.enable = true;
xdg.portal = {
enable = true;
extraPortals = with pkgs; [
xdg-desktop-portal
xdg-desktop-portal-gtk
];
config = {

View file

@ -1,10 +1,5 @@
{
inputs,
pkgs,
lib,
...
}: {
wayland.windowManager.hyprland.settings = with pkgs; {
_: {
wayland.windowManager.hyprland.settings = {
"$mainMod" = "SUPER";
bind = [
"$mainMod, Return, exec, wezterm"
@ -14,12 +9,12 @@
"$mainMod, R, exec, anyrun"
"$mainMod, P, pseudo,"
"$mainMod, J, togglesplit,"
"$mainMod, C, exec, ${lib.getExe inputs.hyprpicker.packages.${system}.default} | wl-copy"
"$mainMod, C, exec, hyprpicker | wl-copy"
"$mainMod, left, movefocus, l"
"$mainMod, right, movefocus, r"
"$mainMod, up, movefocus, u"
"$mainMod, down, movefocus, d"
'', Print, exec, ${lib.getExe grim} -g "$(${lib.getExe slurp})" - | ${lib.getExe satty} -f - --fullscreen --output-filename ~/Pictures/screenshots/$(date '+%Y%m%d-%H:%M:%S').png''
"$mainMod, 1, workspace, 1"
"$mainMod, 2, workspace, 2"
"$mainMod, 3, workspace, 3"

View file

@ -8,7 +8,7 @@
"DP-1,2560x1440@144, 1080x1080, auto" #middle
];
exec-once = [
"hyprpanel"
"eww open bar"
"hyprpaper"
"chatterino"
"vesktop"
@ -23,7 +23,7 @@
};
general = {
gaps_in = 10;
gaps_out = 15;
gaps_out = 20;
border_size = 0;
"col.active_border" = "rgb(7dcfff) rgb(c0caf5)";
"col.inactive_border" = "rgb(24283b)";
@ -91,10 +91,9 @@
mouse_move_enables_dpms = true;
key_press_enables_dpms = false;
};
ecosystem = {
no_update_news = true;
no_donation_nag = true;
};
};
extraConfig = ''
bind =, Print, exec, grim -g "$(slurp)" - | satty -f - --fullscreen --output-filename ~/Pictures/screenshots/$(date '+%Y%m%d-%H:%M:%S').png
'';
};
}

View file

@ -9,7 +9,6 @@ _: {
"float, title:^(RuneLite)$"
"float, title:^(Lutris)$"
"float, title:^(satty)$"
"float, title:^(Postman)$"
"move 850 360, title:^(RuneLite)$"
# "size 800 560, title:^(RuneLite)$"
"size 1200 600, title:^(satty)$"

View file

@ -10,7 +10,5 @@
enable = true;
systemd.enable = true;
xwayland.enable = true;
package = null;
portalPackage = null;
};
}

View file

@ -1,15 +1,10 @@
{
inputs,
pkgs,
...
}: {
_: {
programs.hyprlock = {
enable = true;
package = inputs.hyprlock.packages.${pkgs.system}.default;
settings = {
background = let
verticalWallpaper = "/home/notoh/dev/assets/wallpapers/miku/miku2.png";
horizontalWallpaper = "/home/notoh/dev/assets/wallpapers/miku/miku.png";
verticalWallpaper = "/home/notoh/Pictures/wallpapers/sparkle.png";
horizontalWallpaper = "/home/notoh/Pictures/wallpapers/sparkle2.png";
in [
{
monitor = "HDMI-A-1";
@ -45,17 +40,13 @@
disable_loading_bar = false;
hide_cursor = false;
no_fade_in = false;
ignore_empty_input = true;
};
animations = {
enabled = true;
};
input-field = [
{
monitor = "DP-1";
size = "350, 50";
outline_thickness = 2;
outer_color = "rgb(f5c2e7)";
outer_color = "rgb(f7768e)";
inner_color = "rgb(1a1b26)";
font_color = "rgb(c0caf5)";
fail_color = "rgb(f7768e)";
@ -78,7 +69,7 @@
{
monitor = "DP-1";
text = ''
Hi, <i><span foreground="##74c7ec">$USER</span></i>
Hi, <i><span foreground="##f7768e">$USER</span></i>
'';
color = "rgb(c0caf5)";
position = "0, 60";

View file

@ -0,0 +1,79 @@
{
pkgs,
inputs,
lib,
...
}: let
hyprlandGreetdConf = pkgs.writeText "hyprland-greetd-conf.conf" ''
monitor = HDMI-A-1,disable
monitor = DP-2,disable
monitor = DP-1,2560x1440@144, 0x0, auto
monitor = DP-3,disable
env = XDG_SESSION_TYPE,wayland
exec-once = ${pkgs.dbus}/bin/dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP HYPRLAND_INSTANCE_SIGNATURE
exec-once = ${lib.getExe pkgs.greetd.regreet}; hyprctl dispatch exit
exec-once = systemctl --user restart xdg-desktop-portal xdg-desktop-portal-hyprland
windowrulev2 = fullscreen, title:^regreet$
windowrulev2 = move 0 0, title:^regreet$
$mainMod = SUPER
bind = $mainMod, Q, exec, reboot
bind = $mainMod, Return, exec, ${lib.getExe pkgs.greetd.regreet}
input {
kb_layout = us
follow_mouse = 1
sensitivity = -0.5
force_no_accel = true
}
animations {
enabled = false
first_launch_animation = false
}
misc {
disable_hyprland_logo = true
disable_splash_rendering = true
}
'';
in {
services.greetd = {
enable = true;
settings = rec {
initial_session = {
command = "${lib.getExe inputs.hyprland.packages.${pkgs.system}.default} --config ${hyprlandGreetdConf}";
user = "greeter";
};
default_session = initial_session;
};
};
programs.regreet = {
enable = true;
settings = {
background.path = "/etc/greetd/frieren.png";
env = {
SESSION_DIRS = "/etc/greetd/environments";
};
terminal = {
vt = 1;
};
commands = {
reboot = ["systemctl" "reboot"];
poweroff = ["systemctl" "poweroff"];
};
GTK = {
application_prefer_dark_theme = true;
theme_name = "Tokyonight-Dark-BL";
icon_theme_name = "Papirus-Dark";
cursor_theme_name = "Bibata-Modern-Classic";
font_name = "Noto Sans 11";
};
};
};
}

View file

@ -2,12 +2,10 @@
pkgs,
lib,
config,
inputs,
...
}: {
services.hypridle = {
enable = true;
package = inputs.hypridle.packages.${pkgs.system}.default;
settings = {
general = {
ignore_dbus_inhibit = false;
@ -20,8 +18,8 @@
on-timeout = "${lib.getExe config.programs.hyprlock.package}";
}
{
timeout = 450;
on-timeout = "${inputs.hyprland.packages.${pkgs.system}.hyprland}/bin/hyprctl dispatch dpms off";
timeout = 460;
on-timeout = "hyprctl dispatch dpms off";
}
];
};

View file

@ -1,28 +1,20 @@
{
inputs,
pkgs,
...
}: {
{pkgs, ...}: {
home.packages = [pkgs.hyprpaper];
services.hyprpaper = let
verticalWallpaper = "~/dev/assets/wallpapers/miku/miku2.png";
horizontalWallpaper = "~/dev/assets/wallpapers/miku/miku.png";
in {
services.hyprpaper = {
enable = true;
package = inputs.hyprpaper.packages.${pkgs.system}.default;
settings = {
ipc = true;
splash = false;
preload = [
verticalWallpaper
horizontalWallpaper
"~/Pictures/wallpapers/sparkle3.png"
"~/Pictures/wallpapers/sparkle4.png"
];
wallpaper = [
"HDMI-A-1,${verticalWallpaper}"
"DP-1,${horizontalWallpaper}"
"DP-2,${horizontalWallpaper}"
"DP-3,${verticalWallpaper}"
"HDMI-A-1,~/Pictures/wallpapers/sparkle3.png"
"DP-1,~/Pictures/wallpapers/sparkle4.png"
"DP-2,~/Pictures/wallpapers/sparkle4.png"
"DP-3,~/Pictures/wallpapers/sparkle3.png"
];
};
};

View file

@ -1,33 +0,0 @@
{
pkgs,
lib,
...
}: {
# oneshot service to resize the main monitor
systemd.services.fbset = {
enable = true;
wantedBy = ["multi-user.target"];
unitConfig = {
Description = "Framebuffer resolution";
Before = "display-manager.service";
};
serviceConfig = {
User = "root";
Type = "oneshot";
ExecStart = "${lib.getExe pkgs.fbset} -xres 2560 -yres 1440 -match --all";
RemainAfterExit = "yes";
StandardOutput = "journal";
StandardError = "journal";
};
};
services.displayManager.ly = {
enable = true;
settings = {
load = true;
save = true;
animation = "matrix";
clear_password = true;
vi_mode = true;
};
};
}

View file

@ -3,15 +3,14 @@ _: {
./hardware.nix
./services
./networking.nix
./topology.nix
../common
../common/fonts.nix
../common.nix
../../modules
../../modules/fonts.nix
];
programs.hyprland.enable = true;
services = {
pulseaudio.enable = false;
displayManager.sddm.enable = true;
pipewire = {
enable = true;
@ -27,5 +26,7 @@ _: {
};
};
};
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
}

View file

@ -1,20 +0,0 @@
_: {
topology = {
self = {
name = "ame";
hardware.info = "Thinkpad T480";
interfaces = {
tailscale0 = {
addresses = ["100.108.207.106/32"];
network = "tailscale0";
type = "wireguard";
};
home = {
network = "home";
addresses = [""];
type = "wifi";
};
};
};
};
}

View file

@ -3,8 +3,8 @@
./hardware.nix
./services
./networking.nix
./topology.nix
../common
../common.nix
../../modules
];
users = {

View file

@ -9,7 +9,7 @@ _: {
environment.etc = {
"resolv.conf".text = ''
nameserver 192.168.1.103
nameserver 1.1.1.1
nameserver 9.9.9.9
'';
};
}

View file

@ -56,14 +56,6 @@
name = "ec";
ensureDBOwnership = true;
}
{
name = "botoh";
ensureDBOwnership = true;
}
{
name = "ganymede";
ensureDBOwnership = true;
}
];
ensureDatabases = [
"forgejo"
@ -75,8 +67,6 @@
"miniflux"
"atuin"
"ec"
"botoh"
"ganymede"
];
};
services.postgresqlBackup = {
@ -90,8 +80,6 @@
"attic"
"miniflux"
"atuin"
"botoh"
"ganymede"
];
compression = "zstd";
compressionLevel = 4;

View file

@ -1,20 +0,0 @@
_: {
topology = {
self = {
name = "arashi";
hardware.info = "Proxmox VM";
interfaces = {
tailscale0 = {
addresses = ["100.94.214.100/32"];
network = "tailscale0";
type = "wireguard";
};
home = {
addresses = ["192.168.1.211/24"];
network = "home";
type = "ethernet";
};
};
};
};
}

8
hosts/common.nix Normal file
View file

@ -0,0 +1,8 @@
{inputs, ...}: {
imports = [
inputs.sops-nix.nixosModules.sops
inputs.home-manager.nixosModules.home-manager
inputs.nur.modules.nixos.default
# inputs.attic.nixosModules.atticd
];
}

View file

@ -1,18 +0,0 @@
{inputs, ...}: {
imports = [
inputs.sops-nix.nixosModules.sops
inputs.home-manager.nixosModules.home-manager
inputs.nur.modules.nixos.default
inputs.nix-topology.nixosModules.default
inputs.nix-flatpak.nixosModules.nix-flatpak
./prometheus.nix
./security.nix
./users.nix
./nix.nix
./system.nix
./openssh.nix
./virtualisation.nix
./sops.nix
./time.nix
];
}

View file

@ -151,5 +151,21 @@
}
];
};
kaze = nixosSystem {
inherit specialArgs;
modules = [
./kaze
{
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
extraSpecialArgs = specialArgs;
users.notoh = {
imports = homeImports."default";
};
};
}
];
};
};
}

View file

@ -71,6 +71,16 @@
sshOpts = ["-t" "-i" "~/.ssh/forgejo"];
magicRollback = true;
};
kaze = {
hostname = "100.69.79.81";
profiles.system = {
user = "root";
path = activate.nixos inputs.self.nixosConfigurations.kaze;
};
sshUser = "root";
sshOpts = ["-t" "-i" "~/.ssh/forgejo"];
magicRollback = true;
};
};
};
}

View file

@ -3,8 +3,8 @@
./hardware.nix
./services
./networking.nix
./topology.nix
../common
../common.nix
../../modules
];
users = {

View file

@ -9,7 +9,7 @@ _: {
environment.etc = {
"resolv.conf".text = ''
nameserver 192.168.1.103
nameserver 1.1.1.1
nameserver 9.9.9.9
'';
};
}

View file

@ -51,10 +51,6 @@
"https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext"
"https://raw.githubusercontent.com/FadeMind/hosts.extras/master/UncheckyAds/hosts"
"https://raw.githubusercontent.com/bigdargon/hostsVN/master/hosts"
"https://raw.githubusercontent.com/AdGoBye/AdGoBye-Blocklists/main/AGBBase.toml"
"https://raw.githubusercontent.com/AdGoBye/AdGoBye-Blocklists/main/AGBCommunity.toml"
"https://raw.githubusercontent.com/AdGoBye/AdGoBye-Blocklists/main/AGBUpsell.toml"
"https://raw.githubusercontent.com/AdGoBye/AdGoBye-Blocklists/main/AGBSupporters.toml"
];
tracking = [
"https://v.firebog.net/hosts/Easyprivacy.txt"
@ -90,7 +86,6 @@
*.clickhouse.com
*.discord.com
*.last.fm
*.spotify.com
'';
in {
ads = [
@ -113,7 +108,6 @@
customTTL = "1h";
mapping = let
yukiIp = "192.168.1.98";
kariruIp = "192.168.1.54";
in {
# infra
@ -130,19 +124,20 @@
"jellyseerr.internal.flake.sh" = "${yukiIp}";
"sonarr.internal.flake.sh" = "${yukiIp}";
"radarr.internal.flake.sh" = "${yukiIp}";
"readarr.internal.flake.sh" = "${yukiIp}";
"lidarr.internal.flake.sh" = "${yukiIp}";
"whisparr.internal.flake.sh" = "${yukiIp}";
"bazarr.internal.flake.sh" = "${yukiIp}";
"prowlarr.internal.flake.sh" = "${yukiIp}";
"stash.internal.flake.sh" = "${yukiIp}";
"immich.internal.flake.sh" = "${yukiIp}";
"komga.internal.flake.sh" = "${yukiIp}";
"shoko.internal.flake.sh" = "${kariruIp}";
"nextcloud.internal.flake.sh" = "192.168.1.199";
# misc
"wallos.internal.flake.sh" = "${yukiIp}";
"synology.internal.flake.sh" = "192.168.1.71";
"paperless.internal.flake.sh" = "${yukiIp}";
"hoarder.internal.flake.sh" = "${yukiIp}";
"ganymede.internal.flake.sh" = "100.121.201.47";
"rss.internal.flake.sh" = "${yukiIp}";
};
};
redis = {

View file

@ -1,20 +0,0 @@
_: {
topology = {
self = {
name = "haru";
hardware.info = "Proxmox VM";
interfaces = {
tailscale0 = {
addresses = ["100.73.192.45/32"];
network = "tailscale0";
type = "wireguard";
};
home = {
addresses = ["192.168.1.103/24"];
network = "home";
type = "ethernet";
};
};
};
};
}

View file

@ -3,8 +3,8 @@
./hardware.nix
./services
./networking.nix
./topology.nix
../common
../common.nix
../../modules
];
users = {

View file

@ -9,7 +9,7 @@ _: {
environment.etc = {
"resolv.conf".text = ''
nameserver 192.168.1.103
nameserver 1.1.1.1
nameserver 9.9.9.9
'';
};
}

View file

@ -1,10 +1,9 @@
{pkgs, ...}: {
networking.firewall.allowedTCPPorts = [9292 8111];
networking.firewall.allowedTCPPorts = [9292];
imports = [
./restic.nix
./torrent.nix
./syncthing.nix
];
environment.systemPackages = [pkgs.recyclarr];
@ -21,27 +20,35 @@
enable = true;
openFirewall = true;
};
bazarr = {
enable = true;
openFirewall = true;
};
readarr = {
enable = true;
openFirewall = true;
};
lidarr = {
enable = true;
openFirewall = true;
};
sabnzbd.enable = true;
};
virtualisation.oci-containers.containers = {
byparr = {
image = "ghcr.io/thephaseless/byparr@sha256:9f83a6f5e5cec22a70abf3401a23164295a4b2e1ced37264907c3512981e527a"; # v3.3.21
ports = ["8191:8191"];
whisparr = {
image = "ghcr.io/hotio/whisparr@sha256:d66f5dc01af747881e25b8e72aa45de30fba672c16df897af69257704fb61fe4"; # v3-3.0.0.545
ports = ["6969:6969"];
volumes = [
"/var/lib/whisparr:/config"
"/stash:/media/stash"
"/media/downloads:/media/downloads"
];
extraOptions = ["--network=host"];
};
shoko = {
image = "ghcr.io/shokoanime/server@sha256:dde0c5a8bddc226ae368827fd7df382602ad312a2337ebade8e5cc63fa0c4dac"; # v5.1.0
ports = ["8111:8111"];
environment = {
PUID = "1000";
PGID = "1000";
TZ = "Etc/UTC";
};
volumes = [
"/var/lib/shoko:/home/shoko/.shoko"
"/media/anime:/media/anime"
"/media/anime-movies:/media/anime-movies"
];
flaresolverr = {
image = "ghcr.io/flaresolverr/flaresolverr@sha256:5f5661db1e69a6f80ac24d47d9fa5580f6f741ee5ec967818396ae0dacecd7ea"; # v3.3.17
ports = ["8191:8191"];
extraOptions = ["--network=host"];
};
};

View file

@ -1,12 +0,0 @@
_: {
networking.firewall.allowedTCPPorts = [8385];
services.syncthing = {
enable = true;
openDefaultPorts = true;
dataDir = "/home/notoh/sync";
configDir = "/home/notoh/.config/syncthing";
guiAddress = "192.168.1.54:8385";
user = "notoh";
group = "users";
};
}

View file

@ -2,7 +2,7 @@
sops.secrets.gluetun = {};
virtualisation.oci-containers.containers = {
gluetun = {
image = "qmcgaw/gluetun@sha256:2b42bfa046757145a5155acece417b65b4443c8033fb88661a8e9dcf7fda5a00"; #v3.40
image = "qmcgaw/gluetun@sha256:5522794f5cce6d84bc7f06b1e3a3b836ede9100c64aec94543cb503bb2ecb72f"; #v3.38
hostname = "gluetun";
ports = [
"8000:8000/tcp" # HTTP control server
@ -13,12 +13,11 @@
"6881:6881" #qb
"6881:6881/udp" #qb
];
volumes = ["/srv/gluetun:/tmp/gluetun"];
environmentFiles = [config.sops.secrets.gluetun.path];
extraOptions = ["--cap-add=NET_ADMIN" "--device=/dev/net/tun:/dev/net/tun"];
extraOptions = ["--cap-add=NET_ADMIN"];
};
qbittorrent = {
image = "linuxserver/qbittorrent@sha256:50f490770308d0351e12618422e74e0613721b080f5db0bf840cf66a7281eea8"; # v5.0.4
image = "linuxserver/qbittorrent@sha256:d01b1df556154862eca982d0f2c420073e2e2959c309951fbfddd25525ea28ce"; # v5.0.0
dependsOn = ["gluetun"];
environment = {
PUID = "1001";

View file

@ -1,20 +0,0 @@
_: {
topology = {
self = {
name = "kariru";
hardware.info = "Proxmox VM";
interfaces = {
tailscale0 = {
addresses = ["100.126.229.95/32"];
network = "tailscale0";
type = "wireguard";
};
home = {
addresses = ["192.168.1.54/24"];
network = "home";
type = "ethernet";
};
};
};
};
}

18
hosts/kaze/default.nix Normal file
View file

@ -0,0 +1,18 @@
{...}: {
imports = [
./hardware.nix
./services
./networking.nix
../common.nix
../../modules
];
users = {
users.notoh.openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE4qfqJNxwNg9ryeT/XbjfQyuDKbBAwRn2Lzq3Iq5kA7 kaze"
];
users.root.openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMd8j1+fC/ng7l17rsxugVtlhurUe1ICizwA9lQkSuNY forgejo"
];
};
}

48
hosts/kaze/hardware.nix Normal file
View file

@ -0,0 +1,48 @@
{
lib,
modulesPath,
...
}: {
imports = [
(modulesPath + "/profiles/qemu-guest.nix")
];
boot = {
kernelModules = ["kvm-amd"];
extraModulePackages = [];
loader.grub = {
enable = true;
configurationLimit = 5;
device = "/dev/vda";
useOSProber = true;
};
initrd = {
availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" "virtio_blk"];
kernelModules = [];
};
};
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/9cb414ab-0bb4-4db7-b77e-7d2a8cafd657";
fsType = "ext4";
};
"/var/lib/slab" = {
device = "/dev/disk/by-uuid/733a3f7b-b232-4b34-8742-460a67d8f1d0";
fsType = "ext4";
};
};
swapDevices = [
{device = "/dev/disk/by-uuid/100a4262-ce57-47a7-b99a-f124a8e369de";}
];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.ens3.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}

15
hosts/kaze/networking.nix Normal file
View file

@ -0,0 +1,15 @@
_: {
networking = {
networkmanager.enable = true;
hostName = "kaze";
firewall = {
enable = true;
};
};
environment.etc = {
"resolv.conf".text = ''
nameserver 9.9.9.9
nameserver 149.112.112.112
'';
};
}

View file

@ -0,0 +1,6 @@
_: {
imports = [
./tailscale.nix
./minio.nix
];
}

View file

@ -0,0 +1,27 @@
{
config,
pkgs,
...
}: {
environment.systemPackages = [pkgs.minio-client];
systemd.services.minio.environment = {MINIO_BROWSER_REDIRECT = "false";};
sops.secrets.minio = {
owner = "minio";
group = "minio";
mode = "0600";
restartUnits = ["minio.service"];
};
services.minio = let
dataDir = "/var/lib/slab/minio";
in {
enable = true;
region = "us-east-1";
consoleAddress = "0.0.0.0:9006";
listenAddress = "0.0.0.0:9005";
rootCredentialsFile = config.sops.secrets.minio.path;
dataDir = ["${dataDir}/data"];
configDir = "${dataDir}/config";
};
}

View file

@ -0,0 +1,41 @@
{
config,
lib,
pkgs,
...
}: {
sops.secrets.tsauth-kaze = {sopsFile = ../../../secrets/tailscale/secrets.yaml;};
environment.systemPackages = [pkgs.jq pkgs.tailscale];
services.tailscale = {
useRoutingFeatures = lib.mkDefault "client";
};
networking.firewall.allowedUDPPorts = [config.services.tailscale.port];
networking.firewall.trustedInterfaces = [config.services.tailscale.interfaceName];
systemd.services.tailscale-autoconnect = {
description = "Automatic connection to Tailscale";
# make sure tailscale is running before trying to connect to tailscale
after = ["network-pre.target" "tailscale.service"];
wants = ["network-pre.target" "tailscale.service"];
wantedBy = ["multi-user.target"];
# set this service as a oneshot job
serviceConfig.Type = "oneshot";
# have the job run this shell script
script = with pkgs; ''
# wait for tailscaled to settle
sleep 2
# check if we are already authenticated to tailscale
status="$(${tailscale}/bin/tailscale status -json | ${jq}/bin/jq -r .BackendState)"
if [ $status = "Running" ]; then # if so, then do nothing
exit 0
fi
# otherwise authenticate with tailscale
${tailscale}/bin/tailscale up -authkey file:${config.sops.secrets.tsauth-kaze.path} --exit-node=100.104.42.96 --exit-node-allow-lan-access=true --accept-dns=false
'';
};
}

View file

@ -3,8 +3,8 @@ _: {
./hardware.nix
./services
./networking.nix
./topology.nix
../common
../common.nix
../../modules
];
users = {

View file

@ -35,10 +35,6 @@
device = "192.168.1.199:/mnt/Sutoreji/nix-restic-data/sakura";
fsType = "nfs";
};
"/nas/vods" = {
device = "192.168.1.199:/mnt/Sutoreji/vods";
fsType = "nfs";
};
};
swapDevices = [

View file

@ -9,7 +9,7 @@ _: {
environment.etc = {
"resolv.conf".text = ''
nameserver 192.168.1.103
nameserver 1.1.1.1
nameserver 9.9.9.9
'';
};
}

View file

@ -0,0 +1,68 @@
{config, ...}: {
networking.firewall.allowedTCPPorts = [9091];
sops.secrets.authelia-jwt = {owner = config.systemd.services.authelia-default.serviceConfig.User;};
sops.secrets.authelia-sek = {owner = config.systemd.services.authelia-default.serviceConfig.User;};
services.authelia.instances.default = {
enable = true;
secrets = {
jwtSecretFile = config.sops.secrets.authelia-jwt.path;
storageEncryptionKeyFile = config.sops.secrets.authelia-sek.path;
};
settings = let
pqdn = "notohh.dev";
in {
log.level = "debug";
theme = "dark";
default_2fa_method = "totp";
default_redirection_url = "https://passport.${pqdn}/";
authentication_backend = {
file.path = "/var/lib/authelia-default/user.yml";
};
session = {
domain = pqdn;
expiration = 3600;
inactivity = 300;
};
totp = {
issuer = "authelia.com";
disable = false;
algorithm = "sha1";
digits = 6;
period = 30;
skew = 1;
secret_size = 32;
};
server = {
host = "0.0.0.0";
port = 9091;
};
access_control = {
default_policy = "deny";
rules = [
{
domain = pqdn;
policy = "bypass";
}
];
};
regulation = {
max_retries = 3;
find_time = 120;
ban_time = 300;
};
notifier.filesystem = {
filename = "/var/lib/authelia-default/notif.txt";
};
storage.postgres = let
dbInfo = "authelia";
in {
host = "192.168.1.211";
port = 5432;
database = dbInfo;
schema = "public";
username = dbInfo;
password = dbInfo;
};
};
};
}

View file

@ -1,8 +1,8 @@
{pkgs, ...}: {
{inputs, ...}: {
networking.firewall.allowedTCPPorts = [6167 8448];
services.matrix-conduit = {
enable = true;
package = pkgs.conduwuit;
package = inputs.conduwuit.packages.x86_64-linux.default;
settings = {
global = {
address = "0.0.0.0";
@ -10,15 +10,13 @@
allow_registration = false;
allow_federation = true;
allow_encryption = true;
log = "info";
max_concurrent_requests = 100;
max_request_size = 20000000;
database_backend = "rocksdb";
enable_lightning_bolt = false;
trusted_servers = ["matrix.org"];
url_preview_domain_contains_allowlist = ["*"];
new_user_displayname_suffix = "";
# yes_i_am_very_very_sure_i_want_an_open_registration_server_prone_to_abuse = true;
log = "info";
well_known = {
client = "https://matrix.flake.sh";
server = "matrix.flake.sh:443";

View file

@ -1,15 +1,15 @@
{...}: {
imports = [
./restic.nix
# ./authelia.nix
./forgejo.nix
./rustypaste.nix
# ./hedgedoc.nix
./grafana.nix
./vaultwarden.nix
./conduit.nix
./tailscale.nix
./rustlog.nix
./wastebin.nix
./ganymede.nix
./immich-proxy.nix
./matrix.nix
];
}

Some files were not shown because too many files have changed in this diff Show more