Compare commits
No commits in common. "64572cb106a6725178e3651a6008017eeb2419bc" and "2b4ad99e25f41fe4b5555ef739f91443b1b3d349" have entirely different histories.
64572cb106
...
2b4ad99e25
|
@ -62,6 +62,6 @@ This defines flake-based development environment templates for projects written
|
|||
This defines the core of the NixOS configuration using helper functions from `lib/`, which is organized as a flake-parts-based structure for better modularity:
|
||||
|
||||
1. `inputs`: Declares all external dependencies including, such as core Nix components (`nixpkgs`, `flake-parts`, `systems`) and user environment components (`home-manager`, `sops-nix`).
|
||||
2. `outputs`: Uses flake-parts to organize system configurations for multiple machines (`mars`, `deimos`, `phobos` and `ceres`) and shared modules (`core`, `mantle`, `crust`) imported across systems.
|
||||
2. `outputs`: Uses flake-parts to organize system configurations for multiple machines (`mars`, `venus`, `deimos`, `charon`, and `ceres`) and shared modules (`core`, `mantle`, `crust`) imported across systems.
|
||||
|
||||
Each system imports specialized modules and user profiles based on its intended purpose and users, creating a flexible but consistent configuration framework across multiple machines.
|
||||
|
|
23
flake.nix
|
@ -81,6 +81,7 @@
|
|||
./systems/mars
|
||||
./profiles/user0
|
||||
./profiles/user1
|
||||
./profiles/user3
|
||||
config.nixosModules.mars
|
||||
config.nixosModules.core
|
||||
config.nixosModules.mantle
|
||||
|
@ -92,9 +93,22 @@
|
|||
inputs.nur.modules.nixos.default
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
];
|
||||
venus = inputs.self.lib.mkLinuxSystem [
|
||||
./systems/venus
|
||||
./profiles/user2
|
||||
config.nixosModules.venus
|
||||
config.nixosModules.core
|
||||
config.nixosModules.mantle
|
||||
config.nixosModules.crust
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
inputs.lix-module.nixosModules.default
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
];
|
||||
deimos = inputs.self.lib.mkLinuxSystem [
|
||||
./systems/deimos
|
||||
./profiles/user0
|
||||
./profiles/user1
|
||||
./profiles/user2
|
||||
config.nixosModules.deimos
|
||||
config.nixosModules.core
|
||||
config.nixosModules.mantle
|
||||
|
@ -117,6 +131,15 @@
|
|||
inputs.nur.modules.nixos.default
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
];
|
||||
charon = inputs.self.lib.mkLinuxSystem [
|
||||
./systems/charon
|
||||
./profiles/user1
|
||||
config.nixosModules.charon
|
||||
config.nixosModules.core
|
||||
config.nixosModules.crust
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
inputs.lix-module.nixosModules.default
|
||||
];
|
||||
ceres = inputs.self.lib.mkLinuxSystem [
|
||||
./systems/ceres
|
||||
./profiles/user0
|
||||
|
|
|
@ -96,19 +96,19 @@ let
|
|||
|
||||
themesSubmodule = lib.types.submodule {
|
||||
options = {
|
||||
currentTheme = stringType;
|
||||
currentTheme = genOptions stringType "theme";
|
||||
windowManager = {
|
||||
gaps = intType;
|
||||
borders = intType;
|
||||
rounding = intType;
|
||||
};
|
||||
fonts = {
|
||||
name = stringType;
|
||||
names = genOptions stringType "name";
|
||||
sizes = {
|
||||
applications = intType;
|
||||
desktop = intType;
|
||||
popups = intType;
|
||||
terminal = intType;
|
||||
applications = genOptions intType "size";
|
||||
desktop = genOptions intType "size";
|
||||
popups = genOptions intType "size";
|
||||
terminal = genOptions intType "size";
|
||||
};
|
||||
};
|
||||
cursor = {
|
||||
|
|
20
modules/config/devices/config/charon.nix
Executable file
|
@ -0,0 +1,20 @@
|
|||
{ devicesFunctions }:
|
||||
let
|
||||
inherit (devicesFunctions)
|
||||
ownerExclusiveReadWriteMask
|
||||
charonIP
|
||||
;
|
||||
in
|
||||
{
|
||||
label = "Charon";
|
||||
name = "charon";
|
||||
sync = {
|
||||
address0 = "";
|
||||
};
|
||||
ip = {
|
||||
address0 = charonIP;
|
||||
};
|
||||
boot = {
|
||||
options = ownerExclusiveReadWriteMask;
|
||||
};
|
||||
}
|
|
@ -10,6 +10,7 @@ in
|
|||
label = dummy;
|
||||
sync = {
|
||||
address0 = "RMDKNJY-BTX6FYF-G6SR332-WS6HARI-PF74SC6-VPBSGRQ-MKVQZEQ-KSIB6QV"; # User0
|
||||
address1 = "RUKSHY4-UCBYRVG-CVYFCMU-M3NLA3Q-JINRF5V-YPR5W32-TEIBJN6-DNQRCAR"; # User2
|
||||
};
|
||||
ip = {
|
||||
address0 = phoneIP;
|
||||
|
|
|
@ -4,18 +4,23 @@ let
|
|||
sambaPermissions
|
||||
userIdForUser0
|
||||
userIdForUser1
|
||||
userIdForUser3
|
||||
synologyIP
|
||||
;
|
||||
|
||||
user0 = "nick";
|
||||
user1 = "streaming";
|
||||
user1 = "garnet";
|
||||
user3 = "streaming";
|
||||
user0Name = "Nick";
|
||||
user1Name = "Garnet";
|
||||
user3Name = "Streaming";
|
||||
synologyName = "synology";
|
||||
in
|
||||
{
|
||||
label = "Synology";
|
||||
sync = {
|
||||
address0 = "MWRGX2V-F5XKE5E-REP6ECT-OOPFBMF-22NHSMW-YFBU6MB-PLFUN63-R3MW2QX"; # User0
|
||||
address1 = ""; # User2
|
||||
};
|
||||
name = synologyName;
|
||||
ip = {
|
||||
|
@ -27,10 +32,22 @@ in
|
|||
device = "//${synologyIP}/homes/${user0Name}";
|
||||
options = sambaPermissions ++ userIdForUser0;
|
||||
};
|
||||
# Streaming Folder
|
||||
# Garnet Home Folder
|
||||
folder1 = {
|
||||
mount = "/mnt/media/${synologyName}/${user1}";
|
||||
device = "//${synologyIP}/homes/${user0Name}";
|
||||
device = "//${synologyIP}/homes/${user1Name}";
|
||||
options = sambaPermissions ++ userIdForUser1;
|
||||
};
|
||||
# Minecraft Worlds
|
||||
folder2 = {
|
||||
mount = "/home/${user1}/.local/share/PrismLauncher/instances/1.21/.minecraft/saves";
|
||||
device = "//${synologyIP}/homes/${user1Name}/Minecraft";
|
||||
options = sambaPermissions ++ userIdForUser1;
|
||||
};
|
||||
# Streaming Folder
|
||||
folder3 = {
|
||||
mount = "/mnt/media/${synologyName}/${user3}";
|
||||
device = "//${synologyIP}/homes/${user0Name}";
|
||||
options = sambaPermissions ++ userIdForUser3;
|
||||
};
|
||||
}
|
||||
|
|
33
modules/config/devices/config/venus.nix
Executable file
|
@ -0,0 +1,33 @@
|
|||
{ devicesFunctions }:
|
||||
let
|
||||
inherit (devicesFunctions)
|
||||
readWritePermissions
|
||||
venusIP
|
||||
;
|
||||
drivePath = "/run/media";
|
||||
byLabel = "/dev/disk/by-label";
|
||||
|
||||
in
|
||||
{
|
||||
label = "Venus";
|
||||
name = "venus";
|
||||
ip = {
|
||||
address0 = venusIP;
|
||||
};
|
||||
boot = {
|
||||
options = [
|
||||
"fmask=0022"
|
||||
"dmask=0022"
|
||||
];
|
||||
};
|
||||
storage0 = {
|
||||
mount = "${drivePath}/games";
|
||||
device = "${byLabel}/Games";
|
||||
options = readWritePermissions;
|
||||
};
|
||||
storage1 = {
|
||||
mount = "${drivePath}/entertainment";
|
||||
device = "${byLabel}/Entertainment";
|
||||
options = readWritePermissions;
|
||||
};
|
||||
}
|
|
@ -38,17 +38,22 @@ let
|
|||
"uid=1000"
|
||||
];
|
||||
userIdForUser1 = [
|
||||
"uid=1001"
|
||||
];
|
||||
userIdForUser3 = [
|
||||
"uid=1002"
|
||||
];
|
||||
dummy = [
|
||||
];
|
||||
ceresStorageDriveName = "NAS1";
|
||||
ceresIP = "192.168.50.140";
|
||||
charonIP = "192.168.50.42";
|
||||
deimosIP = "192.168.50.142";
|
||||
marsIP = "192.168.50.218";
|
||||
phoneIP = "192.168.50.243";
|
||||
phobosIP = "192.168.50.180";
|
||||
synologyIP = "192.168.50.210";
|
||||
venusIP = "192.168.58.104";
|
||||
brotherIP = "192.168.50.195";
|
||||
};
|
||||
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
let
|
||||
currentTheme0 = catppuccin-macchiato;
|
||||
currentTheme0 = catppuccin-macchiato; # User0 Theme
|
||||
currentTheme1 = catppuccin-mocha; # User1 Theme
|
||||
currentTheme2 = catppuccin-mocha; # User2 Theme
|
||||
|
||||
brogrammer = "brogrammer";
|
||||
catppuccin-frappe = "catppuccin-frappe";
|
||||
|
@ -27,18 +29,42 @@ in
|
|||
borders = 3;
|
||||
rounding = 20;
|
||||
};
|
||||
currentTheme = currentTheme0;
|
||||
currentTheme = {
|
||||
theme0 = currentTheme0; # User0 Theme
|
||||
theme1 = currentTheme1; # User1 Theme
|
||||
theme2 = currentTheme2; # User2 Theme
|
||||
};
|
||||
cursor = {
|
||||
name = "";
|
||||
size = 18;
|
||||
};
|
||||
fonts = {
|
||||
name = "MonaspiceRn Nerd Font";
|
||||
names = {
|
||||
name0 = "MonaspiceRn Nerd Font"; # User0 Font
|
||||
name1 = ""; # User1 Font
|
||||
name2 = ""; # User2 Font
|
||||
};
|
||||
sizes = {
|
||||
applications = 14;
|
||||
desktop = 12;
|
||||
popups = 10;
|
||||
terminal = 10;
|
||||
applications = {
|
||||
size0 = 14; # User0 Size
|
||||
size1 = 14; # User1 Size
|
||||
size2 = 14; # User2 Size
|
||||
};
|
||||
desktop = {
|
||||
size0 = 12; # User0 Size
|
||||
size1 = 12; # User1 Size
|
||||
size2 = 12; # User2 Size
|
||||
};
|
||||
popups = {
|
||||
size0 = 10; # User0 Size
|
||||
size1 = 10; # User1 Size
|
||||
size2 = 10; # User2 Size
|
||||
};
|
||||
terminal = {
|
||||
size0 = 10; # User0 Size
|
||||
size1 = 10; # User1 Size
|
||||
size2 = 10; # User2 Size
|
||||
};
|
||||
};
|
||||
};
|
||||
palettes =
|
||||
|
@ -65,6 +91,7 @@ in
|
|||
${one-dark} = import (palettePath + onePath + /dark);
|
||||
${one-light} = import (palettePath + onePath + /light);
|
||||
${sparky} = import (palettePath + /sparky);
|
||||
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -5,16 +5,11 @@ let
|
|||
;
|
||||
in
|
||||
{
|
||||
name = "Streaming";
|
||||
aliases = {
|
||||
};
|
||||
name = "Garnet";
|
||||
email = {
|
||||
address0 = "nick@upRootNutrition.com";
|
||||
address0 = "ninaeffler@gmail.com";
|
||||
};
|
||||
paths = {
|
||||
path0 = "/home/${user1}/Files/Projects"; # Git path
|
||||
};
|
||||
sshKeys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBF9TmImDoYDpsW5VMFbOcuK3aH4TWRtx/xGxT3yUtEN nick@desktop"
|
||||
];
|
||||
}
|
||||
|
|
19
modules/config/users/config/user2.nix
Executable file
|
@ -0,0 +1,19 @@
|
|||
{ user2 }:
|
||||
let
|
||||
inherit
|
||||
user2
|
||||
;
|
||||
in
|
||||
{
|
||||
name = "Stacie";
|
||||
email = {
|
||||
address0 = "staciesimonson@gmail.com";
|
||||
};
|
||||
paths = {
|
||||
path0 = "/home/${user2}"; # Git path
|
||||
};
|
||||
sshKeys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILQQDw0NigCC76G/GlHWIMunckaBmfgqbfJXFGWB+8fe stacie@desktop"
|
||||
];
|
||||
|
||||
}
|
20
modules/config/users/config/user3.nix
Executable file
|
@ -0,0 +1,20 @@
|
|||
{ user3 }:
|
||||
let
|
||||
inherit
|
||||
user3
|
||||
;
|
||||
in
|
||||
{
|
||||
name = "Streaming";
|
||||
aliases = {
|
||||
};
|
||||
email = {
|
||||
address0 = "nick@upRootNutrition.com";
|
||||
};
|
||||
paths = {
|
||||
path0 = "/home/${user3}/Files/Projects"; # Git path
|
||||
};
|
||||
sshKeys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBF9TmImDoYDpsW5VMFbOcuK3aH4TWRtx/xGxT3yUtEN nick@desktop"
|
||||
];
|
||||
}
|
|
@ -2,15 +2,21 @@ let
|
|||
configPath = ./config;
|
||||
|
||||
user0 = "nick";
|
||||
user1 = "streaming";
|
||||
user1 = "garnet";
|
||||
user2 = "fallaryn";
|
||||
user3 = "streaming";
|
||||
in
|
||||
{
|
||||
inherit
|
||||
user0
|
||||
user1
|
||||
user2
|
||||
user3
|
||||
;
|
||||
users = {
|
||||
"${user0}" = import (configPath + /user0.nix) { inherit user0; };
|
||||
"${user1}" = import (configPath + /user1.nix) { inherit user1; };
|
||||
"${user2}" = import (configPath + /user2.nix) { inherit user2; };
|
||||
"${user3}" = import (configPath + /user3.nix) { inherit user3; };
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
{
|
||||
flake,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
programs.yazi =
|
||||
let
|
||||
|
|
|
@ -7,11 +7,19 @@
|
|||
let
|
||||
inherit (flake.config.aesthetics.themes) currentTheme palettes;
|
||||
|
||||
inherit (flake.config.people) user0;
|
||||
inherit (flake.config.people) user0 user1 user2;
|
||||
|
||||
user = config.home.username;
|
||||
|
||||
themeLogic = if user == user0 then currentTheme else currentTheme;
|
||||
themeLogic =
|
||||
if user == user0 then
|
||||
currentTheme.theme0
|
||||
else if user == user1 then
|
||||
currentTheme.theme1
|
||||
else if user == user2 then
|
||||
currentTheme.theme2
|
||||
else
|
||||
currentTheme.theme0;
|
||||
|
||||
el = palettes.${themeLogic}.colours;
|
||||
|
||||
|
|
|
@ -9,11 +9,19 @@ let
|
|||
palettes
|
||||
;
|
||||
|
||||
inherit (flake.config.people) user0;
|
||||
inherit (flake.config.people) user0 user1 user2;
|
||||
|
||||
user = config.home.username;
|
||||
|
||||
themeLogic = if user == user0 then currentTheme else currentTheme;
|
||||
themeLogic =
|
||||
if user == user0 then
|
||||
currentTheme.theme0
|
||||
else if user == user1 then
|
||||
currentTheme.theme1
|
||||
else if user == user2 then
|
||||
currentTheme.theme2
|
||||
else
|
||||
currentTheme.theme0;
|
||||
|
||||
el = palettes.${themeLogic}.colours;
|
||||
in
|
||||
|
|
|
@ -7,7 +7,9 @@ in
|
|||
flake.homeModules =
|
||||
let
|
||||
inherit (config.machines.devices)
|
||||
charon
|
||||
mars
|
||||
venus
|
||||
deimos
|
||||
ceres
|
||||
phobos
|
||||
|
@ -15,6 +17,8 @@ in
|
|||
inherit (config.people)
|
||||
user0
|
||||
user1
|
||||
user2
|
||||
user3
|
||||
;
|
||||
in
|
||||
{
|
||||
|
@ -55,12 +59,13 @@ in
|
|||
systemMonitor
|
||||
usbImager
|
||||
virtManager
|
||||
# polychromatic
|
||||
espanso
|
||||
claudeCode
|
||||
zoom
|
||||
academic
|
||||
hypr
|
||||
niri
|
||||
# niri
|
||||
wayland
|
||||
theming
|
||||
printManager
|
||||
|
@ -72,6 +77,27 @@ in
|
|||
};
|
||||
};
|
||||
"${mars.name}-${user1}" = {
|
||||
imports = builtins.attrValues {
|
||||
inherit (modules)
|
||||
cli
|
||||
brave
|
||||
ghostty
|
||||
zed
|
||||
gaming
|
||||
spotify
|
||||
docs
|
||||
mpv
|
||||
kolourPaint
|
||||
discord
|
||||
signal
|
||||
scrcpy
|
||||
bitwarden
|
||||
emote
|
||||
desktop
|
||||
;
|
||||
};
|
||||
};
|
||||
"${mars.name}-${user3}" = {
|
||||
imports = builtins.attrValues {
|
||||
inherit (modules)
|
||||
cli
|
||||
|
@ -97,6 +123,35 @@ in
|
|||
;
|
||||
};
|
||||
};
|
||||
"${venus.name}-${user2}" = {
|
||||
imports = builtins.attrValues {
|
||||
inherit (modules)
|
||||
cli
|
||||
firefox
|
||||
brave
|
||||
code
|
||||
ghostty
|
||||
gaming
|
||||
spotify
|
||||
audioProduction
|
||||
wpsOffice
|
||||
obsidian
|
||||
okular
|
||||
images
|
||||
modeling
|
||||
obsStudio
|
||||
kdenlive
|
||||
videoPlaying
|
||||
discord
|
||||
signal
|
||||
tdesktop
|
||||
teams
|
||||
whatsApp
|
||||
zoom
|
||||
tools
|
||||
;
|
||||
};
|
||||
};
|
||||
"${deimos.name}-${user0}" = {
|
||||
imports = builtins.attrValues {
|
||||
inherit (modules)
|
||||
|
@ -140,6 +195,7 @@ in
|
|||
niri
|
||||
wayland
|
||||
theming
|
||||
# polychromatic
|
||||
dolphin
|
||||
espanso
|
||||
zotero
|
||||
|
@ -148,6 +204,55 @@ in
|
|||
;
|
||||
};
|
||||
};
|
||||
"${deimos.name}-${user1}" = {
|
||||
imports = builtins.attrValues {
|
||||
inherit (modules)
|
||||
cli
|
||||
brave
|
||||
ghostty
|
||||
zed
|
||||
gaming
|
||||
spotify
|
||||
docs
|
||||
mpv
|
||||
kolourPaint
|
||||
discord
|
||||
signal
|
||||
scrcpy
|
||||
bitwarden
|
||||
emote
|
||||
hypr
|
||||
wayland
|
||||
niri
|
||||
theming
|
||||
;
|
||||
};
|
||||
};
|
||||
"${deimos.name}-${user2}" = {
|
||||
imports = builtins.attrValues {
|
||||
inherit (modules)
|
||||
cli
|
||||
firefox
|
||||
brave
|
||||
code
|
||||
ghostty
|
||||
gaming
|
||||
spotify
|
||||
wpsOffice
|
||||
obsidian
|
||||
okular
|
||||
images
|
||||
videoPlaying
|
||||
discord
|
||||
signal
|
||||
niri
|
||||
hypr
|
||||
wayland
|
||||
theming
|
||||
tools
|
||||
;
|
||||
};
|
||||
};
|
||||
"${phobos.name}-${user0}" = {
|
||||
imports = builtins.attrValues {
|
||||
inherit (modules)
|
||||
|
@ -177,6 +282,30 @@ in
|
|||
;
|
||||
};
|
||||
};
|
||||
"${charon.name}-${user1}" = {
|
||||
imports = builtins.attrValues {
|
||||
inherit (modules)
|
||||
cli
|
||||
brave
|
||||
ghostty
|
||||
zed
|
||||
gaming
|
||||
spotify
|
||||
docs
|
||||
mpv
|
||||
jellyfin
|
||||
kolourPaint
|
||||
systemMonitor
|
||||
discord
|
||||
signal
|
||||
scrcpy
|
||||
bitwarden
|
||||
emote
|
||||
gnome
|
||||
theming
|
||||
;
|
||||
};
|
||||
};
|
||||
"${ceres.name}-${user0}" = {
|
||||
imports = builtins.attrValues {
|
||||
inherit (modules)
|
||||
|
|
|
@ -28,6 +28,12 @@ let
|
|||
"chat"
|
||||
"ai"
|
||||
];
|
||||
owncastTags = [
|
||||
instances.owncast.name
|
||||
"own"
|
||||
"cast"
|
||||
"stream"
|
||||
];
|
||||
syncthingTags = [
|
||||
instances.syncthing.name
|
||||
"sync"
|
||||
|
|
|
@ -24,10 +24,10 @@ in
|
|||
"workbench.statusBar.visible" = false;
|
||||
"editor.multiCursorLimit" = 700000;
|
||||
"editor.wordWrap" = "on";
|
||||
"editor.fontSize" = fonts.sizes.applications;
|
||||
"editor.fontFamily" = "'${fonts.name}', 'monospace', monospace";
|
||||
"terminal.integrated.fontSize" = fonts.sizes.applications;
|
||||
"terminal.integrated.fontFamily" = "'${fonts.name}', 'monospace', monospace";
|
||||
"editor.fontSize" = fonts.sizes.applications.size0;
|
||||
"editor.fontFamily" = "'${fonts.names.name0}', 'monospace', monospace";
|
||||
"terminal.integrated.fontSize" = fonts.sizes.applications.size0;
|
||||
"terminal.integrated.fontFamily" = "'${fonts.names.name0}', 'monospace', monospace";
|
||||
"editor.fontLigatures" = true;
|
||||
"elmLS.disableElmLSDiagnostics" = true;
|
||||
"elmLS.elmReviewDiagnostics" = "warning";
|
||||
|
|
|
@ -5,13 +5,13 @@ let
|
|||
;
|
||||
in
|
||||
{
|
||||
ui_font_family = fonts.name;
|
||||
buffer_font_family = fonts.name;
|
||||
ui_font_family = fonts.names.name0;
|
||||
buffer_font_family = fonts.names.name0;
|
||||
hour_format = "hour12";
|
||||
vim_mode = false;
|
||||
show_whitespaces = "none";
|
||||
ui_font_size = fonts.sizes.applications;
|
||||
buffer_font_size = fonts.sizes.applications;
|
||||
ui_font_size = fonts.sizes.applications.size0;
|
||||
buffer_font_size = fonts.sizes.applications.size0;
|
||||
tab_size = 2;
|
||||
cursor_blink = true;
|
||||
theme = "Catppuccin Macchiato";
|
||||
|
|
|
@ -25,9 +25,9 @@ in
|
|||
TERM = "ghostty";
|
||||
};
|
||||
|
||||
font_family = fonts.name;
|
||||
font_family = fonts.names.name0;
|
||||
font_features = null;
|
||||
font_size = fonts.sizes.terminal;
|
||||
font_size = fonts.sizes.terminal.size0;
|
||||
line_height = "comfortable";
|
||||
option_as_meta = false;
|
||||
button = false;
|
||||
|
|
816
modules/home/gui/apps/code/zed/config/userSettings/config/theme/default.nix
Executable file
|
@ -0,0 +1,816 @@
|
|||
{
|
||||
config,
|
||||
flake,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (flake.config.aesthetics.themes) currentTheme palettes;
|
||||
|
||||
inherit (flake.config.people) user0 user1 user2;
|
||||
|
||||
user = config.home.username;
|
||||
|
||||
themeLogic =
|
||||
if user == user0 then
|
||||
currentTheme.theme0
|
||||
else if user == user1 then
|
||||
currentTheme.theme1
|
||||
else if user == user2 then
|
||||
currentTheme.theme2
|
||||
else
|
||||
currentTheme.theme0;
|
||||
|
||||
el = palettes.${themeLogic}.colours;
|
||||
in
|
||||
{
|
||||
accents = [
|
||||
"${el.base0E}66"
|
||||
"${el.base07}66"
|
||||
"${el.base16}66"
|
||||
"${el.base0B}66"
|
||||
"${el.base0A}66"
|
||||
"${el.base09}66"
|
||||
"${el.base08}66"
|
||||
];
|
||||
|
||||
border = {
|
||||
value = "#${el.base02}";
|
||||
variant = "#${el.base0E}";
|
||||
focused = "#${el.base07}";
|
||||
selected = "#${el.base0E}";
|
||||
transparent = "#${el.base0B}";
|
||||
disabled = "#${el.base03}";
|
||||
};
|
||||
|
||||
elevated_surface.background = "#${el.base01}";
|
||||
surface.background = "#${el.base01}";
|
||||
background = {
|
||||
value = "#${el.base00}";
|
||||
appearance = "opaque";
|
||||
};
|
||||
element = {
|
||||
background = "#${el.base11}";
|
||||
hover = "#${el.base03}4d";
|
||||
active = "#${el.base04}4d";
|
||||
selected = "#${el.base02}4d";
|
||||
disabled = "#${el.base03}";
|
||||
};
|
||||
|
||||
drop_target.background = "#${el.base02}66";
|
||||
ghost_element = {
|
||||
background = "#${el.base11}59";
|
||||
hover = "#${el.base03}4d";
|
||||
active = "#${el.base04}99";
|
||||
selected = "#${el.base05}1a";
|
||||
disabled = "#${el.base03}";
|
||||
};
|
||||
|
||||
text = {
|
||||
value = "#${el.base05}";
|
||||
muted = "#${el.base05}";
|
||||
placeholder = "#${el.base04}";
|
||||
disabled = "#${el.base03}";
|
||||
accent = "#${el.base0E}";
|
||||
};
|
||||
|
||||
icon = {
|
||||
value = "#${el.base05}";
|
||||
muted = "#${el.base04}";
|
||||
disabled = "#${el.base03}";
|
||||
placeholder = "#${el.base04}";
|
||||
accent = "#${el.base0E}";
|
||||
};
|
||||
|
||||
status_bar.background = "#${el.base11}";
|
||||
title_bar = {
|
||||
background = "#${el.base11}";
|
||||
inactive_background = "#${el.base11}d9";
|
||||
};
|
||||
toolbar.background = "#${el.base00}";
|
||||
tab_bar.background = "#${el.base11}";
|
||||
tab = {
|
||||
inactive_background = "#${el.base11}";
|
||||
active_background = "#${el.base00}";
|
||||
};
|
||||
|
||||
search.match_background = "#${el.base0C}33";
|
||||
panel = {
|
||||
background = "#${el.base01}";
|
||||
focused_border = "#${el.base05}";
|
||||
indent_guide = "#${el.base02}99";
|
||||
indent_guide_active = "#${el.base04}";
|
||||
indent_guide_hover = "#${el.base0E}";
|
||||
};
|
||||
|
||||
pane.focused_border = "#${el.base05}";
|
||||
pane_group.border = "#${el.base02}";
|
||||
|
||||
scrollbar = {
|
||||
thumb = {
|
||||
background = "#${el.base0E}33";
|
||||
hover_background = "#${el.base03}";
|
||||
border = "#${el.base0E}";
|
||||
scrollbar.track.background = null;
|
||||
};
|
||||
track.border = "#${el.base05}12";
|
||||
};
|
||||
|
||||
editor = {
|
||||
foreground = "#${el.base05}";
|
||||
background = "#${el.base00}";
|
||||
gutter.background = "#${el.base00}";
|
||||
subheader.background = "#${el.base01}";
|
||||
active_line.background = "#${el.base05}0d";
|
||||
highlighted_line.background = null;
|
||||
line_number = "#${el.base04}";
|
||||
active_line_number = "#${el.base0E}";
|
||||
invisible = "#${el.base05}66";
|
||||
wrap_guide = "#${el.base04}";
|
||||
active_wrap_guide = "#${el.base04}";
|
||||
document_highlight = {
|
||||
bracket_background = "#${el.base06}40";
|
||||
read_background = "#${el.base05}29";
|
||||
write_background = "#${el.base05}29";
|
||||
};
|
||||
indent_guide = "#${el.base02}99";
|
||||
indent_guide_active = "#${el.base04}";
|
||||
};
|
||||
|
||||
terminal = {
|
||||
background = "#${el.base00}";
|
||||
ansi.background = "#${el.base00}";
|
||||
foreground = "#${el.base05}";
|
||||
dim_foreground = "#${el.base04}";
|
||||
bright_foreground = "#${el.base05}";
|
||||
};
|
||||
|
||||
link_text.hover = "#${el.base15}";
|
||||
|
||||
conflict = {
|
||||
value = "#${el.base0A}";
|
||||
border = "#${el.base0A}";
|
||||
background = "#${el.base01}";
|
||||
};
|
||||
|
||||
created = {
|
||||
value = "#${el.base0B}";
|
||||
border = "#${el.base0B}";
|
||||
background = "#${el.base01}";
|
||||
};
|
||||
|
||||
deleted = {
|
||||
value = "#${el.base08}";
|
||||
border = "#${el.base08}";
|
||||
background = "#${el.base01}";
|
||||
};
|
||||
|
||||
hidden = {
|
||||
value = "#${el.base03}";
|
||||
border = "#${el.base03}";
|
||||
background = "#${el.base01}";
|
||||
};
|
||||
|
||||
hint = {
|
||||
value = "#${el.base04}";
|
||||
border = "#${el.base04}";
|
||||
background = "#${el.base01}";
|
||||
};
|
||||
|
||||
ignored = {
|
||||
value = "#${el.base03}";
|
||||
border = "#${el.base03}";
|
||||
background = "#${el.base01}";
|
||||
};
|
||||
|
||||
modified = {
|
||||
value = "#${el.base0A}";
|
||||
border = "#${el.base0A}";
|
||||
background = "#${el.base01}";
|
||||
};
|
||||
|
||||
predictive = {
|
||||
value = "#${el.base03}";
|
||||
border = "#${el.base07}";
|
||||
background = "#${el.base01}";
|
||||
};
|
||||
|
||||
renamed = {
|
||||
value = "#${el.base16}";
|
||||
border = "#${el.base16}";
|
||||
background = "#${el.base01}";
|
||||
};
|
||||
|
||||
info = {
|
||||
value = "#${el.base0C}";
|
||||
border = "#${el.base0C}";
|
||||
background = "#${el.base05}33";
|
||||
};
|
||||
|
||||
warning = {
|
||||
value = "#${el.base0A}";
|
||||
border = "#${el.base0A}";
|
||||
background = "#${el.base0A}1f";
|
||||
};
|
||||
|
||||
error = {
|
||||
value = "#${el.base08}";
|
||||
border = "#${el.base08}";
|
||||
background = "#${el.base08}1f";
|
||||
};
|
||||
|
||||
success = {
|
||||
value = "#${el.base0B}";
|
||||
border = "#${el.base0B}";
|
||||
background = "#${el.base0B}1f";
|
||||
};
|
||||
|
||||
unreachable = {
|
||||
value = "#${el.base08}";
|
||||
border = "#${el.base08}";
|
||||
background = "#${el.base08}1f";
|
||||
};
|
||||
|
||||
players = [
|
||||
{
|
||||
cursor = "#${el.base06}";
|
||||
selection = "#${el.base04}80";
|
||||
background = "#${el.base06}";
|
||||
}
|
||||
{
|
||||
cursor = "#${el.base0E}";
|
||||
selection = "#${el.base0E}33";
|
||||
background = "#${el.base0E}";
|
||||
}
|
||||
{
|
||||
cursor = "#${el.base07}";
|
||||
selection = "#${el.base07}33";
|
||||
background = "#${el.base07}";
|
||||
}
|
||||
{
|
||||
cursor = "#${el.base16}";
|
||||
selection = "#${el.base16}33";
|
||||
background = "#${el.base16}";
|
||||
}
|
||||
{
|
||||
cursor = "#${el.base0B}";
|
||||
selection = "#${el.base0B}33";
|
||||
background = "#${el.base0B}";
|
||||
}
|
||||
{
|
||||
cursor = "#${el.base0A}";
|
||||
selection = "#${el.base0A}33";
|
||||
background = "#${el.base0A}";
|
||||
}
|
||||
{
|
||||
cursor = "#${el.base09}";
|
||||
selection = "#${el.base09}33";
|
||||
background = "#${el.base09}";
|
||||
}
|
||||
{
|
||||
cursor = "#${el.base08}";
|
||||
selection = "#${el.base08}33";
|
||||
background = "#${el.base08}";
|
||||
}
|
||||
];
|
||||
|
||||
syntax = {
|
||||
variable = {
|
||||
color = "#${el.base05}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
variable.builtin = {
|
||||
color = "#${el.base08}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
variable.parameter = {
|
||||
color = "#${el.base12}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
variable.member = {
|
||||
color = "#${el.base0D}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
variable.special = {
|
||||
color = "#${el.base17}";
|
||||
font_style = "italic";
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
constant = {
|
||||
color = "#${el.base09}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
constant.builtin = {
|
||||
color = "#${el.base09}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
constant.macro = {
|
||||
color = "#${el.base0E}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
module = {
|
||||
color = "#${el.base0A}";
|
||||
font_style = "italic";
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
label = {
|
||||
color = "#${el.base16}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
string = {
|
||||
color = "#${el.base0B}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
string.documentation = {
|
||||
color = "#${el.base0C}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
string.regexp = {
|
||||
color = "#${el.base09}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
string.escape = {
|
||||
color = "#${el.base17}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
string.special = {
|
||||
color = "#${el.base17}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
string.special.path = {
|
||||
color = "#${el.base17}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
string.special.symbol = {
|
||||
color = "#${el.base0F}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
string.special.url = {
|
||||
color = "#${el.base06}";
|
||||
font_style = "italic";
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
character = {
|
||||
color = "#${el.base0C}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
character.special = {
|
||||
color = "#${el.base17}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
boolean = {
|
||||
color = "#${el.base09}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
number = {
|
||||
color = "#${el.base09}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
number.float = {
|
||||
color = "#${el.base09}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
type = {
|
||||
color = "#${el.base0A}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
type.builtin = {
|
||||
color = "#${el.base0E}";
|
||||
font_style = "italic";
|
||||
font_weight = null;
|
||||
};
|
||||
type.definition = {
|
||||
color = "#${el.base0A}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
type.interface = {
|
||||
color = "#${el.base0A}";
|
||||
font_style = "italic";
|
||||
font_weight = null;
|
||||
};
|
||||
type.super = {
|
||||
color = "#${el.base0A}";
|
||||
font_style = "italic";
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
attribute = {
|
||||
color = "#${el.base09}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
property = {
|
||||
color = "#${el.base0D}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
function = {
|
||||
color = "#${el.base0D}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
function.builtin = {
|
||||
color = "#${el.base09}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
function.call = {
|
||||
color = "#${el.base0D}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
function.macro = {
|
||||
color = "#${el.base0C}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
function.method = {
|
||||
color = "#${el.base0D}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
function.method.call = {
|
||||
color = "#${el.base0D}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
constructor = {
|
||||
color = "#${el.base0F}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
operator = {
|
||||
color = "#${el.base15}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
keyword = {
|
||||
color = "#${el.base0E}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
keyword.modifier = {
|
||||
color = "#${el.base0E}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
keyword.type = {
|
||||
color = "#${el.base0E}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
keyword.coroutine = {
|
||||
color = "#${el.base0E}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
keyword.function = {
|
||||
color = "#${el.base0E}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
keyword.operator = {
|
||||
color = "#${el.base0E}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
keyword.import = {
|
||||
color = "#${el.base0E}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
keyword.repeat = {
|
||||
color = "#${el.base0E}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
keyword.return = {
|
||||
color = "#${el.base0E}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
keyword.debug = {
|
||||
color = "#${el.base0E}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
keyword.exception = {
|
||||
color = "#${el.base0E}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
keyword.conditional = {
|
||||
color = "#${el.base0E}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
keyword.conditional.ternary = {
|
||||
color = "#${el.base0E}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
keyword.directive = {
|
||||
color = "#${el.base17}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
keyword.directive.define = {
|
||||
color = "#${el.base17}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
keyword.export = {
|
||||
color = "#${el.base15}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
punctuation = {
|
||||
color = "#${el.base05}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
punctuation.delimiter = {
|
||||
color = "#${el.base05}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
punctuation.bracket = {
|
||||
color = "#${el.base05}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
punctuation.special = {
|
||||
color = "#${el.base17}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
punctuation.special.symbol = {
|
||||
color = "#${el.base0F}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
punctuation.list_marker = {
|
||||
color = "#${el.base0C}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
comment = {
|
||||
color = "#${el.base05}";
|
||||
font_style = "italic";
|
||||
font_weight = null;
|
||||
};
|
||||
comment.doc = {
|
||||
color = "#${el.base05}";
|
||||
font_style = "italic";
|
||||
font_weight = null;
|
||||
};
|
||||
comment.documentation = {
|
||||
color = "#${el.base05}";
|
||||
font_style = "italic";
|
||||
font_weight = null;
|
||||
};
|
||||
comment.error = {
|
||||
color = "#${el.base08}";
|
||||
font_style = "italic";
|
||||
font_weight = null;
|
||||
};
|
||||
comment.warning = {
|
||||
color = "#${el.base0A}";
|
||||
font_style = "italic";
|
||||
font_weight = null;
|
||||
};
|
||||
comment.hint = {
|
||||
color = "#${el.base0D}";
|
||||
font_style = "italic";
|
||||
font_weight = null;
|
||||
};
|
||||
comment.todo = {
|
||||
color = "#${el.base0F}";
|
||||
font_style = "italic";
|
||||
font_weight = null;
|
||||
};
|
||||
comment.note = {
|
||||
color = "#${el.base06}";
|
||||
font_style = "italic";
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
diff.plus = {
|
||||
color = "#${el.base0B}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
diff.minus = {
|
||||
color = "#${el.base08}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
tag = {
|
||||
color = "#${el.base0D}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
tag.attribute = {
|
||||
color = "#${el.base0A}";
|
||||
font_style = "italic";
|
||||
font_weight = null;
|
||||
};
|
||||
tag.delimiter = {
|
||||
color = "#${el.base0C}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
parameter = {
|
||||
color = "#${el.base12}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
field = {
|
||||
color = "#${el.base07}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
namespace = {
|
||||
color = "#${el.base0A}";
|
||||
font_style = "italic";
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
float = {
|
||||
color = "#${el.base09}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
symbol = {
|
||||
color = "#${el.base17}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
string.regex = {
|
||||
color = "#${el.base09}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
text = {
|
||||
color = "#${el.base05}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
emphasis.strong = {
|
||||
color = "#${el.base12}";
|
||||
font_style = null;
|
||||
font_weight = 700;
|
||||
};
|
||||
|
||||
emphasis = {
|
||||
color = "#${el.base12}";
|
||||
font_style = "italic";
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
embedded = {
|
||||
color = "#${el.base12}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
text.literal = {
|
||||
color = "#${el.base0B}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
concept = {
|
||||
color = "#${el.base16}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
enum = {
|
||||
color = "#${el.base0C}";
|
||||
font_style = null;
|
||||
font_weight = 700;
|
||||
};
|
||||
|
||||
function.decorator = {
|
||||
color = "#${el.base09}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
type.class.definition = {
|
||||
color = "#${el.base0A}";
|
||||
font_style = null;
|
||||
font_weight = 700;
|
||||
};
|
||||
|
||||
hint = {
|
||||
color = "#${el.base04}";
|
||||
font_style = "italic";
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
link_text = {
|
||||
color = "#${el.base0D}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
link_uri = {
|
||||
color = "#${el.base06}";
|
||||
font_style = "italic";
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
parent = {
|
||||
color = "#${el.base09}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
predictive = {
|
||||
color = "#${el.base03}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
predoc = {
|
||||
color = "#${el.base08}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
primary = {
|
||||
color = "#${el.base12}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
tag.doctype = {
|
||||
color = "#${el.base0E}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
string.doc = {
|
||||
color = "#${el.base0C}";
|
||||
font_style = "italic";
|
||||
font_weight = null;
|
||||
};
|
||||
|
||||
title = {
|
||||
color = "#${el.base05}";
|
||||
font_style = null;
|
||||
font_weight = 800;
|
||||
};
|
||||
|
||||
variant = {
|
||||
color = "#${el.base08}";
|
||||
font_style = null;
|
||||
font_weight = null;
|
||||
};
|
||||
};
|
||||
|
||||
}
|
|
@ -11,6 +11,7 @@ let
|
|||
languagesPath = import (configPath + /languages);
|
||||
lspPath = import (configPath + /lsp);
|
||||
terminalPath = import (configPath + /terminal) { inherit flake; };
|
||||
# experimentalPath = import (configPath + /theme) { inherit config flake; };
|
||||
gitPath = import (configPath + /git);
|
||||
miscPath = import (configPath + /misc) { inherit lib pkgs; };
|
||||
in
|
||||
|
@ -19,6 +20,7 @@ in
|
|||
languages = languagesPath;
|
||||
lsp = lspPath;
|
||||
terminal = terminalPath;
|
||||
# experimental.theme_overrides = experimentalPath;
|
||||
|
||||
}
|
||||
// assistantPath
|
||||
|
|
|
@ -18,7 +18,7 @@ let
|
|||
;
|
||||
};
|
||||
extraPackagesPath = import (configPath + /extraPackages) { inherit pkgs; };
|
||||
# packagePath = flake.inputs.zed-editor.packages.${pkgs.system}.default;
|
||||
packagePath = flake.inputs.zed-editor.packages.${pkgs.system}.default;
|
||||
in
|
||||
{
|
||||
programs.zed-editor = {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
{
|
||||
flake,
|
||||
osConfig,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
@ -9,8 +10,8 @@ in
|
|||
{
|
||||
confirm-close-surface = false;
|
||||
window-decoration = true;
|
||||
font-size = fonts.sizes.terminal;
|
||||
font-family = fonts.name;
|
||||
font-size = fonts.sizes.terminal.size0;
|
||||
font-family = fonts.names.name0;
|
||||
window-padding-x = 10;
|
||||
window-padding-y = 10;
|
||||
copy-on-select = true;
|
||||
|
|
|
@ -6,11 +6,19 @@
|
|||
let
|
||||
inherit (flake.config.aesthetics.themes) currentTheme palettes;
|
||||
|
||||
inherit (flake.config.people) user0;
|
||||
inherit (flake.config.people) user0 user1 user2;
|
||||
|
||||
user = config.home.username;
|
||||
|
||||
themeLogic = if user == user0 then currentTheme else currentTheme;
|
||||
themeLogic =
|
||||
if user == user0 then
|
||||
currentTheme.theme0
|
||||
else if user == user1 then
|
||||
currentTheme.theme1
|
||||
else if user == user2 then
|
||||
currentTheme.theme2
|
||||
else
|
||||
currentTheme.theme0;
|
||||
|
||||
el = palettes.${themeLogic}.colours;
|
||||
in
|
||||
|
|
|
@ -11,8 +11,8 @@ in
|
|||
programs.kitty = {
|
||||
enable = true;
|
||||
font = {
|
||||
name = fonts.name;
|
||||
size = fonts.sizes.terminal;
|
||||
name = fonts.names.name0;
|
||||
size = fonts.sizes.terminal.size0;
|
||||
};
|
||||
themeFile = "Catppuccin-Macchiato";
|
||||
};
|
||||
|
|
|
@ -7,8 +7,8 @@ in
|
|||
''
|
||||
return {
|
||||
color_scheme = "Catppuccin Macchiato",
|
||||
font_size = ${builtins.toString fonts.sizes.terminal},
|
||||
font = wezterm.font('${fonts.name}'),
|
||||
font_size = ${builtins.toString fonts.sizes.terminal.size0},
|
||||
font = wezterm.font('${fonts.names.name0}'),
|
||||
enable_tab_bar = false,
|
||||
window_close_confirmation = 'NeverPrompt',
|
||||
term = 'wezterm',
|
||||
|
|
|
@ -28,8 +28,8 @@ in
|
|||
};
|
||||
};
|
||||
home.packages = builtins.attrValues {
|
||||
# inherit (pkgs)
|
||||
# # flameshot
|
||||
# ;
|
||||
inherit (pkgs)
|
||||
# flameshot
|
||||
;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -11,11 +11,19 @@ let
|
|||
windowManager
|
||||
;
|
||||
|
||||
inherit (flake.config.people) user0;
|
||||
inherit (flake.config.people) user0 user1 user2;
|
||||
|
||||
user = config.home.username;
|
||||
|
||||
themeLogic = if user == user0 then currentTheme else currentTheme;
|
||||
themeLogic =
|
||||
if user == user0 then
|
||||
currentTheme.theme0
|
||||
else if user == user1 then
|
||||
currentTheme.theme1
|
||||
else if user == user2 then
|
||||
currentTheme.theme2
|
||||
else
|
||||
currentTheme.theme0;
|
||||
|
||||
el = palettes.${themeLogic}.colours;
|
||||
in
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
config,
|
||||
flake,
|
||||
osConfig,
|
||||
workspaceStrings,
|
||||
...
|
||||
}:
|
||||
let
|
||||
|
|
|
@ -10,12 +10,20 @@ let
|
|||
|
||||
inherit (flake.config.aesthetics.themes) currentTheme palettes;
|
||||
|
||||
inherit (flake.config.people) user0;
|
||||
inherit (flake.config.people) user0 user1 user2;
|
||||
|
||||
user = config.home.username;
|
||||
|
||||
colourHelpers = {
|
||||
themeLogic = if user == user0 then currentTheme else currentTheme;
|
||||
themeLogic =
|
||||
if user == user0 then
|
||||
currentTheme.theme0
|
||||
else if user == user1 then
|
||||
currentTheme.theme1
|
||||
else if user == user2 then
|
||||
currentTheme.theme2
|
||||
else
|
||||
currentTheme.theme0;
|
||||
|
||||
el = palettes.${colourHelpers.themeLogic}.colours;
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
...
|
||||
}:
|
||||
let
|
||||
inherit (flake.config.aesthetics.themes) cursor;
|
||||
configPath = ./config;
|
||||
settingsPath = {
|
||||
spawn = import (configPath + /spawn.nix) { inherit config flake; };
|
||||
|
|
|
@ -11,11 +11,19 @@ let
|
|||
fonts
|
||||
;
|
||||
|
||||
inherit (flake.config.people) user0;
|
||||
inherit (flake.config.people) user0 user1 user2;
|
||||
|
||||
user = config.home.username;
|
||||
|
||||
themeLogic = if user == user0 then currentTheme else currentTheme;
|
||||
themeLogic =
|
||||
if user == user0 then
|
||||
currentTheme.theme0
|
||||
else if user == user1 then
|
||||
currentTheme.theme1
|
||||
else if user == user2 then
|
||||
currentTheme.theme2
|
||||
else
|
||||
currentTheme.theme0;
|
||||
|
||||
el = palettes.${themeLogic}.colours;
|
||||
|
||||
|
@ -23,7 +31,7 @@ let
|
|||
in
|
||||
{
|
||||
global = {
|
||||
font = "${fonts.name} ${builtins.toString fonts.sizes.popups}";
|
||||
font = "${fonts.names.name0} ${builtins.toString fonts.sizes.popups.size0}";
|
||||
background = makeColor el.base01;
|
||||
frame_color = makeColor el.base0E;
|
||||
foreground = makeColor el.base05;
|
||||
|
|
|
@ -8,11 +8,19 @@ let
|
|||
|
||||
inherit (flake.config.aesthetics.themes) currentTheme palettes fonts;
|
||||
|
||||
inherit (flake.config.people) user0;
|
||||
inherit (flake.config.people) user0 user1 user2;
|
||||
|
||||
user = config.home.username;
|
||||
|
||||
themeLogic = if user == user0 then currentTheme else currentTheme;
|
||||
themeLogic =
|
||||
if user == user0 then
|
||||
currentTheme.theme0
|
||||
else if user == user1 then
|
||||
currentTheme.theme1
|
||||
else if user == user2 then
|
||||
currentTheme.theme2
|
||||
else
|
||||
currentTheme.theme0;
|
||||
|
||||
el = palettes.${themeLogic}.colours;
|
||||
|
||||
|
@ -27,7 +35,7 @@ in
|
|||
dpi-aware = "no";
|
||||
icon-theme = "Papirus-Dark";
|
||||
width = 25;
|
||||
font = "${fonts.name}:weight=bold:size=${toString fonts.sizes.popups}";
|
||||
font = "${fonts.names.name0}:weight=bold:size=${toString fonts.sizes.desktop.size0}";
|
||||
terminal = "${pkgs.ghostty}/bin/ghostty";
|
||||
layer = "overlay";
|
||||
fields = "name";
|
||||
|
|
|
@ -10,17 +10,25 @@ let
|
|||
fonts
|
||||
;
|
||||
|
||||
inherit (flake.config.people) user0;
|
||||
inherit (flake.config.people) user0 user1 user2;
|
||||
|
||||
user = config.home.username;
|
||||
|
||||
themeLogic = if user == user0 then currentTheme else currentTheme;
|
||||
themeLogic =
|
||||
if user == user0 then
|
||||
currentTheme.theme0
|
||||
else if user == user1 then
|
||||
currentTheme.theme1
|
||||
else if user == user2 then
|
||||
currentTheme.theme2
|
||||
else
|
||||
currentTheme.theme0;
|
||||
|
||||
el = palettes.${themeLogic}.colours;
|
||||
in
|
||||
{
|
||||
font = fonts.name;
|
||||
font-size = fonts.sizes.popups;
|
||||
font = fonts.names.name0;
|
||||
font-size = fonts.sizes.desktop.size0;
|
||||
indicator-idle-visible = true;
|
||||
indicator-radius = 100;
|
||||
indicator-thickness = 20;
|
||||
|
|
|
@ -12,17 +12,25 @@ let
|
|||
windowManager
|
||||
;
|
||||
|
||||
inherit (flake.config.people) user0;
|
||||
inherit (flake.config.people) user0 user1 user2;
|
||||
|
||||
user = config.home.username;
|
||||
|
||||
themeLogic = if user == user0 then currentTheme else currentTheme;
|
||||
themeLogic =
|
||||
if user == user0 then
|
||||
currentTheme.theme0
|
||||
else if user == user1 then
|
||||
currentTheme.theme1
|
||||
else if user == user2 then
|
||||
currentTheme.theme2
|
||||
else
|
||||
currentTheme.theme0;
|
||||
|
||||
el = palettes.${themeLogic}.colours;
|
||||
|
||||
custom = {
|
||||
font = fonts.name;
|
||||
font_size = fonts.sizes.popups;
|
||||
font = fonts.names.name0;
|
||||
font_size = fonts.sizes.desktop.size0;
|
||||
font_weight = "bold";
|
||||
opacityBg = "0.90";
|
||||
opacityBt = "1";
|
||||
|
|
|
@ -1,9 +1,44 @@
|
|||
{ flake, ... }:
|
||||
{
|
||||
flake,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (flake.config.people)
|
||||
user0
|
||||
user1
|
||||
user2
|
||||
user3
|
||||
;
|
||||
inherit (flake.config.machines)
|
||||
devices
|
||||
;
|
||||
hostname = config.networking.hostName;
|
||||
mars = devices.mars.name;
|
||||
ceres = devices.ceres.name;
|
||||
venus = devices.venus.name;
|
||||
charon = devices.charon.name;
|
||||
deimos = devices.deimos.name;
|
||||
|
||||
userLogic =
|
||||
if
|
||||
builtins.elem hostname [
|
||||
mars
|
||||
deimos
|
||||
ceres
|
||||
]
|
||||
then
|
||||
[
|
||||
user0
|
||||
user1
|
||||
user3
|
||||
]
|
||||
else if hostname == charon then
|
||||
[ user1 ]
|
||||
else if hostname == venus then
|
||||
[ user2 ]
|
||||
else
|
||||
[ ];
|
||||
in
|
||||
{
|
||||
security = {
|
||||
|
@ -13,10 +48,7 @@ in
|
|||
{
|
||||
keepEnv = true;
|
||||
noPass = true;
|
||||
users = [
|
||||
user0
|
||||
user1
|
||||
];
|
||||
users = userLogic;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
environment = {
|
||||
enableAllTerminfo = true;
|
||||
|
|
|
@ -14,13 +14,13 @@ in
|
|||
enable = true;
|
||||
defaultFonts = {
|
||||
serif = [
|
||||
fonts.name
|
||||
fonts.names.name0
|
||||
];
|
||||
monospace = [
|
||||
fonts.name
|
||||
fonts.names.name0
|
||||
];
|
||||
sansSerif = [
|
||||
fonts.name
|
||||
fonts.names.name0
|
||||
];
|
||||
emoji = [
|
||||
"Noto Fonts Color Emoji"
|
||||
|
|
|
@ -4,38 +4,55 @@
|
|||
...
|
||||
}:
|
||||
let
|
||||
inherit (flake.config.people) user0 user1;
|
||||
inherit (flake.config.machines) devices;
|
||||
inherit (flake.config.people)
|
||||
user0
|
||||
user1
|
||||
user2
|
||||
user3
|
||||
;
|
||||
inherit (flake.config.machines)
|
||||
devices
|
||||
;
|
||||
hostname = config.networking.hostName;
|
||||
mars = devices.mars.name;
|
||||
deimos = devices.deimos.name;
|
||||
ceres = devices.ceres.name;
|
||||
venus = devices.venus.name;
|
||||
charon = devices.charon.name;
|
||||
|
||||
# Helper function to get SSH keys for a specific user
|
||||
getUserKeys = user: flake.config.people.users.${user}.sshKeys;
|
||||
|
||||
user0Key = {
|
||||
${user0} = {
|
||||
openssh.authorizedKeys.keys = getUserKeys user0;
|
||||
};
|
||||
};
|
||||
user1Key = {
|
||||
${user1} = {
|
||||
openssh.authorizedKeys.keys = getUserKeys user1;
|
||||
};
|
||||
};
|
||||
|
||||
in
|
||||
{
|
||||
users.users =
|
||||
if hostname == mars then
|
||||
user0Key // user1Key
|
||||
if hostname == charon then
|
||||
{ }
|
||||
else if hostname == mars then
|
||||
{
|
||||
${user0} = {
|
||||
openssh.authorizedKeys.keys = getUserKeys user0;
|
||||
};
|
||||
${user3} = {
|
||||
openssh.authorizedKeys.keys = getUserKeys user3;
|
||||
};
|
||||
}
|
||||
else if
|
||||
builtins.elem hostname [
|
||||
deimos
|
||||
ceres
|
||||
]
|
||||
then
|
||||
user0Key
|
||||
{
|
||||
${user0} = {
|
||||
openssh.authorizedKeys.keys = getUserKeys user0;
|
||||
};
|
||||
}
|
||||
else if hostname == venus then
|
||||
{
|
||||
${user2} = {
|
||||
openssh.authorizedKeys.keys = getUserKeys user2;
|
||||
};
|
||||
}
|
||||
else
|
||||
{ };
|
||||
}
|
||||
|
|
|
@ -17,12 +17,23 @@ in
|
|||
niri
|
||||
wayland
|
||||
searx
|
||||
xserver
|
||||
flatpak
|
||||
wireGuard
|
||||
;
|
||||
};
|
||||
};
|
||||
|
||||
venus = {
|
||||
imports = builtins.attrValues {
|
||||
inherit (modules)
|
||||
plasma
|
||||
sddm
|
||||
tablet
|
||||
;
|
||||
};
|
||||
};
|
||||
|
||||
deimos = {
|
||||
imports = builtins.attrValues {
|
||||
inherit (modules)
|
||||
|
@ -32,6 +43,7 @@ in
|
|||
plasma
|
||||
sddm
|
||||
flatpak
|
||||
xserver
|
||||
espanso
|
||||
wireGuard
|
||||
glance
|
||||
|
@ -44,11 +56,22 @@ in
|
|||
inherit (modules)
|
||||
plasma
|
||||
sddm
|
||||
xserver
|
||||
wireGuard
|
||||
;
|
||||
};
|
||||
};
|
||||
|
||||
charon = {
|
||||
imports = builtins.attrValues {
|
||||
inherit (modules)
|
||||
gnome
|
||||
flatpak
|
||||
xserver
|
||||
;
|
||||
};
|
||||
};
|
||||
|
||||
ceres = {
|
||||
imports = builtins.attrValues {
|
||||
inherit (modules)
|
||||
|
@ -66,6 +89,9 @@ in
|
|||
searx
|
||||
vaultwarden
|
||||
forgejo
|
||||
xserver
|
||||
# podgrab
|
||||
# kanboard
|
||||
;
|
||||
};
|
||||
};
|
||||
|
@ -74,7 +100,6 @@ in
|
|||
imports = builtins.attrValues {
|
||||
inherit (modules)
|
||||
sops
|
||||
xserver
|
||||
;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
{
|
||||
flake,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
services.hypridle = {
|
||||
enable = true;
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
{
|
||||
pkgs,
|
||||
flake,
|
||||
...
|
||||
}:
|
||||
{
|
||||
programs.hyprland = {
|
||||
enable = true;
|
||||
|
|
|
@ -16,8 +16,8 @@ in
|
|||
systemPackages = [
|
||||
(pkgs.catppuccin-sddm.override {
|
||||
flavor = "macchiato";
|
||||
font = "${fonts.name}";
|
||||
fontSize = "${toString fonts.sizes.popups}";
|
||||
font = "${fonts.names.name0}";
|
||||
fontSize = "${toString fonts.sizes.desktop.size0}";
|
||||
loginBackground = true;
|
||||
})
|
||||
];
|
||||
|
|
|
@ -1,14 +1,19 @@
|
|||
{
|
||||
config,
|
||||
flake,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (flake.config.people)
|
||||
user0
|
||||
user1
|
||||
user2
|
||||
;
|
||||
inherit (flake.config.machines) devices;
|
||||
venus = devices.venus.name;
|
||||
charon = devices.charon.name;
|
||||
mars = devices.mars.name;
|
||||
|
||||
host = config.networking.hostName;
|
||||
|
@ -21,7 +26,15 @@ in
|
|||
settings = {
|
||||
default_session = {
|
||||
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --time-format '%I:%M %p | %a • %h | %F' --theme border=magenta;text=cyan;prompt=green;time=red;action=blue;button=yellow;container=black;input=red --cmd Hyprland";
|
||||
user = if host == mars then "greeter" else user0;
|
||||
user =
|
||||
if host == mars then
|
||||
"greeter"
|
||||
else if host == charon then
|
||||
user1
|
||||
else if host == venus then
|
||||
user2
|
||||
else
|
||||
user0;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ pkgs, ... }:
|
||||
{ pkgs, flake, ... }:
|
||||
{
|
||||
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||
|
||||
|
|
|
@ -1,7 +1,50 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
pkgs,
|
||||
flake,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (flake.config.aesthetics.themes)
|
||||
fonts
|
||||
;
|
||||
in
|
||||
{
|
||||
programs.regreet = {
|
||||
enable = false;
|
||||
package = pkgs.greetd.regreet;
|
||||
# settings = {
|
||||
# appearance = {
|
||||
# greeting_msg = "Back for more, I see.";
|
||||
# };
|
||||
# GTK = {
|
||||
# application_prefer_dark_theme = true;
|
||||
# cursor_theme_name = lib.mkForce "catppuccin-macchiato-dark-cursors";
|
||||
# font_name = lib.mkForce "${fonts.names.name0} ${font.size.desktop}";
|
||||
# icon_theme_name = lib.mkForce "Papirus-Dark";
|
||||
# theme_name = lib.mkForce "catppuccin-macchiato-mauve-compact";
|
||||
# };
|
||||
# };
|
||||
# theme = {
|
||||
# name = "catppuccin-macchiato-mauve-compact";
|
||||
# package = pkgs.catppuccin-gtk.override {
|
||||
# size = "compact";
|
||||
# variant = "macchiato";
|
||||
# accents = [
|
||||
# "mauve"
|
||||
# ];
|
||||
# };
|
||||
# };
|
||||
# cursorTheme = {
|
||||
# name = "catppuccin-macchiato-dark-cursors";
|
||||
# package = pkgs.catppuccin-cursors.macchiatoDark;
|
||||
# };
|
||||
# iconTheme = {
|
||||
# name = "Papirus-Dark";
|
||||
# package = pkgs.catppuccin-papirus-folders.override {
|
||||
# flavor = "macchiato";
|
||||
# accent = "mauve";
|
||||
# };
|
||||
# };
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ flake, ... }:
|
||||
{ flake, config, ... }:
|
||||
let
|
||||
inherit (flake.config.services.instances) audiobookshelf web;
|
||||
inherit (flake.config.machines.devices) ceres;
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
{ config, flake, ... }:
|
||||
let
|
||||
inherit (flake.config.services.instances) glance jellyfin;
|
||||
inherit (flake.config.people) user0;
|
||||
inherit (flake.config.services.instances) glance jellyfin web;
|
||||
inherit (flake.config.machines.devices) ceres;
|
||||
service = glance;
|
||||
configPath = ./config;
|
||||
configImports = {
|
||||
|
|
|
@ -1,6 +1,13 @@
|
|||
{ flake, ... }:
|
||||
{
|
||||
flake,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (flake.config.services.instances) kanboard web;
|
||||
inherit (flake.config.machines.devices)
|
||||
ceres
|
||||
;
|
||||
inherit (flake.config.services.instances) smtp kanboard web;
|
||||
service = kanboard;
|
||||
localhost = web.localhost.address0;
|
||||
host = service.domains.url0;
|
||||
|
|
|
@ -1,4 +1,9 @@
|
|||
{ flake, config, ... }:
|
||||
{
|
||||
flake,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (flake.config.machines.devices)
|
||||
mars
|
||||
|
|
|
@ -3,6 +3,7 @@ let
|
|||
inherit (flake.config.machines.devices)
|
||||
synology
|
||||
phone
|
||||
tablet
|
||||
;
|
||||
inherit (flake.config.services.instances)
|
||||
syncthing
|
||||
|
|
|
@ -1,6 +1,40 @@
|
|||
{ flake, ... }:
|
||||
{
|
||||
flake,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (flake.config.people) user0;
|
||||
inherit (flake.config.people)
|
||||
user0
|
||||
user1
|
||||
user2
|
||||
user3
|
||||
;
|
||||
inherit (flake.config.machines)
|
||||
devices
|
||||
;
|
||||
hostname = config.networking.hostName;
|
||||
mars = devices.mars.name;
|
||||
ceres = devices.ceres.name;
|
||||
venus = devices.venus.name;
|
||||
charon = devices.charon.name;
|
||||
deimos = devices.deimos.name;
|
||||
|
||||
userLogic =
|
||||
if
|
||||
builtins.elem hostname [
|
||||
mars
|
||||
deimos
|
||||
ceres
|
||||
]
|
||||
then
|
||||
user0
|
||||
else if hostname == charon then
|
||||
user1
|
||||
else if hostname == venus then
|
||||
user2
|
||||
else
|
||||
"";
|
||||
in
|
||||
{
|
||||
sops = {
|
||||
|
@ -10,18 +44,22 @@ in
|
|||
keyFile = "/var/lib/sops-nix/key.txt";
|
||||
generateKey = false;
|
||||
};
|
||||
secrets = {
|
||||
secrets =
|
||||
if hostname == charon then
|
||||
{ }
|
||||
else
|
||||
{
|
||||
"ssh/private" = {
|
||||
path = "/home/${user0}/.ssh/id_ed25519";
|
||||
owner = user0;
|
||||
path = "/home/${userLogic}/.ssh/id_ed25519";
|
||||
owner = userLogic;
|
||||
};
|
||||
"ssh/public" = {
|
||||
path = "/home/${user0}/.ssh/id_ed25519.pub";
|
||||
owner = user0;
|
||||
path = "/home/${userLogic}/.ssh/id_ed25519.pub";
|
||||
owner = userLogic;
|
||||
};
|
||||
"ssh/hosts" = {
|
||||
path = "/home/${user0}/.ssh/known_hosts";
|
||||
owner = user0;
|
||||
path = "/home/${userLogic}/.ssh/known_hosts";
|
||||
owner = userLogic;
|
||||
};
|
||||
"claude-api-key" = {
|
||||
path = "/home/${user0}/.config/zed/claude-api-key";
|
||||
|
|
|
@ -9,6 +9,7 @@ let
|
|||
inherit (flake) self;
|
||||
inherit (flake.config.people) user0;
|
||||
inherit (flake.config.machines) devices;
|
||||
inherit (flake.config.services) instances;
|
||||
inherit (flake.config.people.users.${user0}) name paths;
|
||||
|
||||
hostname = config.networking.hostName;
|
||||
|
@ -48,17 +49,66 @@ in
|
|||
username = user0;
|
||||
homeDirectory = "/home/${user0}";
|
||||
file = {
|
||||
"./justfile" = import ./files/misc/justfile.nix { inherit flake config lib; };
|
||||
"./justfile" =
|
||||
let
|
||||
mars = devices.mars;
|
||||
deimos = devices.deimos;
|
||||
deviceLogic = if hostname == mars.name then deimos else mars;
|
||||
|
||||
vpnServers = [
|
||||
"CA363"
|
||||
"CA220"
|
||||
"CA358"
|
||||
"CA627"
|
||||
];
|
||||
|
||||
vpnCommands = lib.concatStrings (
|
||||
lib.imap0 (i: server: ''
|
||||
vpn${toString i}:
|
||||
sudo systemctl start wg-quick-Proton-${server}.service
|
||||
|
||||
'') vpnServers
|
||||
);
|
||||
in
|
||||
{
|
||||
text = ''
|
||||
rebuildBoot:
|
||||
nixos-rebuild boot --use-remote-sudo --flake ~/Files/Projects/dotfiles#${hostname} --show-trace
|
||||
|
||||
rebuild:
|
||||
nixos-rebuild switch --use-remote-sudo --flake ~/Files/Projects/dotfiles#${hostname} --show-trace
|
||||
|
||||
update:
|
||||
nix flake update --flake ~/Files/Projects/dotfiles
|
||||
|
||||
elm:
|
||||
cd ~/Files/Projects/website/frontend ; elm-land server
|
||||
|
||||
server:
|
||||
ssh ${devices.ceres.ip.address0}
|
||||
|
||||
serverRemote:
|
||||
ssh ${instances.web.remotehost.address0}
|
||||
|
||||
${deviceLogic.name}:
|
||||
ssh ${deviceLogic.ip.address0}
|
||||
|
||||
vpnoff:
|
||||
sudo systemctl stop wg-quick-Proton-*.service
|
||||
|
||||
${vpnCommands}
|
||||
'';
|
||||
};
|
||||
"./Files/Scripts/list.sh" = {
|
||||
source = ./files/scripts/list.sh;
|
||||
source = ./files/list.sh;
|
||||
executable = true;
|
||||
};
|
||||
"./Files/Scripts/loop.sh" = {
|
||||
source = ./files/scripts/loop.sh;
|
||||
source = ./files/loop.sh;
|
||||
executable = true;
|
||||
};
|
||||
"./.config/scripts/get_weather.sh" = {
|
||||
source = ./files/scripts/get_weather.sh;
|
||||
source = ./files/get_weather.sh;
|
||||
executable = true;
|
||||
};
|
||||
".config/wallpaper" = {
|
||||
|
|
|
@ -1,60 +0,0 @@
|
|||
{
|
||||
flake,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (flake.config.machines) devices;
|
||||
inherit (flake.config.services) instances;
|
||||
|
||||
mars = devices.mars;
|
||||
deimos = devices.deimos;
|
||||
hostname = config.networking.hostName;
|
||||
deviceLogic = if hostname == mars.name then deimos else mars;
|
||||
|
||||
vpnServers = [
|
||||
"CA363"
|
||||
"CA220"
|
||||
"CA358"
|
||||
"CA627"
|
||||
];
|
||||
|
||||
vpnCommands = lib.concatStrings (
|
||||
lib.imap0 (i: server: ''
|
||||
vpn${toString i}:
|
||||
sudo systemctl start wg-quick-Proton-${server}.service
|
||||
|
||||
'') vpnServers
|
||||
);
|
||||
in
|
||||
{
|
||||
text = ''
|
||||
rebuildBoot:
|
||||
nixos-rebuild boot --use-remote-sudo --flake ~/Files/Projects/dotfiles#${hostname} --show-trace
|
||||
|
||||
rebuild:
|
||||
nixos-rebuild switch --use-remote-sudo --flake ~/Files/Projects/dotfiles#${hostname} --show-trace
|
||||
|
||||
update:
|
||||
nix flake update --flake ~/Files/Projects/dotfiles
|
||||
|
||||
elm:
|
||||
cd ~/Files/Projects/website/frontend ; elm-land server
|
||||
|
||||
server:
|
||||
ssh ${devices.ceres.ip.address0}
|
||||
|
||||
serverRemote:
|
||||
ssh ${instances.web.remotehost.address0}
|
||||
|
||||
${deviceLogic.name}:
|
||||
ssh ${deviceLogic.ip.address0}
|
||||
|
||||
vpnoff:
|
||||
sudo systemctl stop wg-quick-Proton-*.service
|
||||
|
||||
${vpnCommands}
|
||||
'';
|
||||
}
|
|
@ -2,14 +2,13 @@
|
|||
config,
|
||||
flake,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (flake) self;
|
||||
inherit (flake.config.people) user1;
|
||||
inherit (flake.config.machines) devices;
|
||||
inherit (flake.config.people.users.${user1}) name paths;
|
||||
inherit (flake.config.people.users.${user1}) name;
|
||||
hostname = config.networking.hostName;
|
||||
in
|
||||
{
|
||||
|
@ -20,15 +19,13 @@ in
|
|||
isNormalUser = true;
|
||||
shell = pkgs.nushell;
|
||||
extraGroups = [
|
||||
"adbusers"
|
||||
"disk"
|
||||
"libvirtd"
|
||||
"netdev"
|
||||
"disk"
|
||||
"networkmanager"
|
||||
"plugdev"
|
||||
"samba"
|
||||
"vboxusers"
|
||||
"wheel"
|
||||
"adbusers"
|
||||
"netdev"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
@ -38,22 +35,19 @@ in
|
|||
username = user1;
|
||||
homeDirectory = "/home/${user1}";
|
||||
file = {
|
||||
"./justfile" = {
|
||||
source = ./files/justfile;
|
||||
};
|
||||
"./.config/scripts/get_weather.sh" = {
|
||||
source = ./files/scripts/get_weather.sh;
|
||||
source = ./files/get_weather.sh;
|
||||
executable = true;
|
||||
};
|
||||
".config/wallpaper" = {
|
||||
source = ./files/wallpaper;
|
||||
recursive = true;
|
||||
};
|
||||
"./.config/vesktop/themes/macchiato-theme.css" = {
|
||||
source = ./files/themes/vesktop/macchiato-theme.css;
|
||||
};
|
||||
};
|
||||
sessionVariables = {
|
||||
VISUAL = lib.getExe pkgs.zed-editor;
|
||||
GTK_THEME = "catppuccin-macchiato-mauve-compact";
|
||||
};
|
||||
sessionVariables = { };
|
||||
};
|
||||
imports = [
|
||||
{
|
||||
|
@ -67,25 +61,4 @@ in
|
|||
];
|
||||
};
|
||||
};
|
||||
systemd.tmpfiles = {
|
||||
rules =
|
||||
[
|
||||
"d ${paths.path0} 0755 ${user1} users -"
|
||||
]
|
||||
++ (map (path: "d /home/${user1}/${path} 0755 ${user1} users -") [
|
||||
"Files"
|
||||
"Files/Scripts"
|
||||
"Files/Games"
|
||||
"Files/Screenshots"
|
||||
])
|
||||
++ (map (path: "R /home/${user1}/${path} 0755 ${user1} users - -") [
|
||||
"Desktop"
|
||||
"Documents"
|
||||
"Music"
|
||||
"Pictures"
|
||||
"Public"
|
||||
"Templates"
|
||||
"Videos"
|
||||
]);
|
||||
};
|
||||
}
|
||||
|
|
14
profiles/user1/files/justfile
Executable file
|
@ -0,0 +1,14 @@
|
|||
ewwEdit:
|
||||
eww --config /home/nick/dotfiles/home-manager/modules/eww/config/ open centerPanel
|
||||
|
||||
ewwLaunch:
|
||||
./home/nick/dotfiles/home-manager/modules/eww/config/scripts/master.sh
|
||||
|
||||
gobrrr:
|
||||
home-manager switch --flake ~/dotfiles#desktop
|
||||
|
||||
gobrrrl:
|
||||
nixos-rebuild switch --use-remote-sudo --flake /home/nick/dotfiles#desktop
|
||||
|
||||
fuckoff:
|
||||
shutdown now
|
BIN
profiles/user1/files/wallpaper/0v1YQLSg6MTHNJwDdky4Igcc6nTTbMctPS8DhT_iGww.webp
Executable file
After Width: | Height: | Size: 416 KiB |
BIN
profiles/user1/files/wallpaper/9402963.jpg
Executable file
After Width: | Height: | Size: 172 KiB |
BIN
profiles/user1/files/wallpaper/f.jpg
Executable file
After Width: | Height: | Size: 200 KiB |
BIN
profiles/user1/files/wallpaper/murder-drones-action-scene-2hplnpxoeolfor3a.jpg
Executable file
After Width: | Height: | Size: 112 KiB |
BIN
profiles/user1/files/wallpaper/murder-drones-wallpapers-8.jpg
Executable file
After Width: | Height: | Size: 314 KiB |
89
profiles/user2/default.nix
Executable file
|
@ -0,0 +1,89 @@
|
|||
{
|
||||
config,
|
||||
flake,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (flake) self;
|
||||
inherit (flake.config.people) user2;
|
||||
inherit (flake.config.machines) devices;
|
||||
inherit (flake.config.people.users.${user2}) name paths;
|
||||
hostname = config.networking.hostName;
|
||||
in
|
||||
|
||||
{
|
||||
users = {
|
||||
users.${user2} = {
|
||||
description = name;
|
||||
name = user2;
|
||||
isNormalUser = true;
|
||||
shell = pkgs.nushell;
|
||||
extraGroups = [
|
||||
"adbusers"
|
||||
"disk"
|
||||
"libvirtd"
|
||||
"minecraft"
|
||||
"netdev"
|
||||
"networkmanager"
|
||||
"ollama"
|
||||
"syncthing"
|
||||
"vboxusers"
|
||||
"wheel"
|
||||
];
|
||||
};
|
||||
};
|
||||
home-manager.users = {
|
||||
${user2} = {
|
||||
home = {
|
||||
username = user2;
|
||||
homeDirectory = "/home/${user2}";
|
||||
file = {
|
||||
"./justfile" = {
|
||||
source = ./files/justfile;
|
||||
};
|
||||
};
|
||||
sessionVariables = {
|
||||
WLR_NO_HARDWARE_CURSORS = "1";
|
||||
WLR_DRM_NO_ATOMIC = "1";
|
||||
VIDEO_PLAYER = "vlc";
|
||||
EDITOR = "vscode";
|
||||
NIXPKGS_ALLOW_INSECURE = "1";
|
||||
};
|
||||
};
|
||||
|
||||
imports = [
|
||||
{
|
||||
home.stateVersion = config.system.stateVersion;
|
||||
}
|
||||
{
|
||||
imports = [
|
||||
self.homeModules."${devices.${hostname}.name}-${user2}"
|
||||
];
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
systemd.tmpfiles =
|
||||
let
|
||||
directoriesAddedToHome = [
|
||||
"Projects"
|
||||
];
|
||||
|
||||
directoriesRemovedFromHome = [
|
||||
"Music"
|
||||
"Public"
|
||||
"Templates"
|
||||
];
|
||||
in
|
||||
{
|
||||
rules =
|
||||
[
|
||||
"d ${paths.path0}/Projects 0755 ${user2} users -"
|
||||
"Z ${paths.path0}/.ssh 700 ${user2} users -"
|
||||
]
|
||||
++ (map (path: "d /home/${user2}/${path} 0755 ${user2} users -") directoriesAddedToHome)
|
||||
++ (map (path: "R /home/${user2}/${path} 0755 ${user2} users - -") directoriesRemovedFromHome);
|
||||
};
|
||||
|
||||
}
|
266
profiles/user2/files/firefox/userChrome.css
Executable file
|
@ -0,0 +1,266 @@
|
|||
/**
|
||||
* Decrease size of the sidebar header
|
||||
*/
|
||||
*, html, body, html body, :root, #sidebar, #sidebar-box, .sidebar-panel, #root.root, #PlacesToolbarItems .bookmark-item, #PlacesToolbarItems .tab-item, .sidebar-placesTreechildren::-moz-tree-cell-text, .sidebar-placesTreechildren, .form-control {
|
||||
font: 7pt "Lucida Sans", Classica !important;
|
||||
outline: 0px !important;
|
||||
border: 0px !important;
|
||||
}
|
||||
|
||||
html, body, :root, #sidebar, #sidebar-box, .sidebar-panel, #root.root, #PlacesToolbarItems.bookmark-item, #PlacesToolbarItems.tab-item, .titlebar, .toolbar, #PlacesToolbar, #personal-bookmarks, #bookmarks-toolbar-button, #navigator-toolbox, #nav-bar, #library {
|
||||
background-color: #1a1920 !important;
|
||||
outline: 0px !important;
|
||||
border: 0px !important;
|
||||
}
|
||||
|
||||
@-moz-document url-prefix("moz-extension://4bfeee63-c7b3-4bb9-a7df-a2c0fd73eec0") {
|
||||
*, html, body, html body, #root, :root, .Tab .title, .main-items .nav-item .len {
|
||||
font-size: 7pt !important;
|
||||
font-family: "Lucida Sans", "Classica" !important;
|
||||
--tabs-font: 7pt "Lucida Sans", "Classica" !important;
|
||||
background-color: #1a1920 !important;
|
||||
outline: 0px !important;
|
||||
border: 0px !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* extension icons opacity and fade */
|
||||
|
||||
#nav-bar toolbarbutton {
|
||||
filter: grayscale(100%) !important;
|
||||
opacity: 0.3 !important;
|
||||
transition: transform 200ms ease 0.5s, opacity 200ms ease 0.5s !important;
|
||||
}
|
||||
|
||||
#nav-bar toolbarbutton:hover {
|
||||
filter: grayscale(0%) !important;
|
||||
opacity: 1 !important;
|
||||
transition-duration: 200ms !important;
|
||||
transition-delay: 0s !important;
|
||||
}
|
||||
|
||||
#sidebar-header toolbarbutton {
|
||||
filter: grayscale(100%) !important;
|
||||
opacity: 0 !important;
|
||||
transition: transform 200ms ease 0.5s, opacity 200ms ease 0.5s !important;
|
||||
min-width:150px !important;
|
||||
align: center !important;
|
||||
}
|
||||
#sidebar-header toolbarbutton:hover {
|
||||
filter: grayscale(0%) !important;
|
||||
opacity: 1 !important;
|
||||
transition-duration: 200ms !important;
|
||||
transition-delay: 0s !important;
|
||||
min-width:150px !important;
|
||||
align: center !important;
|
||||
}
|
||||
|
||||
.close-icon {width:0px !important;}
|
||||
|
||||
/* --- */
|
||||
|
||||
|
||||
/* hide address bar bloat */
|
||||
#tracking-protection-icon-container { display: none; }
|
||||
#identity-box { display: none; }
|
||||
#reader-mode-button { display: none; }
|
||||
#pageActionButton { display: none; }
|
||||
#pocket-button { display: none; }
|
||||
#star-button { display: none; }
|
||||
#urlbar-zoom-button { display: none; }
|
||||
/* --- */
|
||||
|
||||
/* Go to arrow button at the end of the urlbar when searching */
|
||||
#urlbar-go-button { display: none; }
|
||||
|
||||
/* Bottom left page loading status or url preview */
|
||||
/* #statuspanel { display: none !important; } */
|
||||
|
||||
|
||||
/* hide address bar*/
|
||||
|
||||
/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/autohide_main_toolbar.css made available under Mozilla Public License v. 2.0
|
||||
S ee the above repository for updates as well as full license text. */ *
|
||||
|
||||
/* This style hides the main toolbar and shows it when the cursor is over the tabs toolbar as well as whenever the focus is inside nav-bar, such as when urlbar is focused. */
|
||||
|
||||
:root{ --uc-navbar-transform: -40px }
|
||||
:root[uidensity="compact"]{ --uc-navbar-transform: -4px }
|
||||
|
||||
|
||||
#navigator-toolbox > div{ display: contents; }
|
||||
:root[sessionrestored] :where(#nav-bar,#PersonalToolbar,#tab-notification-deck,.global-notificationbox){
|
||||
transform: translateY(var(--uc-navbar-transform))
|
||||
}
|
||||
:root:is([customizing],[chromehidden*="toolbar"]) :where(#nav-bar,#PersonalToolbar,#tab-notification-deck,.global-notificationbox){
|
||||
transform: none !important;
|
||||
opacity: 1 !important;
|
||||
}
|
||||
|
||||
#nav-bar, #nav-bar-customization-target {
|
||||
height: 30px !important;
|
||||
}
|
||||
|
||||
#nav-bar-content, #nav-bar-content {
|
||||
height: 20px !important;
|
||||
margin-top: 4px !important;
|
||||
}
|
||||
|
||||
#urlbar {
|
||||
width: 300px !important;
|
||||
padding-left: 10px !important;
|
||||
padding-right: -10px !important;
|
||||
left: -50px !important;
|
||||
}
|
||||
|
||||
#nav-bar:not([customizing]){
|
||||
opacity: 0;
|
||||
transition: transform 400ms ease 1.5s, opacity 400ms ease 1.5s !important;
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
}
|
||||
#titlebar{ position: relative; z-index: 3 }
|
||||
|
||||
/* Show when toolbox is focused, like when urlbar has received focus */
|
||||
#navigator-toolbox:focus-within > .browser-toolbar{
|
||||
transform: translateY(0);
|
||||
opacity: 1;
|
||||
transition-duration: 500ms, 200ms !important;
|
||||
transition-delay: 0s !important;
|
||||
}
|
||||
/* Show when toolbox is hovered */
|
||||
#titlebar:hover ~ .browser-toolbar,
|
||||
#nav-bar:hover,
|
||||
#nav-bar:hover + #PersonalToolbar{
|
||||
transform: translateY(0);
|
||||
opacity: 1;
|
||||
transition-duration: 500ms, 200ms !important;
|
||||
transition-delay: 0s !important;
|
||||
}
|
||||
/* This ruleset is separate, because not having :has support breaks other selectors as well */
|
||||
#mainPopupSet:has(> #appMenu-popup:hover) ~ #navigator-toolbox > .browser-toolbar{
|
||||
transition-delay: 33ms !important;
|
||||
transform: translateY(0);
|
||||
opacity: 1;
|
||||
background-color: #1a1920 !important;
|
||||
}
|
||||
|
||||
/* Bookmarks toolbar needs so extra rules */
|
||||
#PersonalToolbar{ transition: transform 400ms ease 1.5s !important; position: relative; z-index: 1; background-color: #1a1920 !important; }
|
||||
|
||||
/* Move up the content view */
|
||||
:root[sessionrestored]:not([inFullscreen],[chromehidden~="toolbar"]) > body > #browser{ margin-top: var(--uc-navbar-transform); }
|
||||
|
||||
/* --- end hide --- */
|
||||
|
||||
|
||||
|
||||
#sidebar-header {color: #1a1920 !important;
|
||||
font-size: 1.2em !important;
|
||||
font-family: "Dumbledor 3", Times New Roman !important;
|
||||
padding: 2px 6px 2px 3px !important;
|
||||
}
|
||||
#sidebar-header #sidebar-close {
|
||||
padding: 3px !important;
|
||||
}
|
||||
#sidebar-header #sidebar-close .toolbarbutton-icon {
|
||||
width: 0px !important;
|
||||
height: 0px !important;
|
||||
opacity: 0.6 !important;
|
||||
}
|
||||
|
||||
#TabsToolbar {
|
||||
font-size: 0.8em !important;
|
||||
font-family: "Troglodyte" !important;
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/autohide_sidebar.css made available under Mozilla Public License v. 2.0
|
||||
*See the above repository for updates as well as full license text. */
|
||||
|
||||
/* Show sidebar only when the cursor is over it */
|
||||
/* The border controlling sidebar width will be removed so you'll need to modify these values to change width */
|
||||
|
||||
#sidebar-box{
|
||||
--uc-sidebar-width: 30px;
|
||||
--uc-sidebar-hover-width: 180px;
|
||||
--uc-autohide-sidebar-delay: 600ms; /* Wait 0.6s before hiding sidebar */
|
||||
--uc-autohide-transition-duration: 115ms;
|
||||
--uc-autohide-transition-type: linear;
|
||||
position: relative;
|
||||
min-width: var(--uc-sidebar-width) !important;
|
||||
width: var(--uc-sidebar-width) !important;
|
||||
max-width: var(--uc-sidebar-width) !important;
|
||||
z-index:1;
|
||||
}
|
||||
|
||||
#sidebar-box[positionend]{ direction: rtl }
|
||||
#sidebar-box[positionend] > *{ direction: ltr }
|
||||
|
||||
#sidebar-box[positionend]:-moz-locale-dir(rtl){ direction: ltr }
|
||||
#sidebar-box[positionend]:-moz-locale-dir(rtl) > *{ direction: rtl }
|
||||
|
||||
#main-window[sizemode="fullscreen"] #sidebar-box{ --uc-sidebar-width: 1px; }
|
||||
|
||||
#sidebar-splitter{ display: none }
|
||||
|
||||
#sidebar-header{
|
||||
overflow: hidden;
|
||||
color: var(--chrome-color, inherit) !important;
|
||||
padding-inline: 0 !important;
|
||||
}
|
||||
|
||||
#sidebar-header::before,
|
||||
#sidebar-header::after{
|
||||
content: "";
|
||||
display: flex;
|
||||
padding-left: 8px;
|
||||
}
|
||||
|
||||
#sidebar-header,
|
||||
#sidebar{
|
||||
transition: min-width var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important;
|
||||
min-width: var(--uc-sidebar-width) !important;
|
||||
will-change: min-width;
|
||||
}
|
||||
#sidebar-box:hover > #sidebar-header,
|
||||
#sidebar-box:hover > #sidebar{
|
||||
min-width: var(--uc-sidebar-hover-width) !important;
|
||||
transition-delay: 0ms !important;
|
||||
}
|
||||
|
||||
.sidebar-panel{
|
||||
background-color: transparent !important;
|
||||
color: var(--newtab-text-primary-color) !important;
|
||||
}
|
||||
|
||||
.sidebar-panel #search-box{
|
||||
-moz-appearance: none !important;
|
||||
background-color: rgba(249,249,250,0.1) !important;
|
||||
color: inherit !important;
|
||||
}
|
||||
|
||||
/* Add sidebar divider and give it background */
|
||||
|
||||
#sidebar,
|
||||
#sidebar-header{
|
||||
background-color: inherit !important;
|
||||
border-inline: 1px solid rgb(80,80,80);
|
||||
border-inline-width: 0px 1px;
|
||||
}
|
||||
|
||||
#sidebar-box:not([positionend]) > :-moz-locale-dir(rtl),
|
||||
#sidebar-box[positionend] > *{
|
||||
border-inline-width: 1px 0px;
|
||||
}
|
||||
|
||||
/* Move statuspanel to the other side when sidebar is hovered so it doesn't get covered by sidebar */
|
||||
|
||||
#sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel{
|
||||
inset-inline: auto 0px !important;
|
||||
}
|
||||
#sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel-label{
|
||||
margin-inline: 0px !important;
|
||||
border-left-style: solid !important;
|
||||
}
|
126
profiles/user2/files/firefox/userContent.css
Executable file
|
@ -0,0 +1,126 @@
|
|||
/* home page edits */
|
||||
|
||||
@-moz-document url("about:home"), url("about:newtab"){
|
||||
html, body, #root, input {
|
||||
background-color: #1a1920 !important;
|
||||
}
|
||||
|
||||
* { /* this is where I enforce the font everywhere */
|
||||
font-size: 8pt !important;
|
||||
font-family: "Lucida Grande", "Classica" !important;
|
||||
line-height: 9pt !important;
|
||||
} /* so that my sidebar tabs aren't fucking HUGE */
|
||||
|
||||
.collapsible-section.ds-layout {
|
||||
max-height: 400px !important;
|
||||
background-color: #000 !important;
|
||||
}
|
||||
.search-wrapper {
|
||||
filter: grayscale(80%) !important;
|
||||
opacity: 0 !important;
|
||||
vertical-align: middle !important;
|
||||
}
|
||||
.personalizeButtonWrapper {
|
||||
opacity: 0.2 !important;
|
||||
transition: transform 200ms ease 0.5s, opacity 200ms ease 0.5s !important;
|
||||
}
|
||||
.personalizeButtonWrapper:hover {
|
||||
opacity: 0.7 !important;
|
||||
transition-duration: 200ms !important;
|
||||
transition-delay: 0s !important;
|
||||
}
|
||||
.search-inner-wrapper { /* begone THOT */
|
||||
display:none !important;
|
||||
width: 300px !important;
|
||||
min-height: 30px !important;
|
||||
--newtab-search-icon: 0 !important;
|
||||
}
|
||||
.body-wrapper {margin-top: -200px;}
|
||||
.context-menu-button { /* the button that has the menu to edit your shortcuts */
|
||||
margin-right: 10px !important; margin-top: 0px !important; opacity: 0 !important;
|
||||
background-color: transparent !important;
|
||||
}
|
||||
.context-menu-button:hover {opacity: 0.7 !important;}
|
||||
.top-site-outer, .top-site-inner {
|
||||
margin-block-end: 0px !important;
|
||||
background-color: transparent !important;
|
||||
}
|
||||
.top-site-outer:hover {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
.top-site-button {padding: 0px !important; background-color:transparent !important;}
|
||||
|
||||
.tile { /* here be buttons */
|
||||
filter: grayscale(100%) !important;
|
||||
background-color: transparent !important;
|
||||
border: 0px !important;
|
||||
opacity: 0.1 !important;
|
||||
transition: 50ms ease 0.4s !important;
|
||||
vertical-align: middle !important;
|
||||
}
|
||||
.tile:hover {
|
||||
filter: grayscale(50%) !important;
|
||||
opacity: 0.7 !important;
|
||||
transition: 50ms ease 0.2s !important;
|
||||
}
|
||||
.icon-wrapper {
|
||||
background-color: transparent !important;
|
||||
border: 0px !important;
|
||||
}
|
||||
|
||||
.top-site-button .top-site-icon{
|
||||
background-color: transparent !important;
|
||||
background-size: contain !important;
|
||||
background-repeat: no-repeat !important;
|
||||
background-position: center !important;
|
||||
padding: 0px !important;
|
||||
border-radius: 0px !important;
|
||||
}
|
||||
|
||||
/* custom icons so I can have custom+transparency on Home and New Tab pages */
|
||||
.top-site-button[href="http://deck.blue"] .top-site-icon{
|
||||
background-image: url("https://i.imgur.com/Z8IrhAY.png") !important;
|
||||
}
|
||||
.top-site-button[href="http://new.reddit.com"] .top-site-icon{
|
||||
background-image: url("https://i.imgur.com/3QIQIeD.png") !important;
|
||||
}
|
||||
.top-site-button[href="http://gaiaonline.com"] .top-site-icon{
|
||||
background-image: url("https://i.imgur.com/Vp7urqM.png") !important;
|
||||
}
|
||||
.top-site-button[href="http://orcanetwork.org"] .top-site-icon{
|
||||
background-image: url("https://i.imgur.com/hvKM68l.png") !important;
|
||||
}
|
||||
.top-site-button[href="http://whaleresearch.com"] .top-site-icon{
|
||||
background-image: url("https://i.imgur.com/uuBDA57.png") !important;
|
||||
}
|
||||
.top-site-button[href="http://whale-of-a-porpoise.blogspot.ca"] .top-site-icon{
|
||||
background-image: url("https://i.imgur.com/qm2BYfR.png") !important;
|
||||
}
|
||||
|
||||
/* !!! icon alignment and size fix !!! */
|
||||
.icon.icon-pin-small {
|
||||
width: 0px !important;
|
||||
}
|
||||
.top-site-outer .title {
|
||||
padding-top: 0px !important;
|
||||
}
|
||||
.top-site-outer {
|
||||
margin-block-end: unset !important;
|
||||
}
|
||||
.top-site-outer .title span {
|
||||
visibility: hidden !important;
|
||||
}
|
||||
.top-site-outer .title:not(.sponsored) .sponsored-label {
|
||||
height: 0px !important;
|
||||
}
|
||||
.top-site-outer .context-menu-button:hover {
|
||||
background-color: unset !important;
|
||||
}
|
||||
.top-site-outer .context-menu-button {
|
||||
transition: none !important;
|
||||
background-color: unset !important;
|
||||
top: 0px !important;
|
||||
}
|
||||
.top-site-outer .default-icon {width:48px !important; height:48px !important;}
|
||||
}
|
||||
/* --- home page edits end --- */
|
6
profiles/user2/files/justfile
Executable file
|
@ -0,0 +1,6 @@
|
|||
gobrr:
|
||||
nixos-rebuild switch --use-remote-sudo --flake ~/Projects/dotfiles#desktop
|
||||
|
||||
|
||||
fuckoff:
|
||||
shutdown now
|
3
profiles/user2/files/loop.sh
Executable file
|
@ -0,0 +1,3 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
while true ; do date ; natpmpc -a 1 0 udp 60 -g 10.2.0.1 && natpmpc -a 1 0 tcp 60 -g 10.2.0.1 || { echo -e "ERROR with natpmpc command \a" ; break ; } ; sleep 45 ; done
|
8
profiles/user2/files/modnix.sh
Executable file
|
@ -0,0 +1,8 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
cp /etc/nixos/configuration.nix /etc/nixos/configuration.nix.backup
|
||||
|
||||
sed -i '/services\.printing\.enable = true;/a\ nix.settings.experimental-features = ["nix-command" "flakes"];\n services.openssh.enable = true;' /etc/nixos/configuration.nix
|
||||
sed -i '/thunderbird/a\ git\n vscode\n tomb' /etc/nixos/configuration.nix
|
||||
|
||||
echo "/etc/nixos/configuration.nix updated successfully."
|
91
profiles/user3/default.nix
Executable file
|
@ -0,0 +1,91 @@
|
|||
{
|
||||
config,
|
||||
flake,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (flake) self;
|
||||
inherit (flake.config.people) user3;
|
||||
inherit (flake.config.machines) devices;
|
||||
inherit (flake.config.people.users.${user3}) name paths;
|
||||
hostname = config.networking.hostName;
|
||||
in
|
||||
{
|
||||
users = {
|
||||
users.${user3} = {
|
||||
description = name;
|
||||
name = user3;
|
||||
isNormalUser = true;
|
||||
shell = pkgs.nushell;
|
||||
extraGroups = [
|
||||
"adbusers"
|
||||
"disk"
|
||||
"libvirtd"
|
||||
"netdev"
|
||||
"networkmanager"
|
||||
"plugdev"
|
||||
"samba"
|
||||
"vboxusers"
|
||||
"wheel"
|
||||
];
|
||||
};
|
||||
};
|
||||
home-manager.users = {
|
||||
${user3} = {
|
||||
home = {
|
||||
username = user3;
|
||||
homeDirectory = "/home/${user3}";
|
||||
file = {
|
||||
"./.config/scripts/get_weather.sh" = {
|
||||
source = ./files/get_weather.sh;
|
||||
executable = true;
|
||||
};
|
||||
".config/wallpaper" = {
|
||||
source = ./files/wallpaper;
|
||||
recursive = true;
|
||||
};
|
||||
"./.config/vesktop/themes/macchiato-theme.css" = {
|
||||
source = ./files/themes/vesktop/macchiato-theme.css;
|
||||
};
|
||||
};
|
||||
sessionVariables = {
|
||||
VISUAL = lib.getExe pkgs.zed-editor;
|
||||
GTK_THEME = "catppuccin-macchiato-mauve-compact";
|
||||
};
|
||||
};
|
||||
imports = [
|
||||
{
|
||||
home.stateVersion = config.system.stateVersion;
|
||||
}
|
||||
{
|
||||
imports = [
|
||||
self.homeModules."${devices.${hostname}.name}-${user3}"
|
||||
];
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
systemd.tmpfiles = {
|
||||
rules =
|
||||
[
|
||||
"d ${paths.path0} 0755 ${user3} users -"
|
||||
]
|
||||
++ (map (path: "d /home/${user3}/${path} 0755 ${user3} users -") [
|
||||
"Files"
|
||||
"Files/Scripts"
|
||||
"Files/Games"
|
||||
"Files/Screenshots"
|
||||
])
|
||||
++ (map (path: "R /home/${user3}/${path} 0755 ${user3} users - -") [
|
||||
"Desktop"
|
||||
"Documents"
|
||||
"Music"
|
||||
"Pictures"
|
||||
"Public"
|
||||
"Templates"
|
||||
"Videos"
|
||||
]);
|
||||
};
|
||||
}
|
19
profiles/user3/files/get_weather.sh
Executable file
|
@ -0,0 +1,19 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
for i in {1..5}
|
||||
do
|
||||
text=$(curl -s "https://wttr.in/$1?format=1")
|
||||
if [[ $? == 0 ]]
|
||||
then
|
||||
text=$(echo "$text" | sed -E "s/\s+/ /g")
|
||||
tooltip=$(curl -s "https://wttr.in/$1?format=4")
|
||||
if [[ $? == 0 ]]
|
||||
then
|
||||
tooltip=$(echo "$tooltip" | sed -E "s/\s+/ /g")
|
||||
echo "{\"text\":\"$text\", \"tooltip\":\"$tooltip\"}"
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
sleep 2
|
||||
done
|
||||
echo "{\"text\":\"error\", \"tooltip\":\"error\"}"
|
Before Width: | Height: | Size: 772 KiB After Width: | Height: | Size: 772 KiB |
Before Width: | Height: | Size: 578 KiB After Width: | Height: | Size: 578 KiB |
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 886 KiB After Width: | Height: | Size: 886 KiB |
Before Width: | Height: | Size: 201 KiB After Width: | Height: | Size: 201 KiB |
Before Width: | Height: | Size: 808 KiB After Width: | Height: | Size: 808 KiB |
Before Width: | Height: | Size: 578 KiB After Width: | Height: | Size: 578 KiB |
Before Width: | Height: | Size: 1.7 MiB After Width: | Height: | Size: 1.7 MiB |
Before Width: | Height: | Size: 3.3 MiB After Width: | Height: | Size: 3.3 MiB |
Before Width: | Height: | Size: 5.1 MiB After Width: | Height: | Size: 5.1 MiB |
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 3.5 MiB After Width: | Height: | Size: 3.5 MiB |
Before Width: | Height: | Size: 632 KiB After Width: | Height: | Size: 632 KiB |
Before Width: | Height: | Size: 460 KiB After Width: | Height: | Size: 460 KiB |
Before Width: | Height: | Size: 8.2 MiB After Width: | Height: | Size: 8.2 MiB |
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 3.3 MiB After Width: | Height: | Size: 3.3 MiB |
Before Width: | Height: | Size: 833 KiB After Width: | Height: | Size: 833 KiB |
Before Width: | Height: | Size: 467 KiB After Width: | Height: | Size: 467 KiB |
Before Width: | Height: | Size: 2 MiB After Width: | Height: | Size: 2 MiB |
Before Width: | Height: | Size: 1.8 MiB After Width: | Height: | Size: 1.8 MiB |
Before Width: | Height: | Size: 1.6 MiB After Width: | Height: | Size: 1.6 MiB |