Compare commits
26 Commits
demo
...
00a1828a0d
| Author | SHA1 | Date | |
|---|---|---|---|
| 00a1828a0d | |||
| 2f6bed228d | |||
| dee0c41a05 | |||
| a97d49f8a7 | |||
| 636c8d4d0d | |||
| 58276cc8e0 | |||
| dd4274f036 | |||
| 626ede8955 | |||
| 9fdfd2efa0 | |||
| c2380696ef | |||
| df478c93e4 | |||
| a4588c49aa | |||
| c3eb30b199 | |||
| 6d5efdf451 | |||
| dbab6f8d32 | |||
| a21abe2f8f | |||
| 038cc8ce3b | |||
| 20e3ffdd48 | |||
| 94d28215a6 | |||
| 7182bc8e8e | |||
| aea83699b8 | |||
| 6febc0906b | |||
| 7929e07296 | |||
| bafe695b96 | |||
| 4bd523906c | |||
| 9154c8f6f8 |
1015
flake.lock
generated
1015
flake.lock
generated
File diff suppressed because it is too large
Load Diff
38
flake.nix
38
flake.nix
@@ -4,6 +4,8 @@
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
|
||||
nixos-hardware.url = "github:NixOS/nixos-hardware";
|
||||
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
@@ -14,6 +16,11 @@
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
agenix = {
|
||||
url = "github:ryantm/agenix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
nvf = {
|
||||
url = "github:notashelf/nvf";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
@@ -24,21 +31,36 @@
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
inputs.home-manager.follows = "home-manager";
|
||||
};
|
||||
|
||||
stylix = {
|
||||
url = "github:nix-community/stylix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
mango.url = "github:DreamMaoMao/mango?rev=1271832e947d3d4af27b36f687edd2f2e535f051";
|
||||
|
||||
hyprland.url = "github:hyprwm/Hyprland";
|
||||
|
||||
silentSDDM = {
|
||||
url = "github:uiriansan/SilentSDDM";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
hyprdynamicmonitors.url = "github:fiffeek/hyprdynamicmonitors";
|
||||
};
|
||||
|
||||
outputs =
|
||||
{ nixpkgs, ... }@inputs:
|
||||
let
|
||||
system = "x86_64-linux";
|
||||
host = "demo";
|
||||
in
|
||||
{
|
||||
nixosConfigurations.${host} = nixpkgs.lib.nixosSystem {
|
||||
inherit system;
|
||||
specialArgs = { inherit inputs host; };
|
||||
nixosConfigurations.vanta = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
host = "vanta";
|
||||
};
|
||||
modules = [
|
||||
./modules/system
|
||||
./hosts/${host}
|
||||
./hosts/vanta
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
Put host config here!
|
||||
10
hosts/vanta/default.nix
Normal file
10
hosts/vanta/default.nix
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
inputs.nixos-hardware.nixosModules.framework-12th-gen-intel
|
||||
./hardware-configuration.nix
|
||||
];
|
||||
}
|
||||
40
hosts/vanta/hardware-configuration.nix
Normal file
40
hosts/vanta/hardware-configuration.nix
Normal file
@@ -0,0 +1,40 @@
|
||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usbhid" "usb_storage" "sd_mod" ];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-intel" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/1df00fd1-f531-49b9-9dc6-6d17ca39b67a";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-uuid/EE0E-CAE4";
|
||||
fsType = "vfat";
|
||||
options = [ "fmask=0077" "dmask=0077" ];
|
||||
};
|
||||
|
||||
swapDevices =
|
||||
[ { device = "/dev/disk/by-uuid/fbacd982-b161-447c-a34a-7b44bc063a08"; }
|
||||
];
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.wlp166s0.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
||||
17
modules/home/alacritty.nix
Normal file
17
modules/home/alacritty.nix
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
...
|
||||
}:
|
||||
{
|
||||
programs.alacritty = {
|
||||
enable = true;
|
||||
theme = "catppuccin_mocha";
|
||||
settings = {
|
||||
font = {
|
||||
normal = {
|
||||
family = "FiraCode Nerd Font";
|
||||
style = "Regular";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -3,12 +3,22 @@
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
# ./alacritty.nix
|
||||
./firefox.nix
|
||||
./ghostty.nix
|
||||
./git.nix
|
||||
# ./kitty.nix
|
||||
./hypr
|
||||
./mango.nix
|
||||
./nvf.nix
|
||||
./packages.nix
|
||||
./plasma.nix
|
||||
# ./plasma.nix
|
||||
./ssh.nix
|
||||
./stylix.nix
|
||||
./vscode.nix
|
||||
./wallpaper.nix
|
||||
./xdg.nix
|
||||
./yazi.nix
|
||||
./zsh.nix
|
||||
];
|
||||
}
|
||||
|
||||
@@ -85,6 +85,7 @@
|
||||
};
|
||||
search = {
|
||||
default = "google";
|
||||
force = true;
|
||||
engines = {
|
||||
nix-packages = {
|
||||
name = "Nix Packages";
|
||||
|
||||
13
modules/home/ghostty.nix
Normal file
13
modules/home/ghostty.nix
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
...
|
||||
}:
|
||||
{
|
||||
programs.ghostty = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
settings = {
|
||||
theme = "Catppuccin Mocha";
|
||||
};
|
||||
systemd.enable = true;
|
||||
};
|
||||
}
|
||||
@@ -1,18 +1,40 @@
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
name = "Eclypsed";
|
||||
email = "Ec1ypsed@proton.me";
|
||||
signingKey = "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIB2h6y1Al2OVotYIpwPZMjiBLAncAI2pAPgES2+gVbJqAAAABHNzaDo= ssh:";
|
||||
in
|
||||
{
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userName = "Eclypsed";
|
||||
userEmail = "Ec1ypsed@proton.me";
|
||||
extraConfig = {
|
||||
init = {
|
||||
defaultBranch = "main";
|
||||
home.packages = with pkgs; [ git-ignore ];
|
||||
|
||||
xdg.configFile."git/allowed_signers".text = ''
|
||||
${email} namespaces="git" ${signingKey}
|
||||
'';
|
||||
|
||||
programs = {
|
||||
git = {
|
||||
enable = true;
|
||||
settings = {
|
||||
user = { inherit name email; };
|
||||
init = {
|
||||
defaultBranch = "main";
|
||||
};
|
||||
gpg.ssh.allowedSignersFile = "${config.xdg.configHome}/git/allowed_signers";
|
||||
};
|
||||
signing = {
|
||||
format = "ssh";
|
||||
key = "${config.home.homeDirectory}/.ssh/id_ed25519_sk_rk.pub";
|
||||
signByDefault = true;
|
||||
};
|
||||
};
|
||||
lazygit = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
shellWrapperName = "lg";
|
||||
};
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [ git-ignore ];
|
||||
}
|
||||
|
||||
10
modules/home/hypr/default.nix
Normal file
10
modules/home/hypr/default.nix
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
./hyprland.nix
|
||||
./keybinds.nix
|
||||
./monitors.nix
|
||||
];
|
||||
}
|
||||
53
modules/home/hypr/hyprland.nix
Normal file
53
modules/home/hypr/hyprland.nix
Normal file
@@ -0,0 +1,53 @@
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
waybar
|
||||
hyprpolkitagent
|
||||
];
|
||||
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
package = null;
|
||||
portalPackage = null;
|
||||
|
||||
settings = {
|
||||
source = [
|
||||
"${config.xdg.configHome}/hypr/monitors.conf"
|
||||
];
|
||||
|
||||
# monitor = [
|
||||
# "eDP-1, 2256x1504@60, 0x0, 1"
|
||||
# ];
|
||||
|
||||
decoration = {
|
||||
rounding = 10;
|
||||
|
||||
active_opacity = 0.95;
|
||||
inactive_opacity = 0.85;
|
||||
fullscreen_opacity = 1.0;
|
||||
|
||||
blur = {
|
||||
enabled = true;
|
||||
size = 8;
|
||||
passes = 3;
|
||||
new_optimizations = true;
|
||||
};
|
||||
};
|
||||
|
||||
exec-once = [
|
||||
"systemctl --user enable --now waybar.service"
|
||||
"systemctl --user enable --now hyprpolkitagent.service"
|
||||
"wpaperd -d"
|
||||
"systemctl enable --user app-com.mitchellh.ghostty.service"
|
||||
];
|
||||
|
||||
env = [
|
||||
"NIXOS_OZONE_WL, 1"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
69
modules/home/hypr/keybinds.nix
Normal file
69
modules/home/hypr/keybinds.nix
Normal file
@@ -0,0 +1,69 @@
|
||||
{
|
||||
...
|
||||
}:
|
||||
{
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
exec = "hyprctl dispatch submap global";
|
||||
submap = "global";
|
||||
|
||||
# MY STUFF
|
||||
"$mod" = "SUPER";
|
||||
|
||||
bind = [
|
||||
"$mod, Q, killactive"
|
||||
"$mod, W, exec, ghostty +new-window"
|
||||
"$mod, S, exec, rofi -show drun -show-icons"
|
||||
|
||||
# Window Movement
|
||||
"$mod, left, movefocus, l"
|
||||
"$mod, right, movefocus, r"
|
||||
"$mod, up, movefocus, u"
|
||||
"$mod, down, movefocus, d"
|
||||
"$mod SHIFT, left, movewindow, l"
|
||||
"$mod SHIFT, right, movewindow, r"
|
||||
"$mod SHIFT, up, movewindow, u"
|
||||
"$mod SHIFT, down, movewindow, d"
|
||||
"$mod CTRL, left, workspace, r-1"
|
||||
"$mod CTRL, right, workspace, r+1"
|
||||
"$mod CTRL SHIFT, left, movetoworkspace, r-1"
|
||||
"$mod CTRL SHIFT, right, movetoworkspace, r+1"
|
||||
|
||||
# Brightness keys
|
||||
", XF86MonBrightnessUp, exec, brightnessctl set 10%+"
|
||||
", XF86MonBrightnessDown, exec, brightnessctl set 10%-"
|
||||
|
||||
# Media Control Keys
|
||||
", XF86AudioPrev, exec, playerctl previous"
|
||||
", XF86AudioPlay, exec, playerctl play-pause"
|
||||
", XF86AudioNext, exec, playerctl next"
|
||||
", XF86AudioMute, exec, pamixer -t"
|
||||
", XF86AudioRaiseVolume, exec, pamixer -i 5"
|
||||
", XF86AudioLowerVolume, exec, pamixer -d 5"
|
||||
"ALT, XF86AudioMute, exec, pamixer --default-source -t"
|
||||
"ALT, XF86AudioRaiseVolume, exec, pamixer --default-source -i 5"
|
||||
"ALT, XF86AudioLowerVolume, exec, pamixer --default-source -d 5"
|
||||
]
|
||||
++ (
|
||||
# workspaces
|
||||
# binds $mod + [shift +] {1..9} to [move to] workspace {1..9}
|
||||
builtins.concatLists (
|
||||
builtins.genList (
|
||||
i:
|
||||
let
|
||||
ws = i + 1;
|
||||
in
|
||||
[
|
||||
"$mod, code:1${toString i}, workspace, ${toString ws}"
|
||||
"$mod SHIFT, code:1${toString i}, movetoworkspace, ${toString ws}"
|
||||
]
|
||||
) 9
|
||||
)
|
||||
);
|
||||
|
||||
bindm = [
|
||||
"$mod, mouse:272, movewindow"
|
||||
"$mod, mouse:273, resizewindow"
|
||||
"$mod ALT, mouse:272, resizewindow"
|
||||
];
|
||||
};
|
||||
}
|
||||
19
modules/home/hypr/monitors.nix
Normal file
19
modules/home/hypr/monitors.nix
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
inputs.hyprdynamicmonitors.homeManagerModules.default
|
||||
];
|
||||
|
||||
home.packages = [
|
||||
inputs.hyprdynamicmonitors.packages.${pkgs.stdenv.hostPlatform.system}.default
|
||||
];
|
||||
|
||||
home.hyprdynamicmonitors = {
|
||||
enable = true;
|
||||
installExamples = false;
|
||||
};
|
||||
}
|
||||
14
modules/home/kitty.nix
Normal file
14
modules/home/kitty.nix
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
...
|
||||
}:
|
||||
{
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
enableGitIntegration = true;
|
||||
font = {
|
||||
name = "FiraCode Nerd Font";
|
||||
};
|
||||
shellIntegration.enableZshIntegration = true;
|
||||
themeFile = "Catppuccin-Mocha";
|
||||
};
|
||||
}
|
||||
37
modules/home/mango.nix
Normal file
37
modules/home/mango.nix
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
inputs.mango.hmModules.mango
|
||||
];
|
||||
|
||||
wayland.windowManager.mango = {
|
||||
enable = true;
|
||||
settings = ''
|
||||
bind=SUPER,Return,spawn,alacritty
|
||||
bind=SUPER,s,spawn,rofi -show drun
|
||||
|
||||
bind=SUPER,q,killclient
|
||||
bind=SUPER+SHIFT,r,reload_config
|
||||
|
||||
bind=SUPER,t,setlayout,tile
|
||||
bind=SUPER,v,setlayout,vertical_grid
|
||||
bind=SUPER,c,setlayout,spiral
|
||||
bind=SUPER,x,setlayout,scroller
|
||||
bind=SUPER,n,switch_layout
|
||||
bind=SUPER,a,togglegaps
|
||||
|
||||
bind=SUPER,Up,focusdir,up
|
||||
bind=SUPER,Down,focusdir,down
|
||||
bind=SUPER,Left,focusdir,left
|
||||
bind=SUPER,Right,focusdir,right
|
||||
|
||||
bind=SUPER+SHIFT,Up,exchange_client,up
|
||||
bind=SUPER+SHIFT,Down,exchange_client,down
|
||||
bind=SUPER+SHIFT,Left,exchange_client,left
|
||||
bind=SUPER+SHIFT,Right,exchange_client,right
|
||||
'';
|
||||
};
|
||||
}
|
||||
@@ -61,9 +61,6 @@
|
||||
# Formatting files
|
||||
formatter.conform-nvim = {
|
||||
enable = true;
|
||||
setupOpts = {
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
binds = {
|
||||
@@ -221,6 +218,17 @@
|
||||
treesitter.enable = true;
|
||||
};
|
||||
|
||||
rust = {
|
||||
enable = true;
|
||||
# crates = {
|
||||
# enable = true;
|
||||
# };
|
||||
dap.enable = true;
|
||||
format.enable = true;
|
||||
lsp.enable = true;
|
||||
treesitter.enable = true;
|
||||
};
|
||||
|
||||
tailwind = {
|
||||
enable = true;
|
||||
lsp.enable = true;
|
||||
|
||||
@@ -9,19 +9,20 @@
|
||||
discord
|
||||
sqlitebrowser
|
||||
drawio
|
||||
bitwarden-desktop
|
||||
|
||||
# Libre Office
|
||||
libreoffice-qt
|
||||
hunspell
|
||||
hunspellDicts.en_US
|
||||
|
||||
# KDE
|
||||
kdePackages.kate
|
||||
|
||||
# CD Stuff
|
||||
picard
|
||||
heybrochecklog
|
||||
rsgain
|
||||
|
||||
rofi
|
||||
playerctl
|
||||
pamixer
|
||||
brightnessctl
|
||||
];
|
||||
}
|
||||
|
||||
30
modules/home/ssh.nix
Normal file
30
modules/home/ssh.nix
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
...
|
||||
}:
|
||||
{
|
||||
programs.ssh = {
|
||||
enable = true;
|
||||
enableDefaultConfig = false;
|
||||
matchBlocks = {
|
||||
"*" = {
|
||||
addKeysToAgent = "yes";
|
||||
identityFile = [ "~/.ssh/id_ed25519_sk_rk" ];
|
||||
};
|
||||
"stu" = {
|
||||
hostname = "stu.cs.jmu.edu";
|
||||
user = "tamassno";
|
||||
localForwards = [
|
||||
{
|
||||
bind.port = 5432;
|
||||
host = {
|
||||
address = "data.cs.jmu.edu";
|
||||
port = 5432;
|
||||
};
|
||||
}
|
||||
];
|
||||
serverAliveCountMax = 5;
|
||||
serverAliveInterval = 60;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
57
modules/home/stylix.nix
Normal file
57
modules/home/stylix.nix
Normal file
@@ -0,0 +1,57 @@
|
||||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
inputs.stylix.homeModules.stylix
|
||||
];
|
||||
|
||||
stylix = {
|
||||
enable = true;
|
||||
autoEnable = false;
|
||||
polarity = "dark";
|
||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml";
|
||||
targets = {
|
||||
# firefox = {
|
||||
# enable = true;
|
||||
# colorTheme.enable = true;
|
||||
# firefoxGnomeTheme.enable = true;
|
||||
# profileNames = [ "eclypse" ];
|
||||
# };
|
||||
# gtk = {
|
||||
# enable = true;
|
||||
# };
|
||||
qt = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
home.pointerCursor = {
|
||||
gtk.enable = true;
|
||||
package = pkgs.bibata-cursors;
|
||||
name = "Bibata-Modern-Ice";
|
||||
size = 17;
|
||||
};
|
||||
|
||||
gtk = {
|
||||
enable = true;
|
||||
colorScheme = "dark";
|
||||
theme = {
|
||||
name = "Tokyonight-Dark";
|
||||
package = pkgs.tokyonight-gtk-theme.override {
|
||||
tweakVariants = [ "macos" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# home.pointerCursor = {
|
||||
# enable = true;
|
||||
# gtk.enable = true;
|
||||
# name = "Catppuccin-Mocha-Dark-Cursors";
|
||||
# package = pkgs.catppuccin-cursors.mochaDark;
|
||||
# size = 16;
|
||||
# };
|
||||
}
|
||||
@@ -17,6 +17,7 @@
|
||||
aaron-bond.better-comments
|
||||
yzane.markdown-pdf
|
||||
mechatroner.rainbow-csv
|
||||
catppuccin.catppuccin-vsc
|
||||
|
||||
# Remote development
|
||||
ms-vscode-remote.remote-ssh
|
||||
@@ -46,6 +47,14 @@
|
||||
# General
|
||||
"editor.formatOnSave" = true;
|
||||
"workbench.iconTheme" = "material-icon-theme";
|
||||
"workbench.colorTheme" = "Catppuccin Mocha";
|
||||
"catppuccin.accentColor" = "flamingo";
|
||||
|
||||
# Remote SSH
|
||||
# VSCode attempts to write to ~/.ssh/config for remote ssh connections.
|
||||
# Because ~/.ssh/config is managed with home-manager, it is not writeable.
|
||||
# So we specify a custom ssh config path
|
||||
"remote.SSH.configFile" = "/home/eclypse/.ssh/vscode-config";
|
||||
|
||||
# Prettier
|
||||
"editor.defaultFormatter" = "esbenp.prettier-vscode";
|
||||
@@ -85,6 +94,13 @@
|
||||
|
||||
# C / C++
|
||||
"C_Cpp.clang_format_style" = "GNU"; # This is really just for cs361, I actually hate the GNU style
|
||||
"C_Cpp.default.cStandard" = "gnu17";
|
||||
"[c]" = {
|
||||
"editor.defaultFormatter" = "ms-vscode.cpptools";
|
||||
};
|
||||
"[cpp]" = {
|
||||
"editor.defaultFormatter" = "ms-vscode.cpptools";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
25
modules/home/wallpaper.nix
Normal file
25
modules/home/wallpaper.nix
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
wallpapers = config.xdg.userDirs.extraConfig.XDG_WALLPAPERS_DIR;
|
||||
in
|
||||
{
|
||||
home.file."${wallpapers}" = {
|
||||
source = ../../wallpapers;
|
||||
recursive = true;
|
||||
};
|
||||
|
||||
services.wpaperd = {
|
||||
enable = true;
|
||||
settings = {
|
||||
default = {
|
||||
mode = "center";
|
||||
};
|
||||
any = {
|
||||
path = "${wallpapers}/lanterns_of_twilight.png";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
18
modules/home/xdg.nix
Normal file
18
modules/home/xdg.nix
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
xdg = {
|
||||
enable = true;
|
||||
userDirs = {
|
||||
enable = true;
|
||||
createDirectories = true;
|
||||
extraConfig = {
|
||||
XDG_DEV_DIR = "${config.home.homeDirectory}/Dev";
|
||||
XDG_WALLPAPERS_DIR = "${config.xdg.userDirs.pictures}/Wallpapers";
|
||||
XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
10
modules/home/yazi.nix
Normal file
10
modules/home/yazi.nix
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
...
|
||||
}:
|
||||
{
|
||||
programs.yazi = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
shellWrapperName = "y";
|
||||
};
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
@@ -7,13 +8,79 @@
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
starship = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
settings = {
|
||||
add_newline = true;
|
||||
format = pkgs.lib.concatStrings [
|
||||
"[░▒▓](#f38ba8)"
|
||||
"[ ](fg:#1e1e2e bg:#f38ba8)"
|
||||
"[](fg:#f38ba8 bg:#fab387)"
|
||||
"$directory"
|
||||
"[](fg:#fab387 bg:#f9e2af)"
|
||||
"$git_branch"
|
||||
"$git_status"
|
||||
"[](fg:#f9e2af bg:#a6e3a1)"
|
||||
"$nodejs"
|
||||
"$rust"
|
||||
"$golang"
|
||||
"$php"
|
||||
"[](fg:#a6e3a1)"
|
||||
"$line_break"
|
||||
"$character"
|
||||
];
|
||||
directory = {
|
||||
style = "fg:#1e1e2e bg:#fab387";
|
||||
format = "[ $path ]($style)";
|
||||
truncation_length = 3;
|
||||
truncation_symbol = "…/";
|
||||
substitutions = {
|
||||
"Documents" = " ";
|
||||
"Downloads" = " ";
|
||||
"Music" = " ";
|
||||
"Pictures" = " ";
|
||||
};
|
||||
};
|
||||
git_branch = {
|
||||
symbol = "";
|
||||
style = "bg:#f9e2af";
|
||||
format = "[[ $symbol $branch ](fg:#1e1e2e bg:#f9e2af)]($style)";
|
||||
};
|
||||
git_status = {
|
||||
style = "bg:#f9e2af";
|
||||
format = "[[($all_status$ahead_behind )](fg:#1e1e2e bg:#f9e2af)]($style)";
|
||||
};
|
||||
nodejs = {
|
||||
symbol = "";
|
||||
style = "bg:#a6e3a1";
|
||||
format = "[[ $symbol ($version) ](fg:#1e1e2e bg:#a6e3a1)]($style)";
|
||||
};
|
||||
rust = {
|
||||
symbol = "";
|
||||
style = "bg:#a6e3a1";
|
||||
format = ''[[ $symbol ($version) ](fg:#1e1e2e bg:#a6e3a1)]($style)'';
|
||||
};
|
||||
golang = {
|
||||
symbol = "";
|
||||
style = "bg:#a6e3a1";
|
||||
format = "[[ $symbol ($version) ](fg:#1e1e2e bg#a6e3a1)]($style)";
|
||||
};
|
||||
php = {
|
||||
symbol = "";
|
||||
style = "bg:#a6e3a1";
|
||||
format = "[[ $symbol ($version) ](fg:#1e1e2e bg:#a6e3a1)]($style)";
|
||||
};
|
||||
scan_timeout = 100;
|
||||
};
|
||||
};
|
||||
zsh = {
|
||||
enable = true;
|
||||
enableCompletion = true;
|
||||
autosuggestion.enable = true;
|
||||
syntaxHighlighting.enable = true;
|
||||
sessionVariables = {
|
||||
SSH_AUTH_SOCK = "/home/eclypse/.bitwarden-ssh-agent.sock";
|
||||
shellAliases = {
|
||||
stu = "ssh stu";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
20
modules/system/agenix.nix
Normal file
20
modules/system/agenix.nix
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
inputs.agenix.nixosModules.default
|
||||
];
|
||||
|
||||
environment.systemPackages = [
|
||||
inputs.agenix.packages.${pkgs.stdenv.hostPlatform.system}.default # CLI Tool
|
||||
];
|
||||
|
||||
age.secrets = {
|
||||
tailscale-auth.file = ../../secrets/tailscale-auth.age;
|
||||
eclypsecloud-eclypse.file = ../../secrets/eclypsecloud-eclypse.age;
|
||||
eclypse-password.file = ../../secrets/eclypse-password.age;
|
||||
};
|
||||
}
|
||||
@@ -1,8 +1,10 @@
|
||||
{
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
boot = {
|
||||
extraModulePackages = with config.boot.kernelPackages; [ virtualbox ];
|
||||
loader = {
|
||||
systemd-boot = {
|
||||
enable = true;
|
||||
@@ -10,5 +12,6 @@
|
||||
};
|
||||
efi.canTouchEfiVariables = true;
|
||||
};
|
||||
kernelParams = [ "kvm.enable_virt_at_load=0" ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -3,7 +3,9 @@
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
./agenix.nix
|
||||
./boot.nix
|
||||
./desktop.nix
|
||||
./fileSystems.nix
|
||||
./fonts.nix
|
||||
./network.nix
|
||||
@@ -11,6 +13,8 @@
|
||||
./security.nix
|
||||
./services.nix
|
||||
./system.nix
|
||||
./tailscale.nix
|
||||
./user.nix
|
||||
# ./virtualisation.nix
|
||||
];
|
||||
}
|
||||
|
||||
55
modules/system/desktop.nix
Normal file
55
modules/system/desktop.nix
Normal file
@@ -0,0 +1,55 @@
|
||||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
sddm-theme = inputs.silentSDDM.packages.${pkgs.stdenv.hostPlatform.system}.default;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
inputs.mango.nixosModules.mango
|
||||
];
|
||||
|
||||
programs = {
|
||||
hyprland = {
|
||||
enable = true;
|
||||
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
||||
portalPackage =
|
||||
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
|
||||
};
|
||||
mango.enable = true;
|
||||
};
|
||||
|
||||
environment.systemPackages = [
|
||||
sddm-theme
|
||||
sddm-theme.test
|
||||
];
|
||||
|
||||
services.displayManager = {
|
||||
defaultSession = "mango";
|
||||
sddm = {
|
||||
enable = true;
|
||||
package = pkgs.kdePackages.sddm;
|
||||
theme = sddm-theme.pname;
|
||||
extraPackages = sddm-theme.propagatedBuildInputs;
|
||||
settings = {
|
||||
General = {
|
||||
GreeterEnvironment = "QML2_IMPORT_PATH=${sddm-theme}/share/sddm/themes/${sddm-theme.pname}/components/,QT_IM_MODULE=qtvirtualkeyboard";
|
||||
InputMethod = "qtvirtualkeyboard";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Enable the KDE Plasma Desktop Environment.
|
||||
# displayManager.sddm.enable = true;
|
||||
# desktopManager.plasma5.enable = true;
|
||||
|
||||
# Enable the System75 Cosmic Desktop Environment
|
||||
# displayManager.cosmic-greeter.enable = true;
|
||||
# desktopManager.cosmic = {
|
||||
# enable = true;
|
||||
# xwayland.enable = true;
|
||||
# };
|
||||
}
|
||||
45
modules/system/fileSystems.nix
Normal file
45
modules/system/fileSystems.nix
Normal file
@@ -0,0 +1,45 @@
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
automount_opts = [
|
||||
"x-systemd.automount"
|
||||
"x-systemd.idle-timeout=60"
|
||||
"x-systemd.device-timeout=5s"
|
||||
"x-systemd.mount-timeout=5s"
|
||||
"noauto"
|
||||
"user"
|
||||
"users"
|
||||
];
|
||||
in
|
||||
{
|
||||
fileSystems = {
|
||||
"/mnt/EclypseCloud" = {
|
||||
device = "//100.78.212.35/EclypseCloud";
|
||||
fsType = "cifs";
|
||||
options = [
|
||||
"credentials=${config.age.secrets.eclypsecloud-eclypse.path}"
|
||||
"uid=${toString config.users.users.eclypse.uid}"
|
||||
"rw"
|
||||
]
|
||||
++ automount_opts;
|
||||
};
|
||||
"/mnt/Music" = {
|
||||
device = "//100.78.212.35/music";
|
||||
fsType = "cifs";
|
||||
options = [
|
||||
"credentials=${config.age.secrets.eclypsecloud-eclypse.path}"
|
||||
"uid=${toString config.users.users.eclypse.uid}"
|
||||
"rw"
|
||||
]
|
||||
++ automount_opts;
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
cifs-utils
|
||||
# rclone
|
||||
];
|
||||
}
|
||||
@@ -37,5 +37,8 @@
|
||||
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||
git
|
||||
];
|
||||
variables = {
|
||||
EDITOR = "vim";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -2,6 +2,15 @@
|
||||
...
|
||||
}:
|
||||
{
|
||||
programs = {
|
||||
yubikey-manager.enable = true;
|
||||
yubikey-touch-detector.enable = true;
|
||||
};
|
||||
|
||||
services = {
|
||||
yubikey-agent.enable = true;
|
||||
};
|
||||
|
||||
security = {
|
||||
rtkit.enable = true;
|
||||
};
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
@@ -18,12 +19,20 @@
|
||||
# libinput.enable = true;
|
||||
};
|
||||
|
||||
# Enable the KDE Plasma Desktop Environment.
|
||||
displayManager.sddm.enable = true;
|
||||
desktopManager.plasma6.enable = true;
|
||||
|
||||
# Enable CUPS to print documents.
|
||||
printing.enable = true;
|
||||
printing = {
|
||||
enable = true;
|
||||
drivers = with pkgs; [
|
||||
gutenprint
|
||||
cnijfilter2
|
||||
];
|
||||
};
|
||||
|
||||
avahi = {
|
||||
enable = true;
|
||||
nssmdns4 = true;
|
||||
openFirewall = true;
|
||||
};
|
||||
|
||||
# Enable sound with pipewire.
|
||||
pulseaudio.enable = false;
|
||||
@@ -40,6 +49,8 @@
|
||||
# media-session.enable = true;
|
||||
};
|
||||
|
||||
upower.enable = true;
|
||||
|
||||
# Enable the OpenSSH daemon. (Look into Fail2Ban in the future)
|
||||
openssh = {
|
||||
enable = true;
|
||||
@@ -50,4 +61,14 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
hardware = {
|
||||
bluetooth = {
|
||||
enable = true;
|
||||
powerOnBoot = true;
|
||||
};
|
||||
sane = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -14,11 +14,13 @@
|
||||
"https://cache.nixos.org"
|
||||
"https://nix-community.cachix.org"
|
||||
"https://devenv.cachix.org"
|
||||
"https://hyprland.cachix.org"
|
||||
];
|
||||
trusted-public-keys = [
|
||||
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||
"devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="
|
||||
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
31
modules/system/tailscale.nix
Normal file
31
modules/system/tailscale.nix
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
services.tailscale = {
|
||||
enable = true;
|
||||
useRoutingFeatures = "client";
|
||||
authKeyFile = config.age.secrets.tailscale-auth.path;
|
||||
|
||||
# * Only applied if `authKeyFile` is specified
|
||||
extraUpFlags = [
|
||||
"--ssh"
|
||||
"--accept-routes=true"
|
||||
];
|
||||
extraSetFlags = [
|
||||
"--operator=eclypse"
|
||||
];
|
||||
};
|
||||
|
||||
# Taildrop
|
||||
systemd.user.services.taildrop = {
|
||||
description = "Taildrop File Receiver Service";
|
||||
wantedBy = [ "default.target" ];
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
ExecStart = "${pkgs.tailscale}/bin/tailscale file get --verbose --loop %h/Downloads/";
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
inputs,
|
||||
pkgs,
|
||||
host,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
@@ -21,6 +22,8 @@
|
||||
};
|
||||
programs.home-manager.enable = true;
|
||||
};
|
||||
|
||||
backupFileExtension = "backup";
|
||||
};
|
||||
|
||||
users.mutableUsers = false;
|
||||
@@ -31,8 +34,10 @@
|
||||
extraGroups = [
|
||||
"networkmanager"
|
||||
"wheel"
|
||||
"scanner"
|
||||
"lp"
|
||||
];
|
||||
hashedPassword = "$6$33qMKGMsdYC//e/s$Z2mQCqDOwbP185OVOLsE63hg.orMrBbxR8WHIiZ9dAnNk3jgEsEU218qtgsQsyATvjsyHUPBQjsa/3JmNLoMM0";
|
||||
hashedPasswordFile = config.age.secrets.eclypse-password.path;
|
||||
shell = pkgs.zsh;
|
||||
};
|
||||
}
|
||||
|
||||
8
modules/system/virtualisation.nix
Normal file
8
modules/system/virtualisation.nix
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
...
|
||||
}:
|
||||
{
|
||||
virtualisation.virtualbox.host.enable = true;
|
||||
virtualisation.virtualbox.host.enableExtensionPack = true;
|
||||
users.extraGroups.vboxusers.members = [ "eclypse" ];
|
||||
}
|
||||
6
secrets/eclypse-password.age
Normal file
6
secrets/eclypse-password.age
Normal file
@@ -0,0 +1,6 @@
|
||||
age-encryption.org/v1
|
||||
-> ssh-ed25519 7p4RPw wZdiee1a8rqdaNA8EVLUJIEue1ldgrk3HgVGhmHpnTQ
|
||||
8VLt5rSvqN+HAHS9JL6hYSj7xVrTtZAcrn5C12it+Fw
|
||||
--- 9oiyRlMDS7PrUyP4SmkgcMZz+/BENDBn9XN+3216OXY
|
||||
<EFBFBD>%<25>v*|<7C>M<EFBFBD>3<EFBFBD>g<EFBFBD>g<EFBFBD>%;F"s<15><><0B> <20>7<EFBFBD>Uj<55>_H<5F><48><1F><>D<EFBFBD>^*B<>nK'
|
||||
v<EFBFBD><EFBFBD>~<7E>`<60>
|
||||
5
secrets/eclypsecloud-eclypse.age
Normal file
5
secrets/eclypsecloud-eclypse.age
Normal file
@@ -0,0 +1,5 @@
|
||||
age-encryption.org/v1
|
||||
-> ssh-ed25519 7p4RPw dVTohhNu/jjHSNyhw7irzffqzJJFvW0TbkhSmKKrhS8
|
||||
zTc4HaFO3hSYVLM35KwEGUcu2R+JGHIN758FpKKxL5U
|
||||
--- EhTyT6CYdKjAC9yN0kCxx5yW4o27DJteu8YCbVF2Ln4
|
||||
<EFBFBD>ܬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>}<7D>P<EFBFBD><50>l<EFBFBD><6C>'<27><>,QLג5P<13>SMs<4D><0C><₼<><E282BC>z<EFBFBD><7A><EFBFBD><EFBFBD><EFBFBD>yQ<0C>o<EFBFBD> t[a0<0F><>U<EFBFBD><12>z?R<>"&ߨC<DFA8><43><EFBFBD>l<EFBFBD>
|
||||
19
secrets/secrets.nix
Normal file
19
secrets/secrets.nix
Normal file
@@ -0,0 +1,19 @@
|
||||
# This file is NOT imported into the nix configuration, it is just for the agenix CLI
|
||||
let
|
||||
# System public ssh keys (/etc/ssh/)
|
||||
vanta = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAaDVBJdMDFL8r9NQCbaLe+DPHGhGzRv2N7+7m1/U8DP";
|
||||
in
|
||||
{
|
||||
# Tailscale auth key need to be up to date with a valid auth key in the tailscale
|
||||
# dashboard. Single-use keys expire after a single machine connects, and even
|
||||
# reusable keys expire after 90 days.
|
||||
# Update tailscale-auth.age with `agenix -e tailscale-auth.age -i /path/to/private-ssh-key`
|
||||
# Note: Only devices with the below public keys are allowed to edit tailscale-auth.age
|
||||
"tailscale-auth.age".publicKeys = [ vanta ]; # Devices allowed to join the tailnet;
|
||||
|
||||
# Devices that can connect to EclypseCloud with the eclypse user.
|
||||
"eclypsecloud-eclypse.age".publicKeys = [ vanta ];
|
||||
|
||||
# Devices that have the eclypse user
|
||||
"eclypse-password.age".publicKeys = [ vanta ];
|
||||
}
|
||||
6
secrets/tailscale-auth.age
Normal file
6
secrets/tailscale-auth.age
Normal file
@@ -0,0 +1,6 @@
|
||||
age-encryption.org/v1
|
||||
-> ssh-ed25519 7p4RPw 7GuZj43+NoyPXf//ZLM99vossbJXOpDQSkBi3w51Wl8
|
||||
FTMjlyml+T87LQffffY2AJL5IhTAJF2QlfFvhvZpvOs
|
||||
--- iONf8B3bUxXtCiv0EAv5QO0ZyhE5A6YfRbcxUr/awFg
|
||||
<EFBFBD><0E><><EFBFBD>Tw<54><77>J`<60>~B
|
||||
<EFBFBD><11>;<3B>lOh<4F><68>{2<>?<3F><>P<EFBFBD><50>F>@m<>o<><6F>c<EFBFBD><1C>~X<>3<EFBFBD>@.g<0E>ھ<EFBFBD>eK<65><18>V7zphS<68><53>د6<D8AF><36>.W<><57>O@F
|
||||
Reference in New Issue
Block a user