Compare commits
1 commit
master
...
flake-lock
Author | SHA1 | Date | |
---|---|---|---|
58de17df43 |
172 changed files with 3455 additions and 3110 deletions
.sops.yamlLICENSEREADME.mdflake.lockflake.nix
home
default.nix
profiles
programs
browsers/firefox
editors
eww
git.nixgtk.nixhyprpanel
mako.nixmedia
opencomposite.nixterminal
themes.nixservices
wayland
hosts
|
@ -19,3 +19,7 @@ creation_rules:
|
|||
key_groups:
|
||||
- age:
|
||||
- *notoh
|
||||
- path_regex: secrets/homepage/[^/]+\.yaml$
|
||||
key_groups:
|
||||
- age:
|
||||
- *notoh
|
||||
|
|
26
LICENSE
26
LICENSE
|
@ -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.
|
||||
|
|
|
@ -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
2099
flake.lock
generated
File diff suppressed because it is too large
Load diff
102
flake.nix
102
flake.nix
|
@ -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";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
53
home/profiles/tsuki/stylix.nix
Normal file
53
home/profiles/tsuki/stylix.nix
Normal 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;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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"];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@ _: {
|
|||
enable = true;
|
||||
defaultEditor = true;
|
||||
settings = {
|
||||
theme = "onedark";
|
||||
editor = {
|
||||
auto-save = true;
|
||||
true-color = true;
|
||||
|
|
|
@ -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; [
|
||||
{
|
||||
|
|
|
@ -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"
|
||||
];
|
||||
};
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
_: {
|
||||
programs.zed-editor.userKeymaps = [
|
||||
{
|
||||
context = "Workspace";
|
||||
bindings = {
|
||||
ctrl-shift-t = "workspace::NewTerminal";
|
||||
};
|
||||
}
|
||||
{
|
||||
context = "Editor";
|
||||
bindings = {
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
|
@ -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"];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
24
home/programs/eww/config/eww.scss
Normal file
24
home/programs/eww/config/eww.scss
Normal 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;
|
||||
}
|
49
home/programs/eww/config/eww.yuck
Normal file
49
home/programs/eww/config/eww.yuck
Normal 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))
|
21
home/programs/eww/config/scripts/get-music-cover.sh
Normal file
21
home/programs/eww/config/scripts/get-music-cover.sh
Normal 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
|
24
home/programs/eww/config/style/colors.scss
Normal file
24
home/programs/eww/config/style/colors.scss
Normal 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;
|
64
home/programs/eww/config/style/menu.scss
Normal file
64
home/programs/eww/config/style/menu.scss
Normal 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;
|
||||
}
|
23
home/programs/eww/config/style/mixins.scss
Normal file
23
home/programs/eww/config/style/mixins.scss
Normal 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;
|
||||
}
|
92
home/programs/eww/config/style/music.scss
Normal file
92
home/programs/eww/config/style/music.scss
Normal 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;
|
||||
}
|
||||
}
|
14
home/programs/eww/config/style/sysinfo.scss
Normal file
14
home/programs/eww/config/style/sysinfo.scss
Normal 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;
|
||||
}
|
27
home/programs/eww/config/style/workspaces.scss
Normal file
27
home/programs/eww/config/style/workspaces.scss
Normal 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();
|
||||
}
|
14
home/programs/eww/config/vars.yuck
Normal file
14
home/programs/eww/config/vars.yuck
Normal 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 ',' ' '")
|
7
home/programs/eww/config/widgets/container.yuck
Normal file
7
home/programs/eww/config/widgets/container.yuck
Normal file
|
@ -0,0 +1,7 @@
|
|||
(defwidget container []
|
||||
(box
|
||||
:class "container"
|
||||
:orientation "h"
|
||||
(children)
|
||||
)
|
||||
)
|
9
home/programs/eww/config/widgets/datetime.yuck
Normal file
9
home/programs/eww/config/widgets/datetime.yuck
Normal file
|
@ -0,0 +1,9 @@
|
|||
(defpoll time :interval "60s"
|
||||
:initial "initial-value"
|
||||
`date +%H:%M`)
|
||||
|
||||
(defwidget time []
|
||||
(box
|
||||
:class "time"
|
||||
(label
|
||||
:text time)))
|
6
home/programs/eww/config/widgets/logo.yuck
Normal file
6
home/programs/eww/config/widgets/logo.yuck
Normal file
|
@ -0,0 +1,6 @@
|
|||
(defwidget logo []
|
||||
(box
|
||||
:class "logo"
|
||||
(image :path "/home/notoh/Pictures/icons/nixos.png"
|
||||
:image-width 24
|
||||
:image-height 24)))
|
71
home/programs/eww/config/widgets/menu.yuck
Normal file
71
home/programs/eww/config/widgets/menu.yuck
Normal 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))
|
55
home/programs/eww/config/widgets/music.yuck
Normal file
55
home/programs/eww/config/widgets/music.yuck
Normal 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))
|
21
home/programs/eww/config/widgets/sysinfo.yuck
Normal file
21
home/programs/eww/config/widgets/sysinfo.yuck
Normal 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 ""))))
|
5
home/programs/eww/config/widgets/time.yuck
Normal file
5
home/programs/eww/config/widgets/time.yuck
Normal file
|
@ -0,0 +1,5 @@
|
|||
(defwidget time []
|
||||
(box
|
||||
:class "time"
|
||||
(label
|
||||
:text time)))
|
16
home/programs/eww/config/widgets/workspaces.yuck
Normal file
16
home/programs/eww/config/widgets/workspaces.yuck
Normal 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 "" " ")))
|
13
home/programs/eww/default.nix
Normal file
13
home/programs/eww/default.nix
Normal file
|
@ -0,0 +1,13 @@
|
|||
{pkgs, ...}: {
|
||||
home.packages = with pkgs; [
|
||||
eww
|
||||
playerctl
|
||||
imagemagick
|
||||
];
|
||||
|
||||
programs.eww = {
|
||||
enable = true;
|
||||
package = pkgs.eww;
|
||||
configDir = ./config;
|
||||
};
|
||||
}
|
|
@ -15,7 +15,6 @@ _: {
|
|||
enable = true;
|
||||
gitCredentialHelper.enable = true;
|
||||
settings = {
|
||||
git_protocol = "ssh";
|
||||
editor = "hx";
|
||||
prompt = "enabled";
|
||||
};
|
||||
|
|
27
home/programs/gtk.nix
Normal file
27
home/programs/gtk.nix
Normal 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;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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 = [];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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
12
home/programs/mako.nix
Normal 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";
|
||||
};
|
||||
}
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
}
|
||||
'';
|
||||
}
|
|
@ -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;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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;
|
||||
};
|
||||
}
|
74
home/programs/media/spotify-player.nix
Normal file
74
home/programs/media/spotify-player.nix
Normal 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"] }
|
||||
'';
|
||||
};
|
||||
}
|
|
@ -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
|
||||
}
|
||||
'';
|
||||
}
|
|
@ -1,11 +1,6 @@
|
|||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
_: {
|
||||
programs.atuin = {
|
||||
enable = true;
|
||||
package = inputs.atuin.packages.${pkgs.system}.default;
|
||||
enableNushellIntegration = true;
|
||||
settings = {
|
||||
auto_sync = true;
|
||||
|
|
|
@ -2,6 +2,7 @@ _: {
|
|||
programs.bat = {
|
||||
enable = true;
|
||||
config = {
|
||||
theme = "base16-stylix";
|
||||
pager = "--RAW-CONTROL-CHARS --quit-if-one-screen --mouse";
|
||||
style = "plain";
|
||||
};
|
||||
|
|
|
@ -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 }
|
||||
}
|
||||
|
||||
|
||||
|
||||
]
|
||||
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
{
|
||||
"indexes": ["nixpkgs", "home-manager", "nur"],
|
||||
"update_interval": "12h",
|
||||
"enable_waiting_message": true
|
||||
}
|
|
@ -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"
|
|
@ -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;
|
||||
}
|
|
@ -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 },
|
||||
}
|
||||
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
}
|
|
@ -1,3 +1,3 @@
|
|||
{
|
||||
imports = [./gpg.nix];
|
||||
imports = [./gpg.nix ./gammastep.nix];
|
||||
}
|
||||
|
|
12
home/services/gammastep.nix
Normal file
12
home/services/gammastep.nix
Normal 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;
|
||||
};
|
||||
}
|
|
@ -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 = {
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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)$"
|
||||
|
|
|
@ -10,7 +10,5 @@
|
|||
enable = true;
|
||||
systemd.enable = true;
|
||||
xwayland.enable = true;
|
||||
package = null;
|
||||
portalPackage = null;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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";
|
||||
|
|
79
home/wayland/services/greetd.nix
Normal file
79
home/wayland/services/greetd.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
|
|
@ -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"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -3,8 +3,8 @@
|
|||
./hardware.nix
|
||||
./services
|
||||
./networking.nix
|
||||
./topology.nix
|
||||
../common
|
||||
../common.nix
|
||||
../../modules
|
||||
];
|
||||
|
||||
users = {
|
||||
|
|
|
@ -9,7 +9,7 @@ _: {
|
|||
environment.etc = {
|
||||
"resolv.conf".text = ''
|
||||
nameserver 192.168.1.103
|
||||
nameserver 1.1.1.1
|
||||
nameserver 9.9.9.9
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
8
hosts/common.nix
Normal 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
|
||||
];
|
||||
}
|
|
@ -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
|
||||
];
|
||||
}
|
|
@ -151,5 +151,21 @@
|
|||
}
|
||||
];
|
||||
};
|
||||
kaze = nixosSystem {
|
||||
inherit specialArgs;
|
||||
modules = [
|
||||
./kaze
|
||||
{
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
extraSpecialArgs = specialArgs;
|
||||
users.notoh = {
|
||||
imports = homeImports."default";
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
./hardware.nix
|
||||
./services
|
||||
./networking.nix
|
||||
./topology.nix
|
||||
../common
|
||||
../common.nix
|
||||
../../modules
|
||||
];
|
||||
|
||||
users = {
|
||||
|
|
|
@ -9,7 +9,7 @@ _: {
|
|||
environment.etc = {
|
||||
"resolv.conf".text = ''
|
||||
nameserver 192.168.1.103
|
||||
nameserver 1.1.1.1
|
||||
nameserver 9.9.9.9
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -3,8 +3,8 @@
|
|||
./hardware.nix
|
||||
./services
|
||||
./networking.nix
|
||||
./topology.nix
|
||||
../common
|
||||
../common.nix
|
||||
../../modules
|
||||
];
|
||||
|
||||
users = {
|
||||
|
|
|
@ -9,7 +9,7 @@ _: {
|
|||
environment.etc = {
|
||||
"resolv.conf".text = ''
|
||||
nameserver 192.168.1.103
|
||||
nameserver 1.1.1.1
|
||||
nameserver 9.9.9.9
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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"];
|
||||
};
|
||||
};
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
}
|
|
@ -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";
|
||||
|
|
|
@ -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
18
hosts/kaze/default.nix
Normal 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
48
hosts/kaze/hardware.nix
Normal 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
15
hosts/kaze/networking.nix
Normal 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
|
||||
'';
|
||||
};
|
||||
}
|
6
hosts/kaze/services/default.nix
Normal file
6
hosts/kaze/services/default.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
_: {
|
||||
imports = [
|
||||
./tailscale.nix
|
||||
./minio.nix
|
||||
];
|
||||
}
|
27
hosts/kaze/services/minio.nix
Normal file
27
hosts/kaze/services/minio.nix
Normal 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";
|
||||
};
|
||||
}
|
41
hosts/kaze/services/tailscale.nix
Normal file
41
hosts/kaze/services/tailscale.nix
Normal 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
|
||||
'';
|
||||
};
|
||||
}
|
|
@ -3,8 +3,8 @@ _: {
|
|||
./hardware.nix
|
||||
./services
|
||||
./networking.nix
|
||||
./topology.nix
|
||||
../common
|
||||
../common.nix
|
||||
../../modules
|
||||
];
|
||||
|
||||
users = {
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -9,7 +9,7 @@ _: {
|
|||
environment.etc = {
|
||||
"resolv.conf".text = ''
|
||||
nameserver 192.168.1.103
|
||||
nameserver 1.1.1.1
|
||||
nameserver 9.9.9.9
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
68
hosts/sakura/services/authelia.nix
Normal file
68
hosts/sakura/services/authelia.nix
Normal 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;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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";
|
|
@ -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
Loading…
Add table
Reference in a new issue