Compare commits
114 commits
flake-lock
...
master
Author | SHA1 | Date | |
---|---|---|---|
808af0c095 | |||
48f8ee9817 | |||
b691294b08 | |||
9582abc5ce | |||
362b9f044f | |||
16bea5ecd0 | |||
10285807d9 | |||
6f3457ba2e | |||
667d99e2e9 | |||
c05cdf7605 | |||
9967772878 | |||
b74f983efd | |||
6e9ebfef1b | |||
fb67c6f3fc | |||
a99c9a70ae | |||
7c41f50433 | |||
246ea2c337 | |||
b6d68a90a7 | |||
f396aa9fe0 | |||
9bfc5b5188 | |||
ea51aa2617 | |||
e1c3a6edc8 | |||
297f095a2a | |||
b8a53b18c1 | |||
d08cd8dcd8 | |||
b769c225bc | |||
16a083673c | |||
b30b226142 | |||
25bb45a1a1 | |||
ebfd92a944 | |||
04b9285f94 | |||
e29ae84e02 | |||
fb373177b9 | |||
a1c226c8d5 | |||
e6be419ddd | |||
1217e90491 | |||
5becd952e6 | |||
ba292ee314 | |||
c65ae2f7a6 | |||
475d7def0c | |||
25c4539a53 | |||
9001f4b643 | |||
22414bc2f2 | |||
62d63aa60d | |||
7c0eb86242 | |||
f625eae63e | |||
5f3b25b4df | |||
1286b2c21e | |||
1ee85bb1e8 | |||
145b072cd0 | |||
2af33264f6 | |||
5801d4337e | |||
b7cd36173f | |||
19e7878a8e | |||
2835c14347 | |||
9cf3ccfa04 | |||
e99a2fe779 | |||
e058969876 | |||
850504f020 | |||
ac9c730b2c | |||
ab2b719e49 | |||
a53a451dad | |||
8918ec15d1 | |||
22744357f8 | |||
d74cf3d450 | |||
df9a4dbe34 | |||
fac0cc86bd | |||
a6ddefe428 | |||
5728053278 | |||
28bd86eba2 | |||
da0b301435 | |||
af12a15320 | |||
0d137d53a4 | |||
9b9e57c87a | |||
09c5c4e81b | |||
3f359aabf3 | |||
414fdf0bc7 | |||
420c50d4d8 | |||
a9e0d4d500 | |||
5b0814a8d7 | |||
a69380665e | |||
6fe24f311f | |||
1a5d835d47 | |||
932df2571a | |||
f2345cf30f | |||
3e5b3ae722 | |||
75674537c2 | |||
ff9007e984 | |||
c2cbad7587 | |||
502791c2a7 | |||
f068b32e5d | |||
e3d59d1147 | |||
20b33a3c3b | |||
a42505b7b1 | |||
127496a192 | |||
6ea24611f6 | |||
d15c8a8085 | |||
dd644e5729 | |||
1d01278932 | |||
baea36f726 | |||
5916091449 | |||
871ee2870e | |||
0670f8f68c | |||
8407e44e47 | |||
3536dc68fb | |||
cdeb1cc672 | |||
0f122d184d | |||
478188ccc9 | |||
7eea9b1bb4 | |||
6c347fc0a3 | |||
bbd93f7218 | |||
4ebb279d63 | |||
db67cddbda | |||
193f2480d7 |
172 changed files with 3164 additions and 3446 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,7 +19,3 @@ creation_rules:
|
|||
key_groups:
|
||||
- age:
|
||||
- *notoh
|
||||
- path_regex: secrets/homepage/[^/]+\.yaml$
|
||||
key_groups:
|
||||
- age:
|
||||
- *notoh
|
||||
|
|
26
LICENSE
26
LICENSE
|
@ -1,21 +1,13 @@
|
|||
MIT License
|
||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
Version 2, December 2004
|
||||
|
||||
Copyright (c) 2023 notohh
|
||||
Copyright (C) 2004 notohh <contact@notohh.dev>
|
||||
|
||||
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:
|
||||
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.
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
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.
|
||||
0. You just DO WHAT THE FUCK YOU WANT TO.
|
||||
|
|
|
@ -14,12 +14,13 @@
|
|||
<img src="https://ci.flake.sh/api/badges/9/status.svg" alt="status-badge" />
|
||||
</a>
|
||||
<p></p>
|
||||
<img src="https://i.imgur.com/s2zvbRt.png"></img>
|
||||
<img src="https://i.imgur.com/G34pKzL.png"></img>
|
||||
<img src="https://i.imgur.com/TbveB7E.png"></img>
|
||||
<p>
|
||||
Screenshot updated: 2024-04-26
|
||||
Screenshots updated: 2025-02-09
|
||||
</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>
|
||||
|
||||
|
@ -38,6 +39,7 @@
|
|||
- :building_construction: [tsuru](hosts/tsuru)
|
||||
- :snowflake: [yuki](hosts/yuki)
|
||||
- :electric_plug: [modules](modules)
|
||||
- :airplane: [overlays](overlays)
|
||||
- :package: [pkgs](pkgs)
|
||||
- :lock: [secrets](secrets)
|
||||
|
||||
|
|
2144
flake.lock
generated
2144
flake.lock
generated
File diff suppressed because it is too large
Load diff
102
flake.nix
102
flake.nix
|
@ -4,8 +4,9 @@
|
|||
outputs = inputs:
|
||||
inputs.flake-parts.lib.mkFlake {inherit inputs;} {
|
||||
imports = [
|
||||
inputs.pre-commit-hooks.flakeModule
|
||||
./hosts
|
||||
./overlays
|
||||
./modules
|
||||
./hosts/deploy.nix
|
||||
./home/profiles
|
||||
];
|
||||
|
@ -15,28 +16,6 @@
|
|||
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;
|
||||
|
@ -56,46 +35,27 @@
|
|||
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";
|
||||
|
||||
### other stuff
|
||||
### 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";
|
||||
nix-gaming.url = "github:fufexan/nix-gaming";
|
||||
nur.url = "github:nix-community/NUR";
|
||||
yazi.url = "github:sxyazi/yazi";
|
||||
|
@ -104,26 +64,14 @@
|
|||
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";
|
||||
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";
|
||||
};
|
||||
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";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
gnupg
|
||||
ripgrep
|
||||
lazydocker
|
||||
ffmpeg
|
||||
yt-dlp
|
||||
nfs-utils
|
||||
dig
|
||||
|
@ -38,8 +39,8 @@
|
|||
unrar
|
||||
p7zip
|
||||
procs
|
||||
atac
|
||||
navi
|
||||
busybox
|
||||
];
|
||||
stateVersion = "23.05";
|
||||
};
|
||||
|
|
|
@ -6,10 +6,8 @@
|
|||
../../programs/browsers/chromium
|
||||
../../programs/terminal/wezterm
|
||||
../../programs/terminal/zellij
|
||||
../../programs/gtk.nix
|
||||
# ../../programs/themes.nix
|
||||
../../programs/media/cava.nix
|
||||
../../programs/mako.nix
|
||||
../../programs/media/spotify-player.nix
|
||||
../../programs/media/zathura.nix
|
||||
];
|
||||
|
||||
|
@ -65,10 +63,6 @@
|
|||
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,19 +4,23 @@
|
|||
...
|
||||
}: {
|
||||
imports = [
|
||||
./stylix.nix
|
||||
inputs.catppuccin.homeManagerModules.catppuccin
|
||||
../../services
|
||||
../../programs/anyrun
|
||||
../../programs/eww
|
||||
../../programs/hyprpanel
|
||||
../../programs/browsers/firefox
|
||||
../../programs/terminal/wezterm
|
||||
../../programs/terminal/zellij
|
||||
../../programs/terminal/television
|
||||
../../programs/editors/zed
|
||||
../../programs/media/cava.nix
|
||||
../../programs/gtk.nix
|
||||
../../programs/mako.nix
|
||||
#../../programs/media/spotify-player.nix
|
||||
../../programs/media/spicetify.nix
|
||||
../../programs/themes.nix
|
||||
../../programs/opencomposite.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
|
||||
|
@ -26,46 +30,44 @@
|
|||
chromium
|
||||
vesktop
|
||||
technorino
|
||||
obsidian
|
||||
code-cursor
|
||||
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
|
||||
jetbrains.goland
|
||||
distrobox
|
||||
tidal-hifi
|
||||
neptune
|
||||
inputs.zen.packages.${pkgs.system}.default
|
||||
inputs.nix-gaming.packages.${pkgs.system}.osu-lazer-bin
|
||||
# inputs.hyprsunset.packages.${pkgs.system}.default
|
||||
(callPackage ../../../pkgs/passgen {})
|
||||
(callPackage ../../../pkgs/forex {})
|
||||
(callPackage ../../../pkgs/cpm {})
|
||||
inputs.manga-tui.packages.${pkgs.system}.manga-tui
|
||||
inputs.prismlauncher.packages.${pkgs.system}.prismlauncher
|
||||
];
|
||||
|
||||
catppuccin = {
|
||||
enable = true;
|
||||
flavor = "mocha";
|
||||
accent = "pink";
|
||||
};
|
||||
programs.ssh = {
|
||||
enable = true;
|
||||
extraConfig = ''
|
||||
|
@ -101,10 +103,6 @@
|
|||
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
|
||||
|
|
|
@ -1,53 +0,0 @@
|
|||
{
|
||||
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 = true;
|
||||
enable = false;
|
||||
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" = ["firefox.desktop"];
|
||||
"x-scheme-handler/https" = ["firefox.desktop"];
|
||||
"x-scheme-handler/chrome" = ["firefox.desktop"];
|
||||
"x-scheme-handler/http" = ["zen.desktop"];
|
||||
"x-scheme-handler/https" = ["zen.desktop"];
|
||||
"x-scheme-handler/chrome" = ["zen.desktop"];
|
||||
"text/html" = ["firefox.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"];
|
||||
"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"];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -10,7 +10,6 @@ _: {
|
|||
enable = true;
|
||||
defaultEditor = true;
|
||||
settings = {
|
||||
theme = "onedark";
|
||||
editor = {
|
||||
auto-save = true;
|
||||
true-color = true;
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
{
|
||||
pkgs,
|
||||
lib,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
home.packages = [(pkgs.callPackage ../../../../pkgs/scls {})];
|
||||
home.packages = [inputs.scls.defaultPackage.${pkgs.system}];
|
||||
programs.helix.languages = {
|
||||
language = with pkgs; [
|
||||
{
|
||||
|
|
29
home/programs/editors/zed/default.nix
Normal file
29
home/programs/editors/zed/default.nix
Normal file
|
@ -0,0 +1,29 @@
|
|||
{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"
|
||||
];
|
||||
};
|
||||
}
|
15
home/programs/editors/zed/userkeymap.nix
Normal file
15
home/programs/editors/zed/userkeymap.nix
Normal file
|
@ -0,0 +1,15 @@
|
|||
_: {
|
||||
programs.zed-editor.userKeymaps = [
|
||||
{
|
||||
context = "Workspace";
|
||||
bindings = {
|
||||
ctrl-shift-t = "workspace::NewTerminal";
|
||||
};
|
||||
}
|
||||
{
|
||||
context = "Editor";
|
||||
bindings = {
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
58
home/programs/editors/zed/usersettings.nix
Normal file
58
home/programs/editors/zed/usersettings.nix
Normal file
|
@ -0,0 +1,58 @@
|
|||
_: {
|
||||
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"];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
* {
|
||||
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;
|
||||
}
|
|
@ -1,49 +0,0 @@
|
|||
(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))
|
|
@ -1,21 +0,0 @@
|
|||
#!/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
|
|
@ -1,24 +0,0 @@
|
|||
/* 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;
|
|
@ -1,64 +0,0 @@
|
|||
@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;
|
||||
}
|
|
@ -1,23 +0,0 @@
|
|||
@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;
|
||||
}
|
|
@ -1,92 +0,0 @@
|
|||
@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;
|
||||
}
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
@import "./mixins.scss";
|
||||
@import "./colors.scss";
|
||||
|
||||
.sysinfo-cpu {
|
||||
@include sysinfo;
|
||||
color: $red;
|
||||
margin: 0.1rem;
|
||||
}
|
||||
|
||||
.sysinfo-mem {
|
||||
@include sysinfo;
|
||||
color: $green;
|
||||
margin: 0.1rem;
|
||||
}
|
|
@ -1,27 +0,0 @@
|
|||
@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();
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
(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 ',' ' '")
|
|
@ -1,7 +0,0 @@
|
|||
(defwidget container []
|
||||
(box
|
||||
:class "container"
|
||||
:orientation "h"
|
||||
(children)
|
||||
)
|
||||
)
|
|
@ -1,9 +0,0 @@
|
|||
(defpoll time :interval "60s"
|
||||
:initial "initial-value"
|
||||
`date +%H:%M`)
|
||||
|
||||
(defwidget time []
|
||||
(box
|
||||
:class "time"
|
||||
(label
|
||||
:text time)))
|
|
@ -1,6 +0,0 @@
|
|||
(defwidget logo []
|
||||
(box
|
||||
:class "logo"
|
||||
(image :path "/home/notoh/Pictures/icons/nixos.png"
|
||||
:image-width 24
|
||||
:image-height 24)))
|
|
@ -1,71 +0,0 @@
|
|||
(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))
|
|
@ -1,55 +0,0 @@
|
|||
(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))
|
|
@ -1,21 +0,0 @@
|
|||
(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 ""))))
|
|
@ -1,5 +0,0 @@
|
|||
(defwidget time []
|
||||
(box
|
||||
:class "time"
|
||||
(label
|
||||
:text time)))
|
|
@ -1,16 +0,0 @@
|
|||
(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 "" " ")))
|
|
@ -1,13 +0,0 @@
|
|||
{pkgs, ...}: {
|
||||
home.packages = with pkgs; [
|
||||
eww
|
||||
playerctl
|
||||
imagemagick
|
||||
];
|
||||
|
||||
programs.eww = {
|
||||
enable = true;
|
||||
package = pkgs.eww;
|
||||
configDir = ./config;
|
||||
};
|
||||
}
|
|
@ -15,6 +15,7 @@ _: {
|
|||
enable = true;
|
||||
gitCredentialHelper.enable = true;
|
||||
settings = {
|
||||
git_protocol = "ssh";
|
||||
editor = "hx";
|
||||
prompt = "enabled";
|
||||
};
|
||||
|
|
|
@ -1,27 +0,0 @@
|
|||
{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;
|
||||
};
|
||||
};
|
||||
}
|
49
home/programs/hyprpanel/default.nix
Normal file
49
home/programs/hyprpanel/default.nix
Normal file
|
@ -0,0 +1,49 @@
|
|||
{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 = [];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
76
home/programs/hyprpanel/settings.nix
Normal file
76
home/programs/hyprpanel/settings.nix
Normal file
|
@ -0,0 +1,76 @@
|
|||
{
|
||||
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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
_: {
|
||||
services.mako = {
|
||||
enable = true;
|
||||
icons = true;
|
||||
maxIconSize = 64;
|
||||
maxVisible = 3;
|
||||
defaultTimeout = 5000;
|
||||
ignoreTimeout = true;
|
||||
anchor = "top-right";
|
||||
output = "DP-1";
|
||||
};
|
||||
}
|
|
@ -9,12 +9,6 @@ _: {
|
|||
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;
|
||||
|
|
116
home/programs/media/jellyfin-mpv-shim.nix
Normal file
116
home/programs/media/jellyfin-mpv-shim.nix
Normal file
|
@ -0,0 +1,116 @@
|
|||
{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
|
||||
}
|
||||
'';
|
||||
}
|
25
home/programs/media/mpv.nix
Normal file
25
home/programs/media/mpv.nix
Normal file
|
@ -0,0 +1,25 @@
|
|||
{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;
|
||||
};
|
||||
};
|
||||
}
|
20
home/programs/media/spicetify.nix
Normal file
20
home/programs/media/spicetify.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
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;
|
||||
};
|
||||
}
|
|
@ -1,74 +0,0 @@
|
|||
{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"] }
|
||||
'';
|
||||
};
|
||||
}
|
27
home/programs/opencomposite.nix
Normal file
27
home/programs/opencomposite.nix
Normal file
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
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,6 +1,11 @@
|
|||
_: {
|
||||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.atuin = {
|
||||
enable = true;
|
||||
package = inputs.atuin.packages.${pkgs.system}.default;
|
||||
enableNushellIntegration = true;
|
||||
settings = {
|
||||
auto_sync = true;
|
||||
|
|
|
@ -2,7 +2,6 @@ _: {
|
|||
programs.bat = {
|
||||
enable = true;
|
||||
config = {
|
||||
theme = "base16-stylix";
|
||||
pager = "--RAW-CONTROL-CHARS --quit-if-one-screen --mouse";
|
||||
style = "plain";
|
||||
};
|
||||
|
|
|
@ -18,15 +18,7 @@ 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
|
||||
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 deploy = nix run github:serokell/deploy-rs -- --skip-checks --targets
|
||||
alias dl = yt-dlp -P ~/Videos/downloaded
|
||||
alias dlad = yt-dlp -x --audio-format mp3 --embed-thumbnail
|
||||
alias dlcd = yt-dlp
|
||||
|
@ -35,67 +27,63 @@ 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 tail = tspin
|
||||
alias spotify = spotify_player
|
||||
alias atac = atac --directory ~/.config/atac/
|
||||
alias ts = tspin
|
||||
alias generate-topology = nix build ".#topology.x86_64-linux.config.output"
|
||||
|
||||
nitch
|
||||
|
||||
$env.config = {
|
||||
|
||||
ls: {
|
||||
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.
|
||||
use_ls_colors: true
|
||||
clickable_links: true
|
||||
}
|
||||
rm: {
|
||||
always_trash: false # always act as if -t was given. Can be overridden with -p
|
||||
always_trash: false
|
||||
}
|
||||
table: {
|
||||
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
|
||||
mode: rounded
|
||||
index_mode: always
|
||||
trim: {
|
||||
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
|
||||
methodology: wrapping
|
||||
wrapping_try_keep_words: true
|
||||
truncating_suffix: "..."
|
||||
}
|
||||
}
|
||||
history: {
|
||||
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"
|
||||
max_size: 10000
|
||||
sync_on_enter: true
|
||||
file_format: "sqlite"
|
||||
}
|
||||
completions: {
|
||||
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
|
||||
case_sensitive: false
|
||||
quick: true
|
||||
partial: true
|
||||
algorithm: "prefix"
|
||||
external: {
|
||||
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
|
||||
enable: true
|
||||
max_results: 100
|
||||
completer: null
|
||||
}
|
||||
}
|
||||
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
|
||||
footer_mode: "auto"
|
||||
float_precision: 2
|
||||
# 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
|
||||
buffer_editor: "hx"
|
||||
use_ansi_coloring: true
|
||||
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.
|
||||
edit_mode: vi
|
||||
shell_integration: {}
|
||||
show_banner: false
|
||||
render_right_prompt_on_last_line: false
|
||||
hooks: {
|
||||
pre_prompt: [{ ||
|
||||
null # replace with source code to run before the prompt is shown
|
||||
null
|
||||
}]
|
||||
pre_execution: [{ ||
|
||||
null # replace with source code to run before the repl input is run
|
||||
null
|
||||
}]
|
||||
env_change: {
|
||||
PWD: [{|before, after|
|
||||
null # replace with source code to run if the PWD environment is different since the last repl input
|
||||
null
|
||||
}]
|
||||
}
|
||||
display_output: { ||
|
||||
|
@ -104,8 +92,6 @@ $env.config = {
|
|||
}
|
||||
|
||||
menus: [
|
||||
# Configuration for default nushell menus
|
||||
# Note the lack of souce parameter
|
||||
{
|
||||
name: completion_menu
|
||||
only_buffer_difference: false
|
||||
|
@ -113,7 +99,7 @@ $env.config = {
|
|||
type: {
|
||||
layout: columnar
|
||||
columns: 4
|
||||
col_width: 20 # Optional value. If missing all the screen width is used to calculate column width
|
||||
col_width: 20
|
||||
col_padding: 2
|
||||
}
|
||||
style: {
|
||||
|
@ -143,7 +129,7 @@ $env.config = {
|
|||
type: {
|
||||
layout: description
|
||||
columns: 4
|
||||
col_width: 20 # Optional value. If missing all the screen width is used to calculate column width
|
||||
col_width: 20
|
||||
col_padding: 2
|
||||
selection_rows: 4
|
||||
description_rows: 10
|
||||
|
@ -154,9 +140,6 @@ $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
|
||||
|
@ -220,14 +203,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 # Options: emacs vi_normal vi_insert
|
||||
mode: vi_normal
|
||||
event: {
|
||||
until: [
|
||||
{ send: menu name: completion_menu }
|
||||
|
@ -239,7 +222,7 @@ $env.config = {
|
|||
name: completion_previous
|
||||
modifier: shift
|
||||
keycode: backtab
|
||||
mode: [emacs, vi_normal, vi_insert] # Note: You can add the same keybinding to all modes by using a list
|
||||
mode: [emacs, vi_normal, vi_insert]
|
||||
event: { send: menuprevious }
|
||||
}
|
||||
{
|
||||
|
@ -301,7 +284,6 @@ $env.config = {
|
|||
]
|
||||
}
|
||||
}
|
||||
# Keybindings used to trigger the user defined menus
|
||||
{
|
||||
name: commands_menu
|
||||
modifier: control
|
||||
|
@ -324,7 +306,7 @@ $env.config = {
|
|||
event: { send: menu name: commands_with_description }
|
||||
}
|
||||
|
||||
|
||||
|
||||
]
|
||||
|
||||
}
|
||||
|
|
|
@ -9,28 +9,8 @@
|
|||
enable = true;
|
||||
enableNushellIntegration = true;
|
||||
settings = {
|
||||
palette = "tokyonight";
|
||||
command_timeout = 2000;
|
||||
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"
|
||||
|
|
5
home/programs/terminal/television/config.json
Normal file
5
home/programs/terminal/television/config.json
Normal file
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"indexes": ["nixpkgs", "home-manager", "nur"],
|
||||
"update_interval": "12h",
|
||||
"enable_waiting_message": true
|
||||
}
|
212
home/programs/terminal/television/config.toml
Normal file
212
home/programs/terminal/television/config.toml
Normal file
|
@ -0,0 +1,212 @@
|
|||
# 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"
|
9
home/programs/terminal/television/default.nix
Normal file
9
home/programs/terminal/television/default.nix
Normal file
|
@ -0,0 +1,9 @@
|
|||
{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,9 +13,10 @@ local config = {
|
|||
enable_wayland = false,
|
||||
font = wezterm.font_with_fallback({ "JetBrainsMono NF Medium", "Comic Code Ligatures Medium" }),
|
||||
font_size = 12.0,
|
||||
window_background_opacity = 0.6,
|
||||
window_background_opacity = 1.0,
|
||||
text_background_opacity = 1.0,
|
||||
enable_tab_bar = false,
|
||||
max_fps = 144,
|
||||
window_padding = { top = 20, bottom = 20, left = 20, right = 20 },
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
config,
|
||||
inputs,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
# xdg.configFile."yazi/init.lua".source = ./init.lua;
|
||||
|
@ -8,7 +9,7 @@
|
|||
|
||||
programs.yazi = {
|
||||
enable = true;
|
||||
package = pkgs.yazi;
|
||||
package = inputs.yazi.packages.${pkgs.system}.default;
|
||||
enableNushellIntegration = true;
|
||||
settings = {
|
||||
manager = {
|
||||
|
|
|
@ -8,7 +8,6 @@ _: {
|
|||
settings = {
|
||||
on_force_close = "quit";
|
||||
simplified_ui = false;
|
||||
theme = "tokyo-night";
|
||||
default_layout = "default";
|
||||
copy_command = "wl-copy";
|
||||
copy_clipboard = "primary";
|
||||
|
|
49
home/programs/themes.nix
Normal file
49
home/programs/themes.nix
Normal file
|
@ -0,0 +1,49 @@
|
|||
{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 ./gammastep.nix];
|
||||
imports = [./gpg.nix];
|
||||
}
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
_: {
|
||||
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,12 +1,9 @@
|
|||
{pkgs, ...}: {
|
||||
imports = [./services/greetd.nix];
|
||||
imports = [./services/ly.nix];
|
||||
environment = {
|
||||
systemPackages = with pkgs; [
|
||||
wayland
|
||||
glib
|
||||
grim
|
||||
slurp
|
||||
satty
|
||||
wl-clipboard
|
||||
];
|
||||
sessionVariables = {
|
||||
|
@ -25,15 +22,13 @@
|
|||
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,5 +1,10 @@
|
|||
_: {
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
wayland.windowManager.hyprland.settings = with pkgs; {
|
||||
"$mainMod" = "SUPER";
|
||||
bind = [
|
||||
"$mainMod, Return, exec, wezterm"
|
||||
|
@ -9,12 +14,12 @@ _: {
|
|||
"$mainMod, R, exec, anyrun"
|
||||
"$mainMod, P, pseudo,"
|
||||
"$mainMod, J, togglesplit,"
|
||||
"$mainMod, C, exec, hyprpicker | wl-copy"
|
||||
"$mainMod, C, exec, ${lib.getExe inputs.hyprpicker.packages.${system}.default} | 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 = [
|
||||
"eww open bar"
|
||||
"hyprpanel"
|
||||
"hyprpaper"
|
||||
"chatterino"
|
||||
"vesktop"
|
||||
|
@ -23,7 +23,7 @@
|
|||
};
|
||||
general = {
|
||||
gaps_in = 10;
|
||||
gaps_out = 20;
|
||||
gaps_out = 15;
|
||||
border_size = 0;
|
||||
"col.active_border" = "rgb(7dcfff) rgb(c0caf5)";
|
||||
"col.inactive_border" = "rgb(24283b)";
|
||||
|
@ -91,9 +91,10 @@
|
|||
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,6 +9,7 @@ _: {
|
|||
"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,5 +10,7 @@
|
|||
enable = true;
|
||||
systemd.enable = true;
|
||||
xwayland.enable = true;
|
||||
package = null;
|
||||
portalPackage = null;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,10 +1,15 @@
|
|||
_: {
|
||||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.hyprlock = {
|
||||
enable = true;
|
||||
package = inputs.hyprlock.packages.${pkgs.system}.default;
|
||||
settings = {
|
||||
background = let
|
||||
verticalWallpaper = "/home/notoh/Pictures/wallpapers/sparkle.png";
|
||||
horizontalWallpaper = "/home/notoh/Pictures/wallpapers/sparkle2.png";
|
||||
verticalWallpaper = "/home/notoh/dev/assets/wallpapers/miku/miku2.png";
|
||||
horizontalWallpaper = "/home/notoh/dev/assets/wallpapers/miku/miku.png";
|
||||
in [
|
||||
{
|
||||
monitor = "HDMI-A-1";
|
||||
|
@ -40,13 +45,17 @@ _: {
|
|||
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(f7768e)";
|
||||
outer_color = "rgb(f5c2e7)";
|
||||
inner_color = "rgb(1a1b26)";
|
||||
font_color = "rgb(c0caf5)";
|
||||
fail_color = "rgb(f7768e)";
|
||||
|
@ -69,7 +78,7 @@ _: {
|
|||
{
|
||||
monitor = "DP-1";
|
||||
text = ''
|
||||
Hi, <i><span foreground="##f7768e">$USER</span></i>
|
||||
Hi, <i><span foreground="##74c7ec">$USER</span></i>
|
||||
'';
|
||||
color = "rgb(c0caf5)";
|
||||
position = "0, 60";
|
||||
|
|
|
@ -1,79 +0,0 @@
|
|||
{
|
||||
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,10 +2,12 @@
|
|||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
services.hypridle = {
|
||||
enable = true;
|
||||
package = inputs.hypridle.packages.${pkgs.system}.default;
|
||||
settings = {
|
||||
general = {
|
||||
ignore_dbus_inhibit = false;
|
||||
|
@ -18,8 +20,8 @@
|
|||
on-timeout = "${lib.getExe config.programs.hyprlock.package}";
|
||||
}
|
||||
{
|
||||
timeout = 460;
|
||||
on-timeout = "hyprctl dispatch dpms off";
|
||||
timeout = 450;
|
||||
on-timeout = "${inputs.hyprland.packages.${pkgs.system}.hyprland}/bin/hyprctl dispatch dpms off";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
|
|
@ -1,20 +1,28 @@
|
|||
{pkgs, ...}: {
|
||||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
home.packages = [pkgs.hyprpaper];
|
||||
|
||||
services.hyprpaper = {
|
||||
services.hyprpaper = let
|
||||
verticalWallpaper = "~/dev/assets/wallpapers/miku/miku2.png";
|
||||
horizontalWallpaper = "~/dev/assets/wallpapers/miku/miku.png";
|
||||
in {
|
||||
enable = true;
|
||||
package = inputs.hyprpaper.packages.${pkgs.system}.default;
|
||||
settings = {
|
||||
ipc = true;
|
||||
splash = false;
|
||||
preload = [
|
||||
"~/Pictures/wallpapers/sparkle3.png"
|
||||
"~/Pictures/wallpapers/sparkle4.png"
|
||||
verticalWallpaper
|
||||
horizontalWallpaper
|
||||
];
|
||||
wallpaper = [
|
||||
"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"
|
||||
"HDMI-A-1,${verticalWallpaper}"
|
||||
"DP-1,${horizontalWallpaper}"
|
||||
"DP-2,${horizontalWallpaper}"
|
||||
"DP-3,${verticalWallpaper}"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
|
33
home/wayland/services/ly.nix
Normal file
33
home/wayland/services/ly.nix
Normal file
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
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,14 +3,15 @@ _: {
|
|||
./hardware.nix
|
||||
./services
|
||||
./networking.nix
|
||||
../common.nix
|
||||
../../modules
|
||||
../../modules/fonts.nix
|
||||
./topology.nix
|
||||
../common
|
||||
../common/fonts.nix
|
||||
];
|
||||
|
||||
programs.hyprland.enable = true;
|
||||
|
||||
services = {
|
||||
pulseaudio.enable = false;
|
||||
displayManager.sddm.enable = true;
|
||||
pipewire = {
|
||||
enable = true;
|
||||
|
@ -26,7 +27,5 @@ _: {
|
|||
};
|
||||
};
|
||||
};
|
||||
|
||||
hardware.pulseaudio.enable = false;
|
||||
security.rtkit.enable = true;
|
||||
}
|
||||
|
|
20
hosts/ame/topology.nix
Normal file
20
hosts/ame/topology.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
_: {
|
||||
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
|
||||
../common.nix
|
||||
../../modules
|
||||
./topology.nix
|
||||
../common
|
||||
];
|
||||
|
||||
users = {
|
||||
|
|
|
@ -9,7 +9,7 @@ _: {
|
|||
environment.etc = {
|
||||
"resolv.conf".text = ''
|
||||
nameserver 192.168.1.103
|
||||
nameserver 9.9.9.9
|
||||
nameserver 1.1.1.1
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
|
@ -56,6 +56,14 @@
|
|||
name = "ec";
|
||||
ensureDBOwnership = true;
|
||||
}
|
||||
{
|
||||
name = "botoh";
|
||||
ensureDBOwnership = true;
|
||||
}
|
||||
{
|
||||
name = "ganymede";
|
||||
ensureDBOwnership = true;
|
||||
}
|
||||
];
|
||||
ensureDatabases = [
|
||||
"forgejo"
|
||||
|
@ -67,6 +75,8 @@
|
|||
"miniflux"
|
||||
"atuin"
|
||||
"ec"
|
||||
"botoh"
|
||||
"ganymede"
|
||||
];
|
||||
};
|
||||
services.postgresqlBackup = {
|
||||
|
@ -80,6 +90,8 @@
|
|||
"attic"
|
||||
"miniflux"
|
||||
"atuin"
|
||||
"botoh"
|
||||
"ganymede"
|
||||
];
|
||||
compression = "zstd";
|
||||
compressionLevel = 4;
|
||||
|
|
20
hosts/arashi/topology.nix
Normal file
20
hosts/arashi/topology.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
_: {
|
||||
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";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
{inputs, ...}: {
|
||||
imports = [
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
inputs.nur.modules.nixos.default
|
||||
# inputs.attic.nixosModules.atticd
|
||||
];
|
||||
}
|
18
hosts/common/default.nix
Normal file
18
hosts/common/default.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
{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
|
||||
];
|
||||
}
|
|
@ -1,27 +1,22 @@
|
|||
{inputs, ...}: {
|
||||
{
|
||||
inputs,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
sops.secrets.github-token = {};
|
||||
nixpkgs = {
|
||||
overlays = [
|
||||
inputs.self.overlays.technorino
|
||||
inputs.nur.overlays.default
|
||||
inputs.helix.overlays.default
|
||||
inputs.yazi.overlays.default
|
||||
inputs.hypridle.overlays.default
|
||||
inputs.hyprlock.overlays.default
|
||||
inputs.hyprpaper.overlays.default
|
||||
inputs.hyprpicker.overlays.default
|
||||
inputs.atuin.overlays.default
|
||||
inputs.eww.overlays.default
|
||||
inputs.neptune.overlays.default
|
||||
inputs.hyprpanel.overlay
|
||||
];
|
||||
config = {
|
||||
allowUnfree = true;
|
||||
permittedInsecurePackages = [
|
||||
"dotnet-runtime-6.0.36"
|
||||
"dotnet-sdk-wrapped-6.0.428"
|
||||
# for sonarr
|
||||
"dotnet-sdk-6.0.428"
|
||||
"aspnetcore-runtime-wrapped-6.0.36"
|
||||
"aspnetcore-runtime-6.0.36"
|
||||
"cinny-4.2.3"
|
||||
"cinny-unwrapped-4.2.3"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
@ -46,7 +41,7 @@
|
|||
"https://anyrun.cachix.org"
|
||||
"https://viperml.cachix.org"
|
||||
"https://nix-community.cachix.org"
|
||||
"https://attic.kennel.juneis.dog/conduwuit"
|
||||
"https://prismlauncher.cachix.org"
|
||||
];
|
||||
trusted-public-keys = [
|
||||
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
||||
|
@ -56,9 +51,12 @@
|
|||
"anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s="
|
||||
"viperml.cachix.org-1:qZhKBMTfmcLL+OG6fj/hzsMEedgKvZVFRRAhq7j8Vh8="
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||
"conduwuit:BbycGUgTISsltcmH0qNjFR9dbrQNYgdIAcmViSGoVTE="
|
||||
"prismlauncher.cachix.org-1:9/n/FGyABA2jLUVfY+DEp4hKds/rwO+SCOtbOkDzd+c="
|
||||
];
|
||||
};
|
||||
extraOptions = ''
|
||||
!include ${config.sops.secrets.github-token.path}
|
||||
'';
|
||||
};
|
||||
|
||||
programs.nh = {
|
|
@ -1,6 +1,6 @@
|
|||
_: {
|
||||
sops = {
|
||||
defaultSopsFile = ../secrets/secrets.yaml;
|
||||
defaultSopsFile = ../../secrets/secrets.yaml;
|
||||
age.keyFile = "/home/notoh/.config/sops/age/keys.txt";
|
||||
};
|
||||
}
|
|
@ -151,21 +151,5 @@
|
|||
}
|
||||
];
|
||||
};
|
||||
kaze = nixosSystem {
|
||||
inherit specialArgs;
|
||||
modules = [
|
||||
./kaze
|
||||
{
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
extraSpecialArgs = specialArgs;
|
||||
users.notoh = {
|
||||
imports = homeImports."default";
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -71,16 +71,6 @@
|
|||
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
|
||||
../common.nix
|
||||
../../modules
|
||||
./topology.nix
|
||||
../common
|
||||
];
|
||||
|
||||
users = {
|
||||
|
|
|
@ -9,7 +9,7 @@ _: {
|
|||
environment.etc = {
|
||||
"resolv.conf".text = ''
|
||||
nameserver 192.168.1.103
|
||||
nameserver 9.9.9.9
|
||||
nameserver 1.1.1.1
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
|
@ -51,6 +51,10 @@
|
|||
"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"
|
||||
|
@ -86,6 +90,7 @@
|
|||
*.clickhouse.com
|
||||
*.discord.com
|
||||
*.last.fm
|
||||
*.spotify.com
|
||||
'';
|
||||
in {
|
||||
ads = [
|
||||
|
@ -108,6 +113,7 @@
|
|||
customTTL = "1h";
|
||||
mapping = let
|
||||
yukiIp = "192.168.1.98";
|
||||
kariruIp = "192.168.1.54";
|
||||
in {
|
||||
# infra
|
||||
|
||||
|
@ -124,20 +130,19 @@
|
|||
"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}";
|
||||
"nextcloud.internal.flake.sh" = "192.168.1.199";
|
||||
"immich.internal.flake.sh" = "${yukiIp}";
|
||||
"komga.internal.flake.sh" = "${yukiIp}";
|
||||
"shoko.internal.flake.sh" = "${kariruIp}";
|
||||
|
||||
# misc
|
||||
|
||||
"wallos.internal.flake.sh" = "${yukiIp}";
|
||||
"synology.internal.flake.sh" = "192.168.1.71";
|
||||
"paperless.internal.flake.sh" = "${yukiIp}";
|
||||
"rss.internal.flake.sh" = "${yukiIp}";
|
||||
"hoarder.internal.flake.sh" = "${yukiIp}";
|
||||
"ganymede.internal.flake.sh" = "100.121.201.47";
|
||||
};
|
||||
};
|
||||
redis = {
|
||||
|
|
20
hosts/haru/topology.nix
Normal file
20
hosts/haru/topology.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
_: {
|
||||
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
|
||||
../common.nix
|
||||
../../modules
|
||||
./topology.nix
|
||||
../common
|
||||
];
|
||||
|
||||
users = {
|
||||
|
|
|
@ -9,7 +9,7 @@ _: {
|
|||
environment.etc = {
|
||||
"resolv.conf".text = ''
|
||||
nameserver 192.168.1.103
|
||||
nameserver 9.9.9.9
|
||||
nameserver 1.1.1.1
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
{pkgs, ...}: {
|
||||
networking.firewall.allowedTCPPorts = [9292];
|
||||
networking.firewall.allowedTCPPorts = [9292 8111];
|
||||
|
||||
imports = [
|
||||
./restic.nix
|
||||
./torrent.nix
|
||||
./syncthing.nix
|
||||
];
|
||||
|
||||
environment.systemPackages = [pkgs.recyclarr];
|
||||
|
@ -20,35 +21,27 @@
|
|||
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 = {
|
||||
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"
|
||||
];
|
||||
byparr = {
|
||||
image = "ghcr.io/thephaseless/byparr@sha256:9f83a6f5e5cec22a70abf3401a23164295a4b2e1ced37264907c3512981e527a"; # v3.3.21
|
||||
ports = ["8191:8191"];
|
||||
extraOptions = ["--network=host"];
|
||||
};
|
||||
flaresolverr = {
|
||||
image = "ghcr.io/flaresolverr/flaresolverr@sha256:5f5661db1e69a6f80ac24d47d9fa5580f6f741ee5ec967818396ae0dacecd7ea"; # v3.3.17
|
||||
ports = ["8191:8191"];
|
||||
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"
|
||||
];
|
||||
extraOptions = ["--network=host"];
|
||||
};
|
||||
};
|
||||
|
|
12
hosts/kariru/services/syncthing.nix
Normal file
12
hosts/kariru/services/syncthing.nix
Normal file
|
@ -0,0 +1,12 @@
|
|||
_: {
|
||||
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:5522794f5cce6d84bc7f06b1e3a3b836ede9100c64aec94543cb503bb2ecb72f"; #v3.38
|
||||
image = "qmcgaw/gluetun@sha256:2b42bfa046757145a5155acece417b65b4443c8033fb88661a8e9dcf7fda5a00"; #v3.40
|
||||
hostname = "gluetun";
|
||||
ports = [
|
||||
"8000:8000/tcp" # HTTP control server
|
||||
|
@ -13,11 +13,12 @@
|
|||
"6881:6881" #qb
|
||||
"6881:6881/udp" #qb
|
||||
];
|
||||
volumes = ["/srv/gluetun:/tmp/gluetun"];
|
||||
environmentFiles = [config.sops.secrets.gluetun.path];
|
||||
extraOptions = ["--cap-add=NET_ADMIN"];
|
||||
extraOptions = ["--cap-add=NET_ADMIN" "--device=/dev/net/tun:/dev/net/tun"];
|
||||
};
|
||||
qbittorrent = {
|
||||
image = "linuxserver/qbittorrent@sha256:d01b1df556154862eca982d0f2c420073e2e2959c309951fbfddd25525ea28ce"; # v5.0.0
|
||||
image = "linuxserver/qbittorrent@sha256:50f490770308d0351e12618422e74e0613721b080f5db0bf840cf66a7281eea8"; # v5.0.4
|
||||
dependsOn = ["gluetun"];
|
||||
environment = {
|
||||
PUID = "1001";
|
||||
|
|
20
hosts/kariru/topology.nix
Normal file
20
hosts/kariru/topology.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
_: {
|
||||
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";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{...}: {
|
||||
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"
|
||||
];
|
||||
};
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue