refactor: complete rewrite

This commit is contained in:
ooks-io 2024-10-23 23:46:25 +13:00
parent 19a4bbda3c
commit 8e81943cf9
399 changed files with 3396 additions and 8042 deletions

View file

@ -1,4 +0,0 @@
## written by a literal ape
_ooknet_ is where all my ooks* hosts are configured and built. always a work in
progress, will write a proper readme one day...

1586
flake.lock generated

File diff suppressed because it is too large Load diff

129
flake.nix
View file

@ -1,102 +1,79 @@
{
# ooknet
description = "a nix configuration written by an orangutan";
description = "Description for the project";
outputs = {flake-parts, ...} @ inputs:
flake-parts.lib.mkFlake {inherit inputs;} {
systems = import inputs.systems;
imports = [./outputs];
systems = import inputs.systems;
};
# External inputs we depend on
inputs = {
# unstable because why not
nixpkgs.url = "github:Nixos/nixpkgs/nixos-unstable";
nixpkgs-small.url = "github:Nixos/nixpkgs/nixos-unstable-small";
# contains more up-to-date wayland related packages. no need enabling atm
# nixpkgs-wayland.url = "github:nix-community/nixpkgs-wayland";
# default system see <https://github.com/nix-systems/nix-systems>
systems.url = "github:nix-systems/default-linux";
# split your flake into... parts?
flake-parts = {
url = "github:hercules-ci/flake-parts";
inputs.nixpkgs-lib.follows = "nixpkgs";
};
# dotfile configuration
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-parts.url = "github:hercules-ci/flake-parts";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
agenix.url = "github:ryantm/agenix";
nix-index-db = {
url = "github:nix-community/nix-index-database";
inputs.nixpkgs.follows = "nixpkgs";
};
zjstatus.url = "github:dj95/zjstatus";
systems.url = "github:nix-systems/default-linux";
# nix shell environment on android
nix-on-droid = {
url = "github:nix-community/nix-on-droid/release-23.11";
inputs.nixpkgs.follows = "nixpkgs";
inputs.home-manager.follows = "home-manager";
};
# wrapper for nix rebuild
nh = {
url = "github:viperML/nh";
inputs.nixpkgs.follows = "nixpkgs";
};
# nix language server that berates me for my mistakes
nil = {
url = "github:oxalica/nil";
inputs.nixpkgs.follows = "nixpkgs-small";
};
# colorschemes library
nix-colors.url = "github:misterio77/nix-colors";
# secret management
agenix.url = "github:ryantm/agenix";
# hyprland "ecosystem". hyprDE perhaps?
hyprland = {
url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
};
hyprlock.url = "github:hyprwm/hyprlock";
hypridle.url = "github:hyprwm/hypridle";
hyprpaper.url = "github:hyprwm/hyprpaper";
hyprland-contrib.url = "github:hyprwm/contrib";
xdg-portal-hyprland.url = "github:hyprwm/xdg-desktop-portal-hyprland";
# hyprland-plugins = {
# url = "github:hyprwm/hyprland-plugins";
# inputs.hyprland.follows = "hyprland";
# };
# helix because noun -> verb helps scratches my ape brain in the right spot
helix = {
url = "github:helix-editor/helix";
inputs.nixpkgs.follows = "nixpkgs-small";
};
# neovim configured with nix
ooks-vim.url = "git+ssh://git@github.com/ooks-io/ooks-vim";
# packaged firefox addons
firefox-addons = {
url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
inputs.nixpkgs.follows = "nixpkgs";
};
ooks-scripts = {
url = "git+ssh://git@github.com/ooks-io/scripts";
inputs.nixpkgs.follows = "nixpkgs";
};
# zellij status bar
zjstatus.url = "github:dj95/zjstatus";
nvf.url = "github:notashelf/nvf/v0.7";
# media server module for hosting my legally purchased linux isos
nixarr.url = "github:rasmus-kirk/nixarr";
# hypr* ecosystem
hyprland.url = "github:hyprwm/hyprland";
# personal scripts repo
ooks-scripts.url = "git+ssh://git@github.com/ooks-io/scripts";
hypridle = {
url = "github:hyprwm/hypridle";
inputs = {
hyprlang.follows = "hyprland/hyprlang";
hyprutils.follows = "hyprland/hyprutils";
nixpkgs.follows = "hyprland/nixpkgs";
systems.follows = "hyprland/systems";
};
};
hyprland-contrib = {
url = "github:hyprwm/contrib";
inputs.nixpkgs.follows = "hyprland/nixpkgs";
};
hyprland-plugins = {
url = "github:hyprwm/hyprland-plugins";
inputs.hyprland.follows = "hyprland";
};
hyprlock = {
url = "github:hyprwm/hyprlock";
inputs = {
hyprlang.follows = "hyprland/hyprlang";
hyprutils.follows = "hyprland/hyprutils";
nixpkgs.follows = "hyprland/nixpkgs";
systems.follows = "hyprland/systems";
};
};
hyprpaper = {
url = "github:hyprwm/hyprpaper";
inputs = {
hyprlang.follows = "hyprland/hyprlang";
hyprutils.follows = "hyprland/hyprutils";
nixpkgs.follows = "hyprland/nixpkgs";
systems.follows = "hyprland/systems";
};
};
};
}

View file

@ -1,26 +0,0 @@
{
config,
lib,
pkgs,
...
}: let
inherit (lib) mkIf;
cfg = config.ooknet.qt;
in {
config = mkIf cfg.enable {
qt = {
enable = true;
style.name = "gtk2";
platformTheme.name = "gtk2";
};
home.packages = with pkgs; [
libsForQt5.qt5.qtwayland
kdePackages.qtwayland
qt6.qtwayland
kdePackages.qqc2-desktop-style
libsForQt5.qtstyleplugins
qt6Packages.qt6gtk2
];
};
}

View file

@ -1,6 +0,0 @@
{pkgs, ...}: {
home.packages = [pkgs.xdg-utils];
xdg.mimeApps = {
enable = true;
};
}

View file

@ -1,8 +0,0 @@
{
imports = [
./editor # Still need to implement nvim
./multiplexer # Still need to implement tmux and screen
./shell
./tools
];
}

View file

@ -1,72 +0,0 @@
{
inputs,
config,
osConfig,
pkgs,
lib,
...
}: let
inherit (osConfig.ooknet.appearance) colorscheme;
inherit (config.ooknet) console;
inherit (lib) mkIf;
cfg = config.ooknet.editor.helix;
in {
imports = [
./languages.nix
];
config = mkIf (cfg.enable || console.editor == "helix") {
programs.helix = {
enable = true;
defaultEditor = mkIf (console.editor == "helix") true;
package = inputs.helix.packages.${pkgs.system}.default.overrideAttrs (old: {
makeWrapperArgs = with pkgs;
old.makeWrapperArgs
or []
++ [
"--suffix"
"PATH"
":"
(lib.makeBinPath [
clang-tools
marksman
nil
nodePackages.bash-language-server
nodePackages.vscode-langservers-extracted
shellcheck
])
];
});
settings = {
theme = "base16_transparent";
editor = {
color-modes = true;
middle-click-paste = false;
line-number = "relative";
indent-guides.render = true;
true-color = true;
cursorline = true;
cursor-shape = {
normal = "block";
insert = "bar";
select = "underline";
};
statusline = {
left = ["mode" "spinner"];
center = ["file-name"];
right = ["diagnostics" "selections" "position" "file-encoding" "file-line-ending" "file-type"];
};
lsp = {
display-messages = true;
display-inlay-hints = true;
};
};
keys.normal.space.u = {
f = ":format";
w = ":set whitespace.render all";
W = ":set whitespace.render none";
};
};
};
};
}

View file

@ -1,135 +0,0 @@
{
pkgs,
lib,
config,
...
}: let
inherit (lib) mkIf getExe;
cfg = config.ooknet.editor.helix;
inherit (config.ooknet) console;
in {
config = mkIf (cfg.enable || console.editor == "helix") {
programs.helix.languages = {
language = let
deno = lang: {
command = "${pkgs.deno}/bin/deno";
args = ["fmt" "-" "--ext" lang];
};
prettier = lang: {
command = "${pkgs.nodePackages.prettier}/bin/prettier";
args = ["--parser" lang];
};
prettierLangs = map (e: {
name = e;
formatter = prettier e;
});
langs = ["css" "scss" "html"];
in
[
{
name = "bash";
auto-format = true;
formatter = {
command = "${pkgs.shfmt}/bin/shfmt";
args = ["-i" "2"];
};
}
{
name = "clojure";
injection-regex = "(clojure|clj|edn|boot|yuck)";
file-types = ["clj" "cljs" "cljc" "clje" "cljr" "cljx" "edn" "boot" "yuck"];
}
{
name = "javascript";
auto-format = true;
language-servers = ["dprint" "typescript-language-server"];
}
{
name = "json";
formatter = deno "json";
}
{
name = "markdown";
auto-format = true;
formatter = deno "md";
}
]
++ prettierLangs langs;
language-server = {
bash-language-server = {
command = "${pkgs.nodePackages.bash-language-server}/bin/bash-language-server";
args = ["start"];
};
clangd = {
command = "${pkgs.clang-tools}/bin/clangd";
clangd.fallbackFlags = ["-std=c++2b"];
};
deno-lsp = {
command = "${pkgs.deno}/bin/deno";
args = ["lsp"];
environment.NO_COLOR = "1";
config.deno = {
enable = true;
lint = true;
unstable = true;
suggest = {
completeFunctionCalls = false;
imports = {hosts."https://deno.land" = true;};
};
inlayHints = {
enumMemberValues.enabled = true;
functionLikeReturnTypes.enabled = true;
parameterNames.enabled = "all";
parameterTypes.enabled = true;
propertyDeclarationTypes.enabled = true;
variableTypes.enabled = true;
};
};
};
nil = {
command = getExe pkgs.nil;
config.nil.formatting.command = ["${getExe pkgs.alejandra}" "-q"];
};
dprint = {
command = getExe pkgs.dprint;
args = ["lsp"];
};
typescript-language-server = {
command = "${pkgs.nodePackages.typescript-language-server}/bin/typescript-language-server";
args = ["--stdio"];
config = let
inlayHints = {
includeInlayEnumMemberValueHints = true;
includeInlayFunctionLikeReturnTypeHints = true;
includeInlayFunctionParameterTypeHints = true;
includeInlayParameterNameHints = "all";
includeInlayParameterNameHintsWhenArgumentMatchesName = true;
includeInlayPropertyDeclarationTypeHints = true;
includeInlayVariableTypeHints = true;
};
in {
typescript-language-server.source = {
addMissingImports.ts = true;
fixAll.ts = true;
organizeImports.ts = true;
removeUnusedImports.ts = true;
sortImports.ts = true;
};
typescript = {inherit inlayHints;};
javascript = {inherit inlayHints;};
hostInfo = "helix";
};
};
};
};
};
}

View file

@ -1,7 +0,0 @@
{
imports = [
./zellij
#./screen
./tmux
];
}

View file

@ -1,66 +0,0 @@
{
config,
osConfig,
lib,
pkgs,
...
}: let
inherit (osConfig.ooknet.appearance.colorscheme) palette;
inherit (config.ooknet) console;
inherit (lib) mkIf;
cfg = config.ooknet.multiplexer.tmux;
in {
config = mkIf (cfg.enable || console.multiplexer == "tmux") {
programs.tmux = {
enable = true;
shell = "${pkgs.fish}/bin/fish";
prefix = "C-space";
baseIndex = 1;
keyMode = "vi";
escapeTime = 0;
mouse = true;
plugins = with pkgs; [
{
plugin = tmuxPlugins.mode-indicator;
}
];
extraConfig =
/*
sh
*/
''
# General Settings
set -g set-clipboard on
#Appearance
set -g status-position top
set -g status-style "fg=#${palette.base05} bg=#${palette.base00}"
#Windows
set -g status-justify "centre"
setw -g window-status-current-format "#[bg=#${palette.base0B},fg=#${palette.base00},bold] #W "
setw -g window-status-format "#[bg=#${palette.base03},fg=#${palette.base05}] #W "
#Left
set -g status-left " #{tmux_mode_indicator} #[bg=#${palette.base0B},fg=#${palette.base00}] #S"
set -g status-right '%Y-%m-%d %H:%M #{tmux_mode_indicator}'
#Move to Pane
bind -n M-Left select-pane -L
bind -n M-h select-pane -L
bind -n M-Right select-pane -R
bind -n M-l select-pane -R
bind -n M-Up select-pane -U
bind -n M-k select-pane -U
bind -n M-Down select-pane -D
bind -n M-j select-pane -D
#Split Pane
bind -n M-- split-window -h
bind -n M-= split-window -v
#Resize Pane
bind -n C-M-Up resize-pane -U 5
bind -n C-M-Down resize-pane -D 5
bind -n C-M-Left resize-pane -L 5
bind -n C-M-Right resize-pane -R 5
#Move to Window
bind -n M-1
'';
};
};
}

View file

@ -1,7 +0,0 @@
{
imports = [
./fish
./bash
./zsh
];
}

View file

@ -1,31 +0,0 @@
{
lib,
config,
osConfig,
pkgs,
...
}: let
inherit (lib) mkIf getExe;
inherit (pkgs) bat eza dust nh;
cfg = config.ooknet.shell.fish;
inherit (osConfig.ooknet.host) admin;
in {
config = mkIf (cfg.enable || admin.shell == "fish") {
programs.fish = {
shellAliases = {
cat = "${getExe bat}";
ls = "${getExe eza} -a --icons --group-directories-first";
lst = "${getExe eza} -T -L 5 --icons --group-directories-first";
du = "${getExe dust}";
gitroot = "cd (git rev-parse --show-toplevel)";
};
shellAbbrs = {
f = "cd $FLAKE";
fe = "$EDITOR $FLAKE";
nswitch = "${getExe nh} os switch";
};
};
};
}

View file

@ -1,22 +0,0 @@
{
lib,
config,
osConfig,
...
}: let
inherit (lib) mkIf;
inherit (osConfig.ooknet.host) admin;
cfg = config.ooknet.shell.fish;
in {
config = mkIf (cfg.enable || admin.shell == "fish") {
programs.fish = {
functions = {
fish_user_key_bindings = ''
bind --preset -M insert \cf nvim '+Telescope find_files' $FLAKE
bind --preset -M insert \ec fzf_cd_widget
'';
};
};
};
}

View file

@ -1,30 +0,0 @@
{
lib,
config,
pkgs,
osConfig,
...
}: let
inherit (lib) mkIf;
cfg = config.ooknet.shell.fish;
inherit (osConfig.ooknet.host) admin;
in {
config = mkIf (cfg.enable || admin.shell == "fish") {
programs.fish = {
plugins = [
{
name = "done";
inherit (pkgs.fishPlugins.done) src;
}
{
name = "autopair";
inherit (pkgs.fishPlugins.autopair) src;
}
{
name = "colored-man-pages";
inherit (pkgs.fishPlugins.colored-man-pages) src;
}
];
};
};
}

View file

@ -1,26 +0,0 @@
{
lib,
pkgs,
config,
osConfig,
...
}: let
inherit (lib) mkIf;
cfg = config.ooknet.shell.zsh;
inherit (osConfig.ooknet.host) admin;
in {
config = mkIf (cfg.enable || admin.shell == "zsh") {
programs.zsh.plugins = [
{
name = "fast-syntax-highlighting";
file = "fast-syntax-highlighting";
src = "${pkgs.zsh-fast-syntax-highlighting}/share/zsh/site-functions";
}
{
name = "zsh-autopair";
file = "autopair.zsh";
src = "${pkgs.zsh-autopair}/share/zsh/zsh-autopair";
}
];
};
}

View file

@ -1,24 +0,0 @@
{
lib,
config,
pkgs,
...
}: let
inherit (lib) mkIf;
cfg = config.ooknet.tools.bat;
in {
config = mkIf cfg.enable {
programs.bat = {
enable = true;
extraPackages = with pkgs.bat-extras; [
batgrep
prettybat
batwatch
batman
];
config = {
theme = "base16";
};
};
};
}

View file

@ -1,13 +0,0 @@
{
lib,
config,
pkgs,
...
}: let
inherit (lib) mkIf;
cfg = config.ooknet.tools.sourcegraph;
in {
config = mkIf cfg.enable {
home.packages = [pkgs.src-cli];
};
}

View file

@ -1,54 +0,0 @@
{
pkgs,
lib,
config,
self,
...
}: let
cfg = config.ooknet.tools.utils;
in {
config = lib.mkIf cfg.enable {
home.packages = with pkgs; [
bc # Calculator
# file utility
duf
du-dust
fd
ripgrep
# archive
zip
unzip
unrar
# file transfer
wget
httpie # Better curl
# resource manager
powertop
#shell scripting
gum
# audio ctrl
pamixer
diffsitter # Better diff
jq # JSON pretty printer and manipulator
tldr # Community maintained help pages
progress
killall
acpi
# Notifications
libnotify
# Nix tooling
alejandra
#AI
self.packages.${pkgs.system}.repopack
];
};
}

View file

@ -1,8 +0,0 @@
{
imports = [
./base # default configuration modules for home-manager.
./desktop # gui modules
./console # cli modules
./appearance # modules for configuring themes ie: fonts, wallpapers, color-schemes, etc...
];
}

View file

@ -1,7 +0,0 @@
{
imports = [
./firefox
#./chrome -- still needs to be implemented
#./brave -- still needs tio be implemented
];
}

File diff suppressed because it is too large Load diff

View file

@ -1,181 +0,0 @@
/*
css
*/
''
/* config */
* {
--animation-speed: 0.2s;
--button-corner-rounding: 30px;
--urlbar-container-height: 40px !important;
--urlbar-min-height: 30px !important;
--urlbar-height: 30px !important;
--urlbar-toolbar-height: 38px !important;
--moz-hidden-unscrollable: scroll !important;
--toolbarbutton-border-radius: 3px !important;
--tabs-border-color: transparent;
}
:root {
--window: -moz-Dialog !important;
--secondary: color-mix(in srgb, currentColor 5%, -moz-Dialog) !important;
--uc-border-radius: 0px;
--uc-status-panel-spacing: 0px;
--uc-page-action-margin: 7px;
}
/* animation and effect */
#nav-bar:not([customizing]) {
visibility: visible;
margin-top: -40px;
transition-delay: 0.1s;
filter: alpha(opacity=0);
opacity: 0;
transition: visibility, ease 0.1s, margin-top, ease 0.1s, opacity, ease 0.1s,
rotate, ease 0.1s !important;
}
#nav-bar:hover,
#nav-bar:focus-within,
#urlbar[focused='true'],
#identity-box[open='true'],
#titlebar:hover + #nav-bar:not([customizing]),
#toolbar-menubar:not([inactive='true']) ~ #nav-bar:not([customizing]) {
visibility: visible;
margin-top: 0px;
filter: alpha(opacity=100);
opacity: 100;
margin-bottom: -0.2px;
}
#PersonalToolbar {
margin-top: 0px;
}
#nav-bar .toolbarbutton-1[open='true'] {
visibility: visible;
opacity: 100;
}
tab:not(:active) .tab-background {
transition: background-color var(--animation-speed) !important;
}
:root:not([customizing]) :hover > .tabbrowser-tab:not(:hover) {
transition: blur, ease 0.1s !important;
}
:root:not([customizing]) :not(:hover) > .tabbrowser-tab {
transition: blur, ease 0.1s !important;
}
#tabbrowser-tabs .tab-label-container[customizing] {
color: transparent;
transition: ease 0.1s;
transition-delay: 0.2s;
}
.tabbrowser-tab:not([pinned]) .tab-icon-image ,.bookmark-item .toolbarbutton-icon{opacity: 0!important; transition: .15s !important; width: 0!important; padding-left: 16px!important}
.tabbrowser-tab:not([pinned]):hover .tab-icon-image,.bookmark-item:hover .toolbarbutton-icon{opacity: 100!important; transition: .15s !important; display: inline-block!important; width: 16px!important; padding-left: 0!important}
.tabbrowser-tab:not([hover]) .tab-icon-image,.bookmark-item:not([hover]) .toolbarbutton-icon{padding-left: 0!important}
/* Removes annoying buttons and spaces */
#firefox-view-button, .titlebar-spacer[type="pre-tabs"], .titlebar-spacer[type="post-tabs"]{display: none !important}
#tabbrowser-tabs{border-inline-start-width: 0!important}
/* Makes some buttons nicer */
#PanelUI-menu-button, #unified-extensions-button, #reload-button, #stop-button {padding: 2px !important}
#reload-button, #stop-button{margin: 1px !important;}
/* Tabs colors */
#tabbrowser-tabs:not([movingtab])
> #tabbrowser-arrowscrollbox
> .tabbrowser-tab
> .tab-stack
> .tab-background[multiselected='true'],
#tabbrowser-tabs:not([movingtab])
> #tabbrowser-arrowscrollbox
> .tabbrowser-tab
> .tab-stack
> .tab-background[selected='true'] {
background-image: none !important;
background-color: var(--toolbar-bgcolor) !important;
}
/* Inactive tabs color */
#navigator-toolbox {
background-color: var(--window) !important;
}
/* X-button */
:root {
--show-tab-close-button: none;
--show-tab-close-button-hover: -moz-inline-block;
}
.tabbrowser-tab:not([pinned]) .tab-close-button { display: var(--show-tab-close-button) !important; }
.tabbrowser-tab:not([pinned]):hover .tab-close-button { display: var(--show-tab-close-button-hover) !important }
/* Window colors */
:root {
--lwt-sidebar-background-color: var(--window) !important;
--lwt-toolbar-field-focus: var(--secondary) !important;
}
/* tabbar */
/* Hide the secondary Tab Label
* e.g. playing indicator (the text, not the icon) */
.tab-secondary-label { display: none !important; }
#nav-bar:not([tabs-hidden='true']) {
box-shadow: none;
}
:root {
--toolbarbutton-border-radius: 0 !important;
--tab-border-radius: 0 !important;
--tab-block-margin: 0 !important;
}
.tab-background {
border-right: 0px solid rgba(0, 0, 0, 0) !important;
margin-left: -4px !important;
}
.tabbrowser-tab:is([visuallyselected='true'], [multiselected])
> .tab-stack
> .tab-background {
box-shadow: none !important;
}
.tabbrowser-tab[last-visible-tab='true'] {
padding-inline-end: 0 !important;
}
#tabs-newtab-button {
padding-left: 0 !important;
}
/* remove tab shadow */
.tabbrowser-tab
>.tab-stack
> .tab-background { box-shadow: none !important; }
/* multi tab selection */
#tabbrowser-tabs:not([noshadowfortests]) .tabbrowser-tab:is([multiselected])
> .tab-stack
> .tab-background:-moz-lwtheme { outline-color: var(--toolbarseparator-color) !important; }
/* Hides the list-all-tabs button*/
#alltabs-button { display: var(--uc-show-all-tabs-button) !important; }
/* remove gap after pinned tabs */
#tabbrowser-tabs[haspinnedtabs]:not([positionpinnedtabs])
> #tabbrowser-arrowscrollbox
> .tabbrowser-tab:nth-child(1 of :not([pinned], [hidden])) { margin-inline-start: 0 !important; }
/* Removes annoying border */
#navigator-toolbox{border:none !important;}
/* Removes the annoying rainbow thing from the hamburger */
#appMenu-fxa-separator{border-image:none !important;}
''

View file

@ -1,176 +0,0 @@
{
config,
osConfig,
lib,
pkgs,
...
}: let
inherit (osConfig.ooknet.appearance) colorscheme fonts;
inherit (colorscheme) palette;
inherit (config.ooknet.desktop) discord;
inherit (lib) mkIf mkMerge;
cfg = config.ooknet.communication.discord;
vesktopMime = {"x-scheme-handler/discord" = ["vesktop.desktop"];};
in {
config = mkMerge [
(mkIf (cfg.enable || discord == "vesktop") {
# <https://github.com/AlephNought0/Faery/blob/main/Home/Programs/Vesktop/patchedvesktop.patch>
home.packages = [
(pkgs.vesktop.overrideAttrs (old: {
patches = (old.patches or []) ++ [./vesktop-patch.patch];
}))
];
xdg.configFile."vesktop/themes/nix.css".text =
/*
css
*/
''
/**
* @name nix-colors-minimal
* @author aoku
* @description minimal theme designed with nix colors
*/
:root {
--nix-bg1: #${palette.base00};
--nix-bg2: #${palette.base01};
--nix-bg3: #${palette.base02};
--nix-fg1: #${palette.base05};
--nix-fg2: #${palette.base07};
--nix-fg3: #${palette.base03};
--nix-link: #${palette.base0D};
--nix-accent: #${palette.base08};
--nix-hi: #${palette.base0B};
--font-mono: ${fonts.monospace.family}, monospace;
--font-regular: ${fonts.regular.family}, sans serif;
/* server collapse */
--sb-collapsed-width: 12px;
--sb-transition-duration: 0s;
}
.theme-dark {
--background-primary: var(--nix-bg1);
--background-secondary: var(--nix-bg1);
--background-secondary-alt: var(--nix-bg1);
--background-accent: var(--nix-accent);
--background-tertiary: var(--nix-bg1);
--background-floating: var(--nix-bg1);
--background-mentioned: var(--nix-bg1);
--background-mentioned-hover: var(--nix-bg1);
--background-mobile: var(--nix-bg1);
--background-mobile-secondary: var(--nix-bg2);
--background-modifier-selected: var(--nix-bg1);
--channeltextarea-background:var(--nix-bg1);
--background-modifier-hover:var(--nix-bg1);
--activity-card-background: var(--nix-bg2);
--header-primary: var(--nix-fg2);
--header-secondary: var(--nix-fg1);
--text-normal: var(--nix-fg1);
--text-muted: var(--nix-fg1);
--text-link: var(--nix-link);
--text-warning: var(--nix-accent);
--font-primary: var(--font-mono);
--font-headline: var(--font-mono);
--font-display: var(--font-mono);
--interactive-normal: var(--nix-fg1); /*base05*/
--interactive-hover: var(--nix-hi); /*base0B*/
--interactive-active: var(--nix-fg2);
--interactive-muted: var(--nix-fg3); /*base03*/
--channels-default: var(--nix-fg1);
--scrollbar-thin-thumb: transparent;
--scrollbar-thin-track: transparent;
--scrollbar-auto-thumb: var(--nix-fg1);
--scrollbar-auto-track:var(--nix-bg1);
--scrollbar-auto-scrollbar-color-thumb: var(--nix-accent);
}
.messagesWrapper_ea2b0b {
font-family: var(--font-regular);
}
.titleWrapper__482dc {
font-family: var(--font-mono);
}
.link__95dc0 /* text channel*/{
border-radius: 0px;
margin-left: -10px;
font-family: var(--font-mono);
}
.container_ca50b9 .avatar_f8541f { /*avatar*/
display: none;
}
.form__13a2c /* text input box resize */ {
height: 50px;
font-family: var(--font-regular);
}
.containerDefault__3187b .wrapper__7bcde:before /* text channel */{
content: "";
display:inline-block;
background: var(--nix-hi);
height: 100%;
position: absolute;
left: 0;
}
/* server collapse */
.guilds__2b93a /* servers */{
overflow: hidden !important;
width: var(--sb-collapsed-width, 75px);
transition: width var(--sb-transition-duration);
}
.guilds__2b93a:hover /* expand server bar on hover */{
width: 70px;
overflow: visible !important;
animation: server-bar-overflow 0s linear 0ms forwards
}
.guilds__2b93a ~ .base__3e6af /* friends list, chat */{
position: absolute;
left: var(--sb-collapsed-left, var(--sb-collapsed-width));
top: var(--sb-collapsed-top, 0px);
bottom: var(--sb-collapsed-bottom, 0px);
right: var(--sb-collapsed-right, 0px);
transition-property: var(--sb-transition-property, left);
transition-duration: var(--sb-transition-duration);
}
.guilds__2b93a:hover ~ .base__3e6af /* friends list, chat */{
position: absolute;
left: var(--sb-left, 70px);
top: var(--sb-top, 0px);
bottom: var(--sb-bottom, 0px);
right: var(--sb-right, 0px);
}
@keyframes server-bar-overflow{
from{
overflow: hidden;
}
to{
overflow: visible;
}
}
'';
})
(mkIf (discord == "vesktop") {
ooknet.binds.discord = "vesktop";
xdg.mimeApps = {
associations.added = vesktopMime;
defaultApplications = vesktopMime;
};
})
];
}

View file

@ -1,13 +0,0 @@
{
lib,
config,
pkgs,
...
}: let
inherit (lib) mkIf;
cfg = config.ooknet.creative.audacity;
in {
config = mkIf cfg.enable {
home.packages = [pkgs.audacity];
};
}

View file

@ -1,13 +0,0 @@
{
lib,
config,
pkgs,
...
}: let
inherit (lib) mkIf;
cfg = config.ooknet.creative.inkscape;
in {
config = mkIf cfg.enable {
home.packages = [pkgs.inkscape-with-extensions];
};
}

View file

@ -1,27 +0,0 @@
{
lib,
config,
pkgs,
...
}: let
inherit (lib) mkIf mkMerge;
cfg = config.ooknet.fileManager.nemo;
inherit (config.ooknet.desktop) fileManager;
nemoMime = {
"inode/directory" = ["nemo.desktop"];
};
in {
config = mkMerge [
(mkIf (cfg.enable || fileManager == "nemo") {
home.packages = [pkgs.nemo-with-extensions];
})
(mkIf (fileManager == "nemo") {
ooknet.binds.fileManager = "nemo";
xdg.mimeApps = {
associations.added = nemoMime;
defaultApplications = nemoMime;
};
})
];
}

View file

@ -1,15 +0,0 @@
{
lib,
config,
pkgs,
...
}: let
inherit (lib) mkIf;
cfg = config.ooknet.gaming.bottles;
in {
config = mkIf cfg.enable {
home.packages = with pkgs; [
bottles
];
};
}

View file

@ -1,8 +0,0 @@
{
imports = [
./factorio.nix
./lutris.nix
./bottles.nix
./wine.nix
];
}

View file

@ -1,12 +0,0 @@
{
lib,
config,
pkgs,
...
}: let
cfg = config.ooknet.gaming.factorio;
in {
config = lib.mkIf cfg.enable {
home.packages = with pkgs; [factorio];
};
}

View file

@ -1,23 +0,0 @@
{
lib,
config,
pkgs,
...
}: let
inherit (lib) mkIf;
cfg = config.ooknet.gaming.lutris;
in {
config = mkIf cfg.enable {
home.packages = with pkgs; [
(lutris.override {
extraPkgs = p: [
p.pixman
p.libjpeg
p.gnome.zenity
p.gamescope
];
})
winetricks
];
};
}

View file

@ -1,19 +0,0 @@
{
lib,
config,
pkgs,
...
}: let
inherit (lib) mkIf;
cfg = config.ooknet.gaming.wine;
in {
config = mkIf cfg.enable {
home.packages = with pkgs; [
winetricks
protontricks
protonup-qt
wineWowPackages.waylandFull
wowup-cf
];
};
}

View file

@ -1,7 +0,0 @@
{
imports = [
./video
./image
./music
];
}

View file

@ -1,6 +0,0 @@
{
imports = [
#./spotify --- still needs to be implemented
./tui.nix
];
}

View file

@ -1,7 +0,0 @@
{
imports = [
./youtube.nix
./jellyfin-player.nix
./mpv.nix
];
}

View file

@ -1,13 +0,0 @@
{
pkgs,
lib,
config,
...
}: let
inherit (lib) mkIf;
cfg = config.ooknet.media.video.jellyfinPlayer;
in {
config = mkIf cfg.enable {
home.packages = [pkgs.jellyfin-media-player];
};
}

View file

@ -1,16 +0,0 @@
{
lib,
config,
pkgs,
...
}: let
inherit (lib) mkIf;
cfg = config.ooknet.media.video.youtube;
in {
config = mkIf cfg.enable {
home.packages = [pkgs.youtube-tui];
programs.yt-dlp = {
enable = true;
};
};
}

View file

@ -1,7 +0,0 @@
{...}: {
imports = [
./office
./notes
./pdf
];
}

View file

@ -1,34 +0,0 @@
{
lib,
config,
pkgs,
...
}: let
inherit (lib) mkIf mkMerge hm;
cfg = config.ooknet.productivity.notes.obsidian;
inherit (config.ooknet.desktop) notes;
# admin = osConfig.ooknet.host.admin;
# TODO: use admin.githubUsername
notesRepo = "git@github.com:ooks-io/notes.git";
notesPath = "${config.xdg.userDirs.documents}/notes";
in {
config = mkMerge [
(mkIf (cfg.enable || notes == "obsidian") {
home.packages = [pkgs.obsidian];
home.activation.cloneObsidianVault =
hm.dag.entryAfter ["installPackages"]
/*
shell
*/
''
if ! [ -d "${notesPath}" ]; then
$DRY_RUN_CMD git clone ${notesRepo} ${notesPath}
fi
'';
})
(mkIf (notes == "obsidian") {
ooknet.binds.notes = "obsidian";
})
];
}

View file

@ -1,6 +0,0 @@
# TODO: add openoffice
{
imports = [
./libreoffice.nix
];
}

View file

@ -1,14 +0,0 @@
{
lib,
config,
pkgs,
...
}: let
inherit (lib) mkIf mkEnableOption;
cfg = config.ooknet.desktop.productivity.office;
in {
options.ooknet.desktop.productivity.office.enable = mkEnableOption "enable office home module";
config = mkIf cfg.enable {
home.packages = [pkgs.libreoffice];
};
}

View file

@ -1,5 +0,0 @@
{
imports = [
./zathura.nix
];
}

View file

@ -1,48 +0,0 @@
{
lib,
config,
pkgs,
...
}: let
inherit (lib) mkIf;
inherit (config.ooknet.security) polkit;
in {
config = {
systemd.user.services = {
polkit-pantheon-authentication-agent-1 = mkIf (polkit == "pantheon") {
Unit.Description = "polkit-pantheon-authentication-agent-1";
Install = {
WantedBy = ["graphical-session.target"];
Wants = ["graphical-session.target"];
After = ["graphical-session.target"];
};
Service = {
Type = "simple";
ExecStart = "${pkgs.pantheon.pantheon-agent-polkit}/libexec/policykit-1-pantheon/io.elementary.desktop.agent-polkit";
Restart = "on-failure";
RestartSec = 1;
TimeoutStopSec = 10;
};
};
polkit-gnome-authentication-agent-1 = mkIf (polkit == "gnome") {
Unit.Description = "polkit-pantheon-authentication-agent-1";
Install = {
WantedBy = ["graphical-session.target"];
Wants = ["graphical-session.target"];
After = ["graphical-session.target"];
};
Service = {
Type = "simple";
ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
Restart = "on-failure";
RestartSec = 1;
TimeoutStopSec = 10;
};
};
};
};
}

View file

@ -1,74 +0,0 @@
{
config,
lib,
osConfig,
...
}: let
inherit (lib) mkIf;
inherit (osConfig.ooknet.appearance) colorscheme fonts;
inherit (colorscheme) palette;
inherit (config.ooknet) host desktop;
inherit (desktop) terminal;
inherit (host.admin) shell;
cfg = config.ooknet.terminal.kitty;
in {
config = mkIf (cfg.enable || terminal == "kitty") {
home.sessionVariables = mkIf (terminal == "kitty") {
TERMINAL = "kitty -1";
TERM = "kitty -1";
};
ooknet.binds.terminal = mkIf (terminal == "kitty") "kitty -1";
ooknet.binds.terminalLaunch = mkIf (terminal == "kitty") "kitty -e";
programs.kitty = {
enable = true;
font = {
name = fonts.monospace.family;
size = 12;
};
shellIntegration.enableFishIntegration = mkIf (shell == "fish") true;
settings = {
scrollback_lines = 4000;
scrollback_pager_history_size = 2048;
window_padding_width = 1;
foreground = "#${palette.base05}";
background = "#${palette.base00}";
background_opacity = "1.0";
selection_background = "#${palette.base05}";
selection_foreground = "#${palette.base00}";
url_color = "#${palette.base04}";
cursor = "#${palette.base05}";
active_border_color = "#${palette.base03}";
inactive_border_color = "#${palette.base01}";
active_tab_background = "#${palette.base00}";
active_tab_foreground = "#${palette.base05}";
inactive_tab_background = "#${palette.base01}";
inactive_tab_foreground = "#${palette.base04}";
tab_bar_background = "#${palette.base01}";
color0 = "#${palette.base00}";
color1 = "#${palette.base08}";
color2 = "#${palette.base0B}";
color3 = "#${palette.base0A}";
color4 = "#${palette.base0D}";
color5 = "#${palette.base0E}";
color6 = "#${palette.base0C}";
color7 = "#${palette.base05}";
color8 = "#${palette.base03}";
color9 = "#${palette.base08}";
color10 = "#${palette.base0B}";
color11 = "#${palette.base0A}";
color12 = "#${palette.base0D}";
color13 = "#${palette.base0E}";
color14 = "#${palette.base0C}";
color15 = "#${palette.base07}";
color16 = "#${palette.base09}";
color17 = "#${palette.base0F}";
color18 = "#${palette.base01}";
color19 = "#${palette.base02}";
color20 = "#${palette.base04}";
color21 = "#${palette.base06}";
};
};
};
}

View file

@ -1,15 +0,0 @@
{
lib,
config,
inputs,
pkgs,
...
}: let
inherit (lib) mkIf;
inherit (config.ooknet.wayland) launcher;
in {
config = mkIf (launcher == "rofi") {
home.packages = [inputs.ooks-scripts.packages.${pkgs.system}.powermenu];
ooknet.binds.powerMenu = "powermenu -c dmenu";
};
}

View file

@ -1,239 +0,0 @@
{
lib,
config,
pkgs,
...
}: let
inherit (lib) mkIf;
inherit (config.ooknet.console) multiplexer;
inherit (config.ooknet.wayland) launcher;
inherit (config.ooknet) binds;
zellijmenu = pkgs.writeShellApplication {
name = "zellijmenu";
runtimeInputs = with pkgs; [coreutils rofi-wayland];
text =
/*
bash
*/
''
set -e
type=""
type_dir=""
project_name=""
project_dir=""
session_name=""
layout=""
spawn_terminal=0
while [[ "$#" -gt 0 ]]; do
case $1 in
-n) spawn_terminal=1 ;;
*)
echo "Unknown parameter: $1" >&2
exit 1
;;
esac
shift
done
rofi_cmd() {
MSG=$1
rofi -dmenu -i -mesg "$MSG"
}
zellij_cmd() {
if [[ "$spawn_terminal" -eq 1 ]]; then
${binds.terminalLaunch} zellij "$@"
else
zellij "$@"
fi
}
session_manager() {
session_list() {
zellij ls -s | tr ' ' '\n'
}
layout_menu() {
layout_list=$(find ~/.config/zellij/layouts -name "*.kdl" | sed 's|.*/||; s/\.kdl$//' | tr ' ' '\n')
echo -e "$layout_list" | rofi_cmd "Select layout for $session_name:"
}
session_menu() {
echo -e "$(session_list)" | rofi_cmd "Session:"
}
session_select() {
session_name=$(session_menu)
if [[ -z "$session_name" ]]; then
echo "Nothing selected."
exit 0
fi
if session_list | grep -qx "$session_name"; then
session_action="select"
else
session_action="create"
fi
}
selection_menu() {
echo -e "Attach\nDelete\nBack" | rofi_cmd "$session_name action:"
}
while true; do
session_select
case $session_action in
"create")
layout="$(layout_menu)"
if [ -z "$layout" ]; then
echo "No layout given"
continue
fi
zellij_cmd -s "$session_name" --layout "$layout"
break
;;
"select")
selection=$(selection_menu)
case $selection in
"Attach")
zellij_cmd attach "$session_name"
break
;;
"Delete") zellij delete-session --force "$session_name" ;;
"Back") echo "Going back." ;;
*) echo "Going Back." ;;
esac
;;
*) echo "Going Back" ;;
esac
done
}
project_manager() {
get_project_type() {
while true; do
type=$(echo -e "script\nnix" | rofi_cmd "Select project type:")
case "$type" in
script)
type_dir="$SCRIPTS"
break
;;
nix)
type_dir="$NIX_DIR"
break
;;
*)
echo "Invalid selection, try again."
;;
esac
done
}
get_project_name() {
while true; do
project_name=$(rofi_cmd "Enter project name:")
if [ -z "$project_name" ]; then
echo "No name provided, try again."
elif [ -d "$type_dir/$project_name" ]; then
echo "Project already exists, try again."
else
project_dir="$type_dir/$project_name"
break
fi
done
}
get_session_name() {
session_name="$project_name"
if zellij ls | grep -q "^$session_name$"; then
session_name=$(rofi_cmd "Session name '$project_name' in use, enter a new session name:")
if [ -z "$session_name" ]; then
echo "No session name entered, exiting."
exit 1
fi
fi
}
get_layout() {
case "$type" in
script)
layout="script"
;;
nix)
layout="nix"
;;
*)
echo "Unknown project type, using default layout."
layout="base"
;;
esac
}
select_project() {
project_name=$(find "$type_dir" -maxdepth 1 -mindepth 1 -type d ! -name .git -exec basename {} \; | rofi_cmd "Select project:")
project_dir="$type_dir/$project_name"
cd "$project_dir" || return 1
get_session_name
get_layout
zellij_cmd -s "$session_name" --layout "$layout"
}
create_and_start_project() {
mkdir -p "$project_dir"
cd "$project_dir" || return 1
case "$type" in
script)
echo -e "#!/usr/bin/env bash\necho 'hello world'" >"$project_name.sh"
chmod +x "$project_name.sh"
;;
nix)
echo "Creating Nix project..."
# still need to implement
;;
*)
echo "Unknown project type."
return 1
;;
esac
get_session_name
get_layout
zellij_cmd -s "$session_name" --layout "$layout"
}
project_action=$(echo -e "Create Project\nSelect Project" | rofi_cmd "Project action:")
case "$project_action" in
"Create Project")
get_project_type
get_project_name
create_and_start_project
;;
"Select Project")
get_project_type
select_project
;;
esac
}
main() {
main_action=$(echo -e "Projects\nSessions" | rofi_cmd "Choose action:")
case "$main_action" in
"Projects") project_manager ;;
"Sessions") session_manager ;;
*) echo "Invalid option, exiting." ;;
esac
}
main
'';
};
in {
config = mkIf (multiplexer == "zellij" && launcher == "rofi") {
home.packages = [zellijmenu];
ooknet.binds.zellijMenu = "zellijmenu -n";
};
}

View file

@ -1,19 +0,0 @@
{lib, ...}: {
imports = [
#./eww
# ./ags
./waybar
];
options.ooknet.desktop.wayland.bar = {
eww = {
enable = lib.mkEnableOption "Enable Eww bar";
};
ags = {
enable = lib.mkEnableOption "Enable ags bar";
};
waybar = {
enable = lib.mkEnableOption "Enable waybar bar";
};
};
}

View file

@ -1,32 +0,0 @@
{
inputs,
lib,
config,
pkgs,
...
}: let
inherit (config.ooknet) wayland;
inherit (lib) mkIf;
in {
imports = [
inputs.hyprland.homeManagerModules.default
./settings
./extras
];
config = mkIf (wayland.compositor == "hyprland") {
home.packages = [
pkgs.hyprpicker
];
wayland.windowManager.hyprland = {
enable = true;
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
xwayland.enable = true;
systemd = {
enable = true;
variables = ["--all"];
};
};
};
}

View file

@ -1,6 +0,0 @@
{
imports = [
./hyprcapture.nix
./hyprshade.nix
];
}

View file

@ -1,35 +0,0 @@
{
lib,
config,
pkgs,
inputs,
...
}: let
inherit (lib) mkIf;
inherit (config.ooknet) wayland;
in {
config = mkIf (wayland.compositor == "hyprland") {
home.packages = with inputs; [
# Screenshot tool
hyprland-contrib.packages.${pkgs.system}.grimblast
# Screen recording tool
ooks-scripts.packages.${pkgs.system}.hyprrecord
];
# Add XDG user directories that the scripts use
xdg.userDirs.extraConfig = {
XDG_RECORDINGS_DIR = "${config.xdg.userDirs.videos}/Recordings";
XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots";
};
wayland.windowManager.hyprland.settings.bind = [
# Screenshot binds
", Print, exec, grimblast --notify --cursor copysave area"
"SUPER, Print, exec, grimblast --notify --cursor copysave screen"
# Recording binds
"SUPER, r, exec, hyprrecord -a -w video screen copysave"
"SUPER CTRL, r, exec, hyprrecord -a -w video area copysave"
"SUPER ALT, r, exec, hyprrecord -w gif area copysave"
];
};
}

View file

@ -1,14 +0,0 @@
{
lib,
config,
pkgs,
...
}: let
inherit (lib) mkIf;
inherit (config.ooknet) wayland;
in {
config = mkIf (wayland.compositor == "hyprland") {
home.packages = [pkgs.hyprshade];
# TODO: implement hyprshade configuration
};
}

View file

@ -1,55 +0,0 @@
{
config,
osConfig,
lib,
...
}: let
inherit (osConfig.ooknet.appearance) colorscheme cursor;
inherit (colorscheme) palette;
inherit (config.ooknet) wayland;
inherit (lib) mkIf;
in {
config = mkIf (wayland.compositor == "hyprland") {
wayland.windowManager.hyprland = {
settings = {
# cursor = {
# inactive_timeout = 4;
# };
general = {
gaps_in = 10;
gaps_out = 10;
border_size = 2;
"col.active_border" = "0xff${palette.base05}";
"col.inactive_border" = "0xff${palette.base02}";
};
exec-once = [
"hyprctl setcursor ${cursor.name} ${toString cursor.size}"
];
decoration = {
active_opacity = 1.0;
inactive_opacity = 1.0;
fullscreen_opacity = 1.0;
rounding = 0;
blur = {
enabled = false;
ignore_opacity = true;
};
drop_shadow = true;
shadow_range = 12;
shadow_offset = "3 3";
"col.shadow" = "0x44000000";
"col.shadow_inactive" = "0x66000000";
};
animations = {
enabled = false;
};
};
};
};
}

View file

@ -1,122 +0,0 @@
{
lib,
config,
...
}: let
inherit (lib) mkIf;
inherit (config.ooknet) wayland;
inherit (config.ooknet) binds;
in {
config = mkIf (wayland.compositor == "hyprland") {
wayland.windowManager.hyprland.settings = {
bind = [
# Program Launch
"SUPER, b, exec, ${binds.browser}"
"SUPER, return, exec, ${binds.terminal}"
"SUPER, e, exec, ${binds.terminalLaunch} $EDITOR"
"SUPERSHIFT, P, exec, ${binds.password}"
"SUPER, d, exec, ${binds.discord}"
"SUPERSHIFT, e, exec, ${binds.fileManager}"
"SUPERSHIFT, S, exec, ${binds.steam}"
"SUPERSHIFT, n, exec, ${binds.notes}"
"SUPER, escape, exec, ${binds.terminalLaunch} --title=BTOP btop"
"SUPER CTRL, return, exec, ${binds.zellijMenu}"
"SUPER, delete, exec, ${binds.powerMenu}"
"SUPERSHIFT, F, exec, ${binds.factorio}"
# Spotify PLayer Controls
"SUPER, M, exec, ${binds.spotify.launch}"
"SUPER, bracketright, exec, ${binds.spotify.next}"
"SUPER, bracketleft, exec, ${binds.spotify.previous}"
"SUPER, backslash, exec, ${binds.spotify.play}"
# Brightness
",XF86MonBrightnessUp, exec, ${binds.brightness.up}"
",XF86MonBrightnessDown, exec, ${binds.brightness.down}"
# Volume
",XF86AudioRaiseVolume, exec, ${binds.volume.up}"
",XF86AudioLowerVolume, exec, ${binds.volume.down}"
",XF86AudioMute, exec, ${binds.volume.mute}"
# Window Management
"SUPER, Q, killactive"
"SUPER CTRL, backspace, killactive"
"SUPERSHIFT ALT, delete, exec, hyprkillsession"
"SUPER, F, fullscreen"
"SUPER CTRL, F, fullscreenstate"
"SUPER, Space, togglefloating"
"SUPER, P, pseudo" # dwindle
"SUPER, S, togglesplit" # dwindle
# Focus Arrows
"SUPER, left, movefocus,l"
"SUPER, right, movefocus,r"
"SUPER, up, movefocus,u"
"SUPER, down, movefocus,d"
# Focus Vim
"SUPER, h, movefocus,l"
"SUPER, l, movefocus,r"
"SUPER, k, movefocus,u"
"SUPER, j, movefocus,d"
# Move Arrows
"SUPERSHIFT, left, movewindow,l"
"SUPERSHIFT, right, movewindow,r"
"SUPERSHIFT, up, movewindow,u"
"SUPERSHIFT, down, movewindow,d"
# Move Vim
"SUPERSHIFT, h, movewindow,l"
"SUPERSHIFT, l, movewindow,r"
"SUPERSHIFT, k, movewindow,u"
"SUPERSHIFT, j, movewindow,d"
#Resize
"SUPER CTRL, left, resizeactive,-20 0"
"SUPERCTRL, right, resizeactive,20 0"
"SUPER CTRL, up, resizeactive,0 -20"
"SUPERCTRL, down, resizeactive,0 20"
# Switch workspace
"SUPER, 1, workspace,1"
"SUPER, 2, workspace,2"
"SUPER, 3, workspace,3"
"SUPER, 4, workspace,4"
"SUPER, 5, workspace,5"
"SUPER, 6, workspace,6"
"SUPER, 7, workspace,7"
"SUPER, 8, workspace,8"
"SUPER, 9, workspace,9"
"SUPER, 0, workspace,10"
"SUPER, period, workspace,e+1"
"SUPER, comma, workspace,e-1"
"SUPER, tab, focusCurrentOrLast"
# Move workspace
"SUPERSHIFT, 1, movetoworkspace,1"
"SUPERSHIFT, 2, movetoworkspace,2"
"SUPERSHIFT, 3, movetoworkspace,3"
"SUPERSHIFT, 4, movetoworkspace,4"
"SUPERSHIFT, 5, movetoworkspace,5"
"SUPERSHIFT, 6, movetoworkspace,6"
"SUPERSHIFT, 7, movetoworkspace,7"
"SUPERSHIFT, 8, movetoworkspace,8"
"SUPERSHIFT, 9, movetoworkspace,9"
"SUPERSHIFT, 0, movetoworkspace,10"
# Lock Screen
"SUPER, Backspace, exec, ${binds.lock}"
];
# Mouse
bindm = [
"SUPER, mouse:272, movewindow"
"SUPER, mouse:273, resizewindow"
];
# bindr = [
# "SUPER, SUPER_L, exec, killall rofi || rofi -show drun"
# ];
};
};
}

View file

@ -1,15 +0,0 @@
{
lib,
config,
...
}: let
inherit (lib) mkIf;
inherit (config.ooknet) wayland;
in {
config = mkIf (wayland.compositor == "hyprland") {
wayland.windowManager.hyprland.settings.env = [
"XDG_SESSION_DESKTOP,Hyprland"
"XDG_CURRENT_DESKTOP,Hyprland"
];
};
}

View file

@ -1,22 +0,0 @@
{
config,
lib,
pkgs,
...
}: let
inherit (lib) mkIf;
inherit (config.ooknet) wayland;
in {
config = mkIf (wayland.compositor == "hyprland") {
wayland.windowManager.hyprland.settings = {
exec = [
"${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"
];
exec-once = [
"${pkgs._1password-gui}/bin/1password --silent"
# "${pkgs.live-buds-cli}/bin/earbuds -d"
# "waybar"
];
};
};
}

View file

@ -1,15 +0,0 @@
{
lib,
config,
...
}: let
inherit (lib) mkIf;
inherit (config.ooknet) wayland;
in {
config = mkIf (wayland.compositor == "hyprland") {
wayland.windowManager.hyprland.settings.gestures = {
workspace_swipe = true;
workspace_swipe_forever = true;
};
};
}

View file

@ -1,17 +0,0 @@
{
lib,
config,
...
}: let
inherit (lib) mkIf;
inherit (config.ooknet) wayland;
in {
config = mkIf (wayland.compositor == "hyprland") {
wayland.windowManager.hyprland.settings.input = {
kb_layout = "us";
follow_mouse = 1;
touchpad.natural_scroll = "no";
mouse_refocus = false;
};
};
}

View file

@ -1,22 +0,0 @@
{
lib,
config,
...
}: let
inherit (lib) mkIf;
inherit (config.ooknet) wayland;
in {
config = mkIf (wayland.compositor == "hyprland") {
wayland.windowManager.hyprland.settings.misc = {
mouse_move_enables_dpms = true;
key_press_enables_dpms = true;
disable_hyprland_logo = true;
disable_splash_rendering = true;
enable_swallow = true;
swallow_regex = "foot|nemo";
focus_on_activate = true;
};
};
}

View file

@ -1,34 +0,0 @@
{
lib,
config,
osConfig,
...
}: let
inherit (lib) mkIf concatMap;
inherit (config.ooknet) wayland;
inherit (osConfig.ooknet.host.hardware) monitors;
in {
config = mkIf (wayland.compositor == "hyprland") {
wayland.windowManager.hyprland.settings = {
monitor =
concatMap (
m: let
resolution = "${toString m.width}x${toString m.height}@${toString m.refreshRate}";
position = "${toString m.x}x${toString m.y}";
basicConfig = "${m.name},${
if m.enabled
then "${resolution},${position},1"
else "disable"
}";
in
[basicConfig]
++ (
if m.transform != 0
then ["${m.name},transform,${toString m.transform}"]
else []
)
)
monitors;
};
};
}

View file

@ -1,33 +0,0 @@
{
lib,
config,
...
}: let
inherit (lib) mkIf;
inherit (config.ooknet) wayland;
in {
config = mkIf (wayland.compositor == "hyprland") {
wayland.windowManager.hyprland.settings = {
windowrulev2 = [
"float,move 191 15,size 924 396,class:^(1Password)$"
"float, title:^(Picture-in-Picture)$"
"pin, title:^(Picture-in-Picture)$"
"float,move 237 175, size 1200 720,title:^(File Upload)$"
"workspace 4, title:^(Vesktop)$"
# Floating BTOP
"float,title:^(BTOP)$"
"size 85%,title:^(BTOP)$"
"pin,title:^(BTOP)$"
"center,title:^(BTOP)$"
"stayfocused,title:^(BTOP)$"
# Tearing
"immediate, title:^(TEKKEN8)$"
];
};
};
}

View file

@ -1,11 +0,0 @@
{
imports = [
./bar
./compositor
./launcher
./lockscreen
./notification
./utility
./variables.nix
];
}

View file

@ -1,6 +0,0 @@
{
imports = [
./rofi.nix
./tofi.nix
];
}

View file

@ -1,46 +0,0 @@
{
lib,
config,
osConfig,
pkgs,
...
}: let
inherit (osConfig.ooknet.appearance) colorscheme fonts;
inherit (colorscheme) palette;
inherit (config.ooknet) wayland;
inherit (lib) mkIf;
in {
config = mkIf (wayland.launcher == "tofi") {
home.packages = [pkgs.tofi];
xdg.configFile."tofi/config".text =
/*
config
*/
''
history = false
clip-to-padding = false
horizontal = true
width = 40%
height = 35
anchor = top-left
margin-top = 5
margin-left = 25%
num-results = 1
border-width = 0
outline-width = 0
result-spacing = 10
selection-background-padding = 30
prompt-padding = 10
font = "${fonts.monospace.family}"
font-size = 14
prompt-text = " "
background-color = #0000
prompt-background = #0000
prompt-color = ${palette.base0B}
input-color = ${palette.base05}
placeholder-color = ${palette.base03}
default-result-color = ${palette.base03}
selection-color = ${palette.base04}
'';
};
}

View file

@ -1,6 +0,0 @@
{
imports = [
./swaylock.nix
./hyprlock.nix
];
}

View file

@ -1,41 +0,0 @@
{
config,
osConfig,
lib,
...
}: let
inherit (osConfig.ooknet.appearance) wallpaper colorscheme fonts;
inherit (colorscheme) palette;
inherit (config.ooknet) wayland;
inherit (lib) mkIf;
in {
config = mkIf (wayland.locker == "swaylock") {
ooknet.binds.lock = "swaylock";
programs.swaylock = {
enable = true;
settings = {
image = "${wallpaper.path}";
font = fonts.monospace.family;
color = "#${palette.base01}";
ring-color = "#${palette.base02}";
inside-wrong-color = "#${palette.base08}";
ring-wrong-color = "#${palette.base08}";
key-hl-color = "#${palette.base0B}";
bs-hl-color = "#${palette.base08}";
ring-ver-color = "#${palette.base09}";
inside-ver-color = "#${palette.base09}";
inside-color = "#${palette.base01}";
text-color = "#${palette.base07}";
text-clear-color = "#${palette.base01}";
text-ver-color = "#${palette.base01}";
text-wrong-color = "#${palette.base01}";
text-caps-lock-color = "#${palette.base07}";
inside-clear-color = "#${palette.base0C}";
ring-clear-color = "#${palette.base0C}";
inside-caps-lock-color = "#${palette.base09}";
ring-caps-lock-color = "#${palette.base02}";
separator-color = "#${palette.base02}";
};
};
};
}

View file

@ -1,5 +0,0 @@
{
imports = [
./mako.nix
];
}

View file

@ -1,6 +0,0 @@
{
imports = [
./gammastep.nix
./tools.nix
];
}

View file

@ -1,29 +0,0 @@
{
lib,
config,
pkgs,
...
}: let
inherit (lib) mkIf;
cfg = config.ooknet.wayland;
in {
config = lib.mkIf cfg.enable {
home = {
packages = with pkgs; [
grim
slurp
libnotify
wl-screenrec
wf-recorder
wl-clipboard
];
};
systemd.user.targets.tray = {
Unit = {
Description = "Home Manager System Tray";
Requires = ["graphical-session-pre.target"];
};
};
};
}

View file

@ -1,6 +0,0 @@
{
imports = [
./gtk.nix
./qt.nix
];
}

View file

@ -1,5 +0,0 @@
{lib, ...}: let
inherit (lib) mkEnableOption;
in {
options.ooknet.gtk.enable = mkEnableOption "";
}

View file

@ -1,5 +0,0 @@
{lib, ...}: let
inherit (lib) mkEnableOption;
in {
options.ooknet.qt.enable = mkEnableOption "";
}

View file

@ -1,8 +0,0 @@
{
imports = [
./editor.nix
./multiplexer.nix
./shell.nix
./tools.nix
];
}

View file

@ -1,8 +0,0 @@
{lib, ...}: let
inherit (lib) mkEnableOption;
in {
options.ooknet.editor = {
helix.enable = mkEnableOption "";
nvim.enable = mkEnableOption "";
};
}

View file

@ -1,8 +0,0 @@
{lib, ...}: let
inherit (lib) mkEnableOption;
in {
options.ooknet.multiplexer = {
zellij.enable = mkEnableOption "";
tmux.enable = mkEnableOption "";
};
}

View file

@ -1,9 +0,0 @@
{lib, ...}: let
inherit (lib) mkEnableOption;
in {
options.ooknet.shell = {
fish.enable = mkEnableOption "";
zsh.enable = mkEnableOption "";
bash.enable = mkEnableOption "";
};
}

View file

@ -1,18 +0,0 @@
{lib, ...}: let
inherit (lib) mkEnableOption;
in {
options.ooknet.tools = {
btop.enable = mkEnableOption "";
eza.enable = mkEnableOption "";
bat.enable = mkEnableOption "";
direnv.enable = mkEnableOption "";
fzf.enable = mkEnableOption "";
git.enable = mkEnableOption "";
ssh.enable = mkEnableOption "";
nixIndex.enable = mkEnableOption "";
starship.enable = mkEnableOption "";
utils.enable = mkEnableOption "";
ffmpeg.enable = mkEnableOption "";
sourcegraph.enable = mkEnableOption "";
};
}

View file

@ -1,8 +0,0 @@
{
imports = [
./appearance
./console
./desktop
./profiles
];
}

View file

@ -1,8 +0,0 @@
{lib, ...}: let
inherit (lib) mkEnableOption;
in {
options.ooknet.browser = {
firefox.enable = mkEnableOption "";
brave.enable = mkEnableOption "";
};
}

View file

@ -1,7 +0,0 @@
{lib, ...}: let
inherit (lib) mkEnableOption;
in {
options.ooknet.communication = {
discord.enable = mkEnableOption "";
};
}

View file

@ -1,8 +0,0 @@
{lib, ...}: let
inherit (lib) mkEnableOption;
in {
options.ooknet.creative = {
inkscape.enable = mkEnableOption "";
audacity.enable = mkEnableOption "";
};
}

View file

@ -1,16 +0,0 @@
{
imports = [
./binds.nix
./browser.nix
./communication.nix
./creative.nix
./gaming.nix
./media.nix
./productivity.nix
./security.nix
./terminal.nix
./tools.nix
./wayland.nix
./fileManager.nix
];
}

View file

@ -1,7 +0,0 @@
{lib, ...}: let
inherit (lib) mkEnableOption;
in {
options.ooknet.fileManager = {
nemo.enable = mkEnableOption "";
};
}

View file

@ -1,10 +0,0 @@
{lib, ...}: let
inherit (lib) mkEnableOption;
in {
options.ooknet.gaming = {
factorio.enable = mkEnableOption "";
bottles.enable = mkEnableOption "";
lutris.enable = mkEnableOption "";
wine.enable = mkEnableOption "";
};
}

View file

@ -1,17 +0,0 @@
{lib, ...}: let
inherit (lib) mkEnableOption;
in {
options.ooknet.media = {
image = {
imv.enable = mkEnableOption "";
};
video = {
mpv.enable = mkEnableOption "";
jellyfinPlayer.enable = mkEnableOption "";
youtube.enable = mkEnableOption "";
};
music = {
tui.enable = mkEnableOption "";
};
};
}

View file

@ -1,15 +0,0 @@
{lib, ...}: let
inherit (lib) mkEnableOption;
in {
options.ooknet.productivity = {
notes = {
obsidian.enable = mkEnableOption "";
};
office = {
libreoffice.enable = mkEnableOption "";
};
pdf = {
zathura.enable = mkEnableOption "";
};
};
}

View file

@ -1,10 +0,0 @@
{lib, ...}: let
inherit (lib) mkOption types;
inherit (types) nullOr enum;
in {
options.ooknet.security.polkit = mkOption {
type = nullOr (enum ["gnome" "pantheon"]); # TODO: add kde agent
default = "gnome";
description = "Type of polkit agent module to use";
};
}

View file

@ -1,8 +0,0 @@
{lib, ...}: let
inherit (lib) mkEnableOption;
in {
options.ooknet.terminal = {
foot.enable = mkEnableOption "";
kitty.enable = mkEnableOption "";
};
}

View file

@ -1,7 +0,0 @@
{lib, ...}: let
inherit (lib) mkEnableOption;
in {
options.ooknet.tools = {
kdeconnect.enable = mkEnableOption "";
};
}

View file

@ -1,27 +0,0 @@
{lib, ...}: let
inherit (lib) mkOption mkEnableOption types;
inherit (types) nullOr enum;
in {
options.ooknet.wayland = {
enable = mkEnableOption "";
compositor = mkOption {
type = nullOr (enum ["hyprland"]);
};
launcher = mkOption {
type = nullOr (enum ["rofi" "tofi"]);
default = null;
};
locker = mkOption {
type = nullOr (enum ["hyprlock" "swaylock"]);
default = null;
};
notification = mkOption {
type = nullOr (enum ["mako"]);
default = null;
};
bar = mkOption {
type = nullOr (enum ["waybar"]);
default = null;
};
};
}

View file

@ -1,19 +0,0 @@
{lib, ...}: let
inherit (lib) mkOption types;
inherit (types) nullOr enum;
in {
options.ooknet.console = {
editor = mkOption {
type = nullOr (enum ["helix" "nvim"]);
default = "helix";
};
multiplexer = mkOption {
type = nullOr (enum ["tmux" "zellij"]);
default = null;
};
fileManager = mkOption {
type = nullOr (enum ["yazi" "ranger" "lf"]);
default = null;
};
};
}

View file

@ -1,6 +0,0 @@
{
imports = [
./desktop.nix
./console.nix
];
}

View file

@ -1,46 +0,0 @@
{lib, ...}: let
inherit (lib) mkOption types;
inherit (types) enum nullOr listOf;
in {
options.ooknet.desktop = {
environment = mkOption {
type = nullOr (enum ["hyprland"]);
default = "hyprland";
};
browser = mkOption {
type = nullOr (enum ["firefox" "brave"]);
default = null;
};
terminal = mkOption {
type = nullOr (enum ["foot" "kitty" "wezterm"]);
default = "foot";
};
fileManager = mkOption {
type = nullOr (enum ["nemo"]);
default = null;
};
notes = mkOption {
type = nullOr (enum ["obsidian"]);
default = null;
};
pdf = mkOption {
type = nullOr (enum ["zathura"]);
default = null;
};
discord = mkOption {
type = nullOr (enum ["vesktop"]);
default = null;
};
suites = mkOption {
type = listOf (enum ["gaming" "tools" "media" "creative"]);
default = [];
};
};
}

View file

@ -1,7 +0,0 @@
{
imports = [
./desktop-environments
./themes
./suites
];
}

View file

@ -1,5 +0,0 @@
{
imports = [
./hyprland.nix
];
}

View file

@ -1,20 +0,0 @@
{
lib,
config,
...
}: let
inherit (lib) mkIf;
inherit (config.ooknet) desktop;
in {
config = mkIf (desktop.environment == "hyprland") {
ooknet.wayland = {
enable = true;
compositor = "hyprland";
launcher = "rofi";
locker = "hyprlock";
notification = "mako";
bar = "waybar";
};
ooknet.security.polkit = "pantheon";
};
}

View file

@ -1,16 +0,0 @@
{
osConfig,
lib,
...
}: let
inherit (lib) mkIf;
inherit (builtins) elem;
inherit (osConfig.ooknet.host) profiles;
in {
config = mkIf (elem "creative" profiles) {
ooknet.creative = {
audacity.enable = true;
inkscape.enable = true;
};
};
}

View file

@ -1,9 +0,0 @@
{
imports = [
./gaming.nix
./creative.nix
./productivity.nix
./console-tools.nix
./media.nix
];
}

View file

@ -1,25 +0,0 @@
{
osConfig,
lib,
...
}: let
inherit (lib) mkIf;
inherit (builtins) elem;
inherit (osConfig.ooknet.host) profiles;
in {
config = mkIf (elem "media" profiles) {
ooknet.media = {
image = {
imv.enable = true;
};
video = {
mpv.enable = true;
jellyfinPlayer.enable = true;
youtube.enable = true;
};
music = {
tui.enable = true;
};
};
};
}

View file

@ -1,17 +0,0 @@
{
osConfig,
lib,
...
}: let
inherit (lib) mkIf;
inherit (builtins) elem;
inherit (osConfig.ooknet.host) profiles;
in {
config = mkIf (elem "productiviy" profiles) {
ooknet.productivity = {
notes.obsidian.enable = true;
office.libreoffice.enable = true;
pdf.zathura.enable = true;
};
};
}

View file

@ -1,5 +0,0 @@
{
imports = [
# ./phone.nix
];
}

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