Compare commits

..

2 commits

Author SHA1 Message Date
9f8a9da96c fixup! snowhawk: initrd on root 2024-10-18 12:49:51 -07:00
24bac65678 snowhawk: initrd on root 2024-10-18 12:49:51 -07:00
61 changed files with 493 additions and 4145 deletions

View file

@ -3,11 +3,9 @@ keys:
- &ravenshade age1zgd7qpj7vc4gjtetttqgp32aw75fmnjrw6ax2x2meul2w4jclytszvutdd
hosts:
- &snowhawk age1s549sffdhu2yyfk9h06hhks7xc4mqq9a6k53dleurr7y3rmuudpqwz24gv
- &llynx age1vtsdlkxr3wuy5vtrpwfdr6sy7duzl06htusdu3as2knvfzvhhakqmc70rj
creation_rules:
- path_regex: secrets.yaml$
key_groups:
- age:
- *ravenshade
- *snowhawk
- *llynx

View file

@ -1,4 +1,4 @@
{ nixpkgs, nix-darwin, self, ... }@inputs:
{ nixpkgs, self, ... }@inputs:
let
makePkgs = system: (import nixpkgs {
@ -8,52 +8,6 @@ let
overlays = [
self.overlays.default
inputs.niri.overlays.niri
# inputs.lix-module.overlays.default
inputs.zdwl.overlays.default
inputs.frc-nix.overlays.default
(final: prev: ({
star-citizen = inputs.nix-gaming.packages.${prev.system}.star-citizen;
}))
(final: prev: {
tmux = prev.tmux.overrideAttrs (old: rec {
version = "3.5";
src = prev.fetchFromGitHub {
owner = "tmux";
repo = "tmux";
rev = version;
hash = "sha256-8CRZj7UyBhuB5QO27Y+tHG62S/eGxPOHWrwvh1aBqq0=";
};
});
})
(final: prev: {
lutris-unwrapped = prev.lutris-unwrapped.overrideAttrs (old: rec {
version = "0.5.18";
src = prev.fetchFromGitHub {
owner = "lutris";
repo = "lutris";
rev = "v${version}";
hash = "sha256-dI5hqWBWrOGYUEM9Mfm7bTh7BEc4e+T9gJeiZ3BiqmE=";
};
});
})
(final: prev: {
uhk-agent = prev.uhk-agent.overrideAttrs (old: rec {
pname = "uhk-agent";
version = "5.0.2";
src = prev.fetchurl {
url = "https://github.com/UltimateHackingKeyboard/agent/releases/download/v${version}/UHK.Agent-${version}-linux-x86_64.AppImage";
name = "${pname}-${version}.AppImage";
sha256 = "sha256-A0ALw5noXeeCGvWEFJMyYeNb9mMHyr3DC3T0yK1MQoM=";
};
});
})
];
});
@ -79,6 +33,7 @@ rec {
inputs.home-manager.nixosModules.default
inputs.chaotic.nixosModules.default
inputs.niri.nixosModules.niri
inputs.lix-module.nixosModules.default
{
home-manager.extraSpecialArgs = {
inherit inputs self pkgs;
@ -87,6 +42,12 @@ rec {
}
];
});
compileSystems =
systems:
lib.right
builtins.listToAttrs
(map toPartialNixosConfig)
systems;
toPartialHomeManagerConfig =
{ user, system ? "x86_64-linux", hostname ? "", configHostname ? "" }:
@ -106,35 +67,10 @@ rec {
./hosts/${configHost}/home.nix
];
});
toPartialDarwinConfig =
{ hostname, system ? "aarch64-darwin", }:
nameValuePair
hostname
(nix-darwin.lib.darwinSystem rec {
pkgs = makePkgs system;
specialArgs = { inherit inputs self; };
modules = [
inputs.home-manager.darwinModules.home-manager
./hosts/${hostname}/configuration.nix
{
home-manager.extraSpecialArgs = {
inherit inputs self pkgs;
lib = pkgs.lib.extend (_: _: inputs.home-manager.lib);
};
}
];
});
compileSystems =
toPartialConfiguration:
compileHomes =
systems:
lib.right
builtins.listToAttrs
(map toPartialConfiguration)
(map toPartialHomeManagerConfig)
systems;
compileNixosSystems = compileSystems toPartialNixosConfig;
compileDarwinSystems = compileSystems toPartialDarwinConfig;
compileHomes = compileSystems toPartialHomeManagerConfig;
}

1260
flake.lock

File diff suppressed because it is too large Load diff

View file

@ -2,81 +2,40 @@
description = "snowhawk: a nixos configuration flake";
inputs = {
# Nix
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
lix-module = { url = "https://git.lix.systems/lix-project/nixos-module/archive/2.91.0.tar.gz"; inputs.nixpkgs.follows = "nixpkgs"; };
neovim-overlay = { url = "github:nix-community/neovim-nightly-overlay"; inputs.nixpkgs.follows = "nixpkgs"; };
home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; };
sops-nix = { url = "github:mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; };
nh = { url = "github:viperML/nh"; inputs.nixpkgs.follows = "nixpkgs"; };
# Desktop
hyprland = { url = "github:hyprwm/Hyprland"; };
hyprland-plugins = { url = "github:hyprwm/hyprland-plugins"; inputs.hyprland.follows = "hyprland"; };
split-monitor-workspaces = { url = "github:Duckonaut/split-monitor-workspaces"; inputs.hyprland.follows = "hyprland"; };
anyrun = { url = "github:anyrun-org/anyrun"; inputs.nixpkgs.follows = "nixpkgs"; };
dunst-theme = { url = "github:d2718nis/rose-pine-dunst"; flake = false; };
niri = { url = "github:sodiboo/niri-flake"; inputs.nixpkgs.follows = "nixpkgs"; };
# Themeing
dunst-theme = { url = "github:d2718nis/rose-pine-dunst"; flake = false; };
repo-clone.url = "git+https://git.zynh.me/Zynh0722/repo-clone";
fish_theme = { url = "git+https://git.zynh.me/Zynh0722/omf-theme"; flake = false; };
backgrounds = { url = "git+https://git.zynh.me/Zynh0722/backgrounds"; inputs.nixpkgs.follows = "nixpkgs"; };
rose-pine-swaync = { url = "github:rose-pine/swaync"; flake = false; };
rose-pine-hyprcursor = { url = "github:ndom91/rose-pine-hyprcursor"; inputs.nixpkgs.follows = "nixpkgs"; inputs.hyprlang.follows = "hyprland/hyprlang"; };
# Owie Sharp
neovim-overlay = { url = "github:nix-community/neovim-nightly-overlay"; inputs.nixpkgs.follows = "nixpkgs"; };
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
# Some of my stuff
repo-clone.url = "git+https://git.zynh.me/Zynh0722/repo-clone";
zdwm = { url = "git+https://git.zynh.me/Zynh0722/dwm?ref=preanybar-systray"; flake = false; };
zdwl = { url = "git+https://git.zynh.me/Zynh0722/dwl?ref=0.7"; inputs.nixpkgs.follows = "nixpkgs"; };
# aarch
nix-darwin = { url = "github:LnL7/nix-darwin"; inputs.nixpkgs.follows = "nixpkgs"; };
nixos-apple-silicon = { url = "github:Lederstrumpf/nixos-apple-silicon/mesa-changes"; };
# FRC
frc-nix = { url = "github:Zynh0722/frc-nix"; inputs.nixpkgs.follows = "nixpkgs"; };
# Gaming
umu = { url = "github:Open-Wine-Components/umu-launcher?dir=packaging/nix"; inputs.nixpkgs.follows = "nixpkgs"; };
nix-gaming.url = "github:fufexan/nix-gaming";
deploy-rs = { url = "github:serokell/deploy-rs"; inputs.nixpkgs.follows = "nixpkgs"; };
};
outputs =
{ self, nixpkgs, deploy-rs, ... }@inputs:
{ self, nixpkgs, ... }@inputs:
let
builders = import ./builders.nix inputs;
in
{
nixosConfigurations = builders.compileNixosSystems [
nixosConfigurations = builders.compileSystems [
{ hostname = "snowhawk"; }
{ hostname = "llynx"; system = "aarch64-linux"; }
];
darwinConfigurations = builders.compileDarwinSystems [
{ hostname = "lynx"; }
];
homeConfigurations = builders.compileHomes [
{ user = "zynh"; hostname = "msiserver"; }
{ user = "val"; hostname = "caveserver"; }
{ user = "ravenshade"; hostname = "permafrost"; }
{
user = "zynh";
hostname = "little-lightning";
system = "aarch64-darwin";
}
];
deploy =
let homeConfigPath = username: deploy-rs.lib.x86_64-linux.activate.home-manager self.homeConfigurations.${username};
in {
sshUser = "ravenshade";
nodes.permafrost = {
hostname = "permafrost.local";
profiles.home.path = homeConfigPath "ravenshade@permafrost";
};
};
overlays.default = import ./pkgs;
};
}

View file

@ -0,0 +1,92 @@
From 8f905b563e9dbc2d7b5f4e7c27a2614211c8953a Mon Sep 17 00:00:00 2001
From: Zynh Ludwig <zynh0722@gmail.com>
Date: Wed, 9 Oct 2024 20:12:27 -0700
Subject: [PATCH] dwm config
---
config.def.h | 34 ++++++++++++++++++++--------------
1 file changed, 20 insertions(+), 14 deletions(-)
diff --git a/config.def.h b/config.def.h
index fed4fb9..072f6bc 100644
--- a/config.def.h
+++ b/config.def.h
@@ -1,7 +1,7 @@
/* See LICENSE file for copyright and license details. */
/* appearance */
-static const unsigned int borderpx = 1; /* border pixel of windows */
+static const unsigned int borderpx = 0; /* border pixel of windows */
static const unsigned int snap = 32; /* snap pixel */
static const unsigned int systraypinning = 0; /* 0: sloppy systray follows selected monitor, >0: pin systray to monitor X */
static const unsigned int systrayonleft = 0; /* 0: systray in the right corner, >0: systray on left of status text */
@@ -10,17 +10,18 @@ static const int systraypinningfailfirst = 1; /* 1: if pinning fails, display
static const int showsystray = 1; /* 0 means no systray */
static const int showbar = 1; /* 0 means no bar */
static const int topbar = 1; /* 0 means bottom bar */
-static const char *fonts[] = { "monospace:size=10" };
-static const char dmenufont[] = "monospace:size=10";
-static const char col_gray1[] = "#222222";
-static const char col_gray2[] = "#444444";
-static const char col_gray3[] = "#bbbbbb";
-static const char col_gray4[] = "#eeeeee";
-static const char col_cyan[] = "#005577";
+static const char *fonts[] = { "JetBrainsMono Nerd Font:size=10" };
+static const char dmenufont[] = "JetBrainsMono Nerd Font:size=10";
+static const char col_text[] = "#e0def4";
+static const char col_subtle[] = "#908caa";
+static const char col_muted[] = "#6e6a86";
+static const char col_base[] = "#191724";
+static const char col_iris[] = "#c4a7e7";
+static const char col_h_low[] = "#21202e";
static const char *colors[][3] = {
/* fg bg border */
- [SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
- [SchemeSel] = { col_gray4, col_cyan, col_cyan },
+ [SchemeNorm] = { col_muted, col_h_low, col_base },
+ [SchemeSel] = { col_text, col_base, col_iris },
};
/* tagging */
@@ -33,7 +34,10 @@ static const Rule rules[] = {
*/
/* class instance title tags mask isfloating monitor */
{ "Gimp", NULL, NULL, 0, 1, -1 },
- { "Firefox", NULL, NULL, 1 << 8, 0, -1 },
+ { "discord", NULL, NULL, 1 << 1, 0, 1 },
+ { "calendar", NULL, NULL, 1 << 4, 0, 1 },
+ { "vesktop", NULL, NULL, 1 << 1, 0, 1 },
+ { "nannou", NULL, NULL, 0, 1, -1 },
};
/* layout(s) */
@@ -50,7 +54,7 @@ static const Layout layouts[] = {
};
/* key definitions */
-#define MODKEY Mod1Mask
+#define MODKEY Mod4Mask
#define TAGKEYS(KEY,TAG) \
{ MODKEY, KEY, view, {.ui = 1 << TAG} }, \
{ MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \
@@ -62,13 +66,15 @@ static const Layout layouts[] = {
/* commands */
static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
-static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL };
-static const char *termcmd[] = { "st", NULL };
+static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_h_low, "-nf", col_muted, "-sb", col_base, "-sf", col_text, NULL };
+static const char *termcmd[] = { "alacritty", NULL };
+static const char *scrnshotcmd[] = { "flameshot", "gui", NULL };
static const Key keys[] = {
/* modifier key function argument */
{ MODKEY, XK_p, spawn, {.v = dmenucmd } },
{ MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } },
+ { ControlMask, XK_Print, spawn, {.v = scrnshotcmd } },
{ MODKEY, XK_b, togglebar, {0} },
{ MODKEY, XK_j, focusstack, {.i = +1 } },
{ MODKEY, XK_k, focusstack, {.i = -1 } },
--
2.46.0

View file

@ -1,318 +0,0 @@
# #######################################################################################
# AUTOGENERATED HYPRLAND CONFIG.
# PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hyprland.conf AND EDIT IT,
# OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS.
# #######################################################################################
# This is an example Hyprland config file.
# Refer to the wiki for more information.
# https://wiki.hyprland.org/Configuring/
# Please note not all available settings / options are set here.
# For a full list, see the wiki
# You can split this configuration into multiple files
# Create your files separately and then link them to this file like this:
# source = ~/.config/hypr/myColors.conf
source=~/.config/hypr/rose-pine.conf
################
### MONITORS ###
################
# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=,preferred,auto,auto
###################
### MY PROGRAMS ###
###################
# See https://wiki.hyprland.org/Configuring/Keywords/
# Set programs that you use
$terminal = kitty
$fileManager = pcmanfm
$menu = wofi --show drun
#################
### AUTOSTART ###
#################
# Autostart necessary processes (like notifications daemons, status bars, etc.)
# Or execute your favorite apps at launch like this:
# exec-once = $terminal
# exec-once = nm-applet &
# exec-once = waybar & hyprpaper & firefox
#############################
### ENVIRONMENT VARIABLES ###
#############################
# See https://wiki.hyprland.org/Configuring/Environment-variables/
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
env = MOZ_ENABLE_WAYLAND,1
#####################
### LOOK AND FEEL ###
#####################
# Refer to https://wiki.hyprland.org/Configuring/Variables/
# https://wiki.hyprland.org/Configuring/Variables/#general
general {
gaps_in = 5
gaps_out = 5
border_size = 1
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
col.active_border = $foam $pine 45deg
col.inactive_border = $muted
# Set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = true
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
allow_tearing = false
layout = dwindle
}
# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration {
rounding = 5
rounding_power = 2
# Change transparency of focused and unfocused windows
active_opacity = 1.0
inactive_opacity = 1.0
shadow {
enabled = true
range = 4
render_power = 3
color = rgba(1a1a1aee)
}
# https://wiki.hyprland.org/Configuring/Variables/#blur
blur {
enabled = true
size = 3
passes = 1
vibrancy = 0.1696
}
}
# https://wiki.hyprland.org/Configuring/Variables/#animations
animations {
enabled = no,
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
bezier = easeOutQuint,0.23,1,0.32,1
bezier = easeInOutCubic,0.65,0.05,0.36,1
bezier = linear,0,0,1,1
bezier = almostLinear,0.5,0.5,0.75,1.0
bezier = quick,0.15,0,0.1,1
# animation = global, 1, 10, default
# animation = border, 1, 5.39, easeOutQuint
# animation = windows, 1, 4.79, easeOutQuint
# animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
# animation = windowsOut, 1, 1.49, linear, popin 87%
# animation = windowsMove, 1, 4.79, easeOutQuint
# animation = fadeIn, 1, 1.73, almostLinear
# animation = fadeOut, 1, 1.46, almostLinear
# animation = fade, 1, 3.03, quick
# animation = layers, 1, 3.81, easeOutQuint
# animation = layersIn, 1, 4, easeOutQuint, fade
# animation = layersOut, 1, 1.5, linear, fade
# animation = fadeLayersIn, 1, 1.79, almostLinear
# animation = fadeLayersOut, 1, 1.39, almostLinear
# animation = workspaces, 1, 1.94, almostLinear, fade
# animation = workspacesIn, 1, 1.21, almostLinear, fade
# animation = workspacesOut, 1, 1.94, almostLinear, fade
}
# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
# "Smart gaps" / "No gaps when only"
# uncomment all if you wish to use that.
# workspace = w[tv1], gapsout:0, gapsin:0
# workspace = f[1], gapsout:0, gapsin:0
# windowrulev2 = bordersize 0, floating:0, onworkspace:w[tv1]
# windowrulev2 = rounding 0, floating:0, onworkspace:w[tv1]
# windowrulev2 = bordersize 0, floating:0, onworkspace:f[1]
# windowrulev2 = rounding 0, floating:0, onworkspace:f[1]
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
dwindle {
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # You probably want this
}
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
master {
new_status = master
}
# https://wiki.hyprland.org/Configuring/Variables/#misc
misc {
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
}
cursor {
inactive_timeout = 5
}
#############
### INPUT ###
#############
# https://wiki.hyprland.org/Configuring/Variables/#input
input {
kb_layout = us
kb_variant =
kb_model =
kb_options =
kb_rules =
follow_mouse = 1
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
touchpad {
natural_scroll = true
clickfinger_behavior = true
}
}
# https://wiki.hyprland.org/Configuring/Variables/#gestures
gestures {
workspace_swipe = true
workspace_swipe_distance = 50
}
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
device {
name = epic-mouse-v1
sensitivity = -0.5
}
###################
### KEYBINDINGS ###
###################
# See https://wiki.hyprland.org/Configuring/Keywords/
$mainMod = SUPER # Sets "Windows" key as main modifier
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod, Q, exec, $terminal
bind = $mainMod, C, killactive,
bind = $mainMod, M, exit,
bind = $mainMod, E, exec, $fileManager
bind = $mainMod, V, togglefloating,
bind = $mainMod, R, exec, $menu
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, J, togglesplit, # dwindle
# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, split-workspace, 1
bind = $mainMod, 2, split-workspace, 2
bind = $mainMod, 3, split-workspace, 3
bind = $mainMod, 4, split-workspace, 4
bind = $mainMod, 5, split-workspace, 5
bind = $mainMod, 6, split-workspace, 6
bind = $mainMod, 7, split-workspace, 7
bind = $mainMod, 8, split-workspace, 8
bind = $mainMod, 9, split-workspace, 9
bind = $mainMod, 0, split-workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, split-movetoworkspace, 1
bind = $mainMod SHIFT, 2, split-movetoworkspace, 2
bind = $mainMod SHIFT, 3, split-movetoworkspace, 3
bind = $mainMod SHIFT, 4, split-movetoworkspace, 4
bind = $mainMod SHIFT, 5, split-movetoworkspace, 5
bind = $mainMod SHIFT, 6, split-movetoworkspace, 6
bind = $mainMod SHIFT, 7, split-movetoworkspace, 7
bind = $mainMod SHIFT, 8, split-movetoworkspace, 8
bind = $mainMod SHIFT, 9, split-movetoworkspace, 9
bind = $mainMod SHIFT, 0, split-movetoworkspace, 10
# Example special workspace (scratchpad)
bind = $mainMod, S, togglespecialworkspace, magic
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
bind = $mainMod SHIFT, minus, exec, bash -c "XDG_CURRENT_DESKTOP=sway flameshot gui"
bind = $mainMod, n, exec, swaync-client -t
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Laptop multimedia keys for volume and LCD brightness
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-
# Requires playerctl
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
##############################
### WINDOWS AND WORKSPACES ###
##############################
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
# Example windowrule v1
# windowrule = float, ^(kitty)$
# Example windowrule v2
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
# Ignore maximize requests from apps. You'll probably like this.
windowrulev2 = suppressevent maximize, class:.*
# Fix some dragging issues with XWayland
windowrulev2 = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
plugin {
split-monitor-workspaces {
count = 10
keep_focused = 0
enable_notifications = 1
enable_persistent_workspaces = 0
}
}

View file

@ -1,19 +0,0 @@
# name: Rosé Pine
# author: jishnurajendran
# upstream: https://github.com/jishnurajendran/hyprland-rosepine/blob/main/rose-pine.conf
# All natural pine, faux fur and a bit of soho vibes for the classy minimalist
$base = 0xff191724
$surface = 0xff1f1d2e
$overlay = 0xff26233a
$muted = 0xff6e6a86
$subtle = 0xff908caa
$text = 0xffe0def4
$love = 0xffeb6f92
$gold = 0xfff6c177
$rose = 0xffebbcba
$pine = 0xff31748f
$foam = 0xff9ccfd8
$iris = 0xffc4a7e7
$highlightLow = 0xff21202e
$highlightMed = 0xff403d52
$highlightHigh = 0xff524f67

View file

@ -1,53 +0,0 @@
## name: Rosé Pine
## author: mvllow
## license: MIT
## upstream: https://github.com/rose-pine/kitty/blob/main/dist/rose-pine.conf
## blurb: All natural pine, faux fur and a bit of soho vibes for the classy minimalist
foreground #d8d8d8
# background #050505
selection_foreground #e0def4
selection_background #403d52
cursor #524f67
cursor_text_color #e0def4
url_color #c4a7e7
active_tab_foreground #e0def4
active_tab_background #26233a
inactive_tab_foreground #6e6a86
inactive_tab_background #191724
# black
color0 #181818
color8 #6b6b6b
# red
color1 #ac4242
color9 #c55555
# green
color2 #90a959
color10 #aac474
# yellow
color3 #f4bf75
color11 #fcea88
# blue
color4 #6a9fb5
color12 #82b8c8
# magenta
color5 #aa759f
color13 #c28cb8
# cyan
color6 #75b5aa
color14 #93d3c3
# white
color7 #d8d8d8
color15 #f8f8f8

View file

@ -1,54 +0,0 @@
## name: Rosé Pine
## author: mvllow
## license: MIT
## upstream: https://github.com/rose-pine/kitty/blob/main/dist/rose-pine.conf
## blurb: All natural pine, faux fur and a bit of soho vibes for the classy minimalist
foreground #e0def4
background #191724
selection_foreground #e0def4
selection_background #403d52
cursor #524f67
cursor_text_color #e0def4
url_color #c4a7e7
active_tab_foreground #e0def4
active_tab_background #26233a
inactive_tab_foreground #6e6a86
inactive_tab_background #191724
# black
color0 #26233a
color8 #6e6a86
# red
color1 #eb6f92
color9 #eb6f92
# green
color2 #31748f
color10 #31748f
# yellow
color3 #f6c177
color11 #f6c177
# blue
color4 #9ccfd8
color12 #9ccfd8
# magenta
color5 #c4a7e7
color13 #c4a7e7
# cyan
color6 #ebbcba
color14 #ebbcba
# white
color7 #e0def4
color15 #e0def4

View file

@ -9,18 +9,6 @@ in {
xdg.mimeApps =
let
browser = "firefox.desktop";
browserApps = [
"application/pdf"
"application/x-extension-htm"
"application/x-extension-html"
"application/x-extension-shtml"
"application/x-extension-xht"
"application/x-extension-xhtml"
"application/xhtml+xml"
"text/html"
"x-scheme-handler/http"
"x-scheme-handler/https"
];
mimeAppsFor =
value: list:
@ -30,15 +18,24 @@ in {
{
enable = true;
defaultApplications = lib.mkMerge [
(mimeAppsFor browser browserApps)
(mimeAppsFor browser [
"application/pdf"
"application/x-extension-htm"
"application/x-extension-html"
"application/x-extension-shtml"
"application/x-extension-xht"
"application/x-extension-xhtml"
"application/xhtml+xml"
"text/html"
"x-scheme-handler/about"
"x-scheme-handler/http"
"x-scheme-handler/https"
])
(mimeAppsFor "brave-browser.desktop" [
"x-scheme-handler/chrome"
])
];
associations.added = lib.mkMerge [
(mimeAppsFor browser browserApps)
];
};
home.sessionVariables = {

View file

@ -1,50 +0,0 @@
{ lib, config, pkgs, ... }:
let
cfg = config.snowhawk.firefox;
in
{
options.snowhawk.firefox = {
enable = lib.mkEnableOption "firefox home-manager module";
};
config = lib.mkIf cfg.enable {
programs.firefox = {
enable = true;
package = pkgs.firefox;
profiles.default = {
isDefault = true;
path = "x56262ch.default";
userChrome = /* css */ ''
#main-window[tabsintitlebar="true"]:not([extradragspace="true"]) #TabsToolbar > .toolbar-items {
opacity: 0;
pointer-events: none;
}
#main-window:not([tabsintitlebar="true"]) #TabsToolbar {
visibility: collapse !important;
}
#titlebar {display: none !important;}
#main-window {-moz-appearance:none !important;}
#sidebar-box[sidebarcommand="treestyletab_piro_sakura_ne_jp-sidebar-action"] #sidebar-header {
display: none;
}
'';
};
profiles.alt = {
id = 1;
path = "05fb1no8.casualypurple";
userChrome = config.programs.firefox.profiles.default.userChrome;
};
};
home.packages = with pkgs; [
(writeShellScriptBin "alt-firefox" ''
${lib.getExe config.programs.firefox.package} -P "alt"
'')
];
};
}

View file

@ -42,11 +42,9 @@ in
shellAbbrs = lib.mkIf (!macos) {
copy = "xclip -sel clip";
};
interactiveShellInit = lib.concatStringsSep "\n" [
(builtins.readFile "${inputs.fish_theme}/fish_prompt.fish")
(builtins.readFile ../fish/config.fish)
# "${lib.getExe pkgs.any-nix-shell} fish --info-right | source"
];
interactiveShellInit =
builtins.readFile "${inputs.fish_theme}/fish_prompt.fish" + "\n" +
builtins.readFile ../fish/config.fish;
};
home.packages = with pkgs; [

View file

@ -22,13 +22,8 @@ in
};
config = lib.mkIf cfg.enable {
# home.packages = with pkgs; [ flameshot ];
home.packages = with pkgs; [ flameshot ];
# xdg.configFile."flameshot/flameshot.ini".text = lib.generators.toINI { } cfg.config;
services.flameshot = {
enable = true;
settings = cfg.config;
};
xdg.configFile."flameshot/flameshot.ini".text = lib.generators.toINI { } cfg.config;
};
}

View file

@ -64,7 +64,6 @@ in
};
extraConfig = {
safe.directory = "/etc/nixos";
init.defaultBranch = "main";
core = {

View file

@ -1,51 +0,0 @@
{ lib, config, pkgs, ... }:
let
cfg = config.snowhawk.kitty;
macos = config.snowhawk.macos.enable;
in
{
options.snowhawk.kitty = {
enable = lib.mkEnableOption "kitty home-manager module";
};
config = lib.mkIf cfg.enable {
programs.kitty = {
enable = true;
shellIntegration.enableFishIntegration = true;
settings =
let
macos_fonts = {
font_family = lib.mkForce "family=\"JetBrainsMono Nerd Font Mono\" style=\"Light\"";
bold_font = lib.mkForce "family=\"JetBrainsMono Nerd Font Mono\" style=\"Regular\"";
italic_font = lib.mkForce "family=\"JetBrainsMono Nerd Font Mono\" style=\"Light Italic\"";
bold_italic_font = lib.mkForce "family=\"JetBrainsMono Nerd Font Mono\" style=\"Regular Italic\"";
};
linux_fonts = {
font_family = "family=\"JetBrainsMono Nerd Font\" style=\"ExtraLight\"";
bold_font = "family=\"JetBrainsMono Nerd Font\" style=\"Light\"";
italic_font = "family=\"JetBrainsMono Nerd Font\" style=\"ExtraLight Italic\"";
bold_italic_font = "family=\"JetBrainsMono Nerd Font\" style=\"Light Italic\"";
};
in
{
background = "#050505";
background_opacity = 0.98;
font_size = 12;
# allow_remote_control = "yes";
} // (if !macos then linux_fonts else macos_fonts);
extraConfig =
let
kitten = "${pkgs.kitty}/bin/kitten";
in
''
include ${../../home/kitty/alacritty-colors.conf}
# map ctrl+k ${pkgs.writeShellScript "kitten-snap" "${kitten} @ get-text --self --ansi > /tmp/test"}
'';
};
};
}

View file

@ -1,18 +0,0 @@
{ lib, config, pkgs, inputs, ... }:
let
cfg = config.snowhawk.lutris;
in
{
options.snowhawk.lutris = {
enable = lib.mkEnableOption "lutris";
};
config = lib.mkIf cfg.enable {
home.packages = [
pkgs.umu-launcher
pkgs.lutris
];
};
}

View file

@ -20,7 +20,7 @@ in
config =
let
nvim-treesitter = pkgs.vimPlugins.nvim-treesitter;
treesitterWithGrammars = nvim-treesitter.withAllGrammars;
treesitterWithGrammars = nvim-treesitter.withPlugins (_: nvim-treesitter.allGrammars);
treesitter-parsers = pkgs.symlinkJoin {
name = "treesitter-parsers";
@ -56,19 +56,11 @@ in
];
extraPackages = with pkgs; [
marksman
nil
nixpkgs-fmt
rustup
lua-language-server
fzf
stylua
taplo
gnumake
zig
gcc
clang-tools
coreutils
];
};
};

View file

@ -2,6 +2,50 @@
let
cfg = config.snowhawk.pipewire-controller;
pipewire-controller =
let
mpv = lib.getExe pkgs.mpv;
pamixer = lib.getExe pkgs.pamixer;
in
pkgs.writers.writeRustBin "pipewire-controller" { } ''
use std::{process::Command, str};
const MUTE_AUDIO: &str = "${../audio/discord-mute.mp3}";
const UNMUTE_AUDIO: &str = "${../audio/discord-unmute.mp3}";
fn main() {
let mute_status = Command::new("${pamixer}")
.args(["--default-source", "--get-mute"])
.output()
.expect("Unable to get mute status from pamixer")
.stdout;
let mute_status = str::from_utf8(&mute_status[..]).expect("pamixer output wasn't a string").trim();
if mute_status == "false" {
Command::new("${pamixer}")
.args(["--default-source", "--mute"])
.output()
.expect("Unable to mute via pamixer");
Command::new("${mpv}")
.args(["--no-video", "--volume=80", MUTE_AUDIO])
.output()
.expect("Unable to play audio via mpv");
} else {
Command::new("${pamixer}")
.args(["--default-source", "--unmute"])
.output()
.expect("Unable to unmute via pamixer");
Command::new("${mpv}")
.args(["--no-video", "--volume=80", UNMUTE_AUDIO])
.output()
.expect("Unable to play audio via mpv");
}
}
'';
in
{
options.snowhawk.pipewire-controller = {
@ -9,14 +53,10 @@ in
};
config = lib.mkIf cfg.enable {
snowhawk.sxhkd.enable = lib.mkDefault true;
snowhawk.sxhkd.enable = true;
services.sxhkd.keybindings = lib.mkIf config.snowhawk.sxhkd.enable {
"XF86TouchpadOn" = "${lib.getExe pkgs.pipewire-controller}";
services.sxhkd.keybindings = {
"XF86TouchpadOn" = "${lib.getExe pipewire-controller}";
};
wayland.windowManager.hyprland.settings.bind = lib.mkIf config.wayland.windowManager.hyprland.enable [
", XF86TouchpadOn, exec, ${lib.getExe pkgs.pipewire-controller}"
];
};
}

View file

@ -14,5 +14,12 @@ in
config = lib.mkIf cfg.enable {
systemd.user.startServices = "sd-switch";
repo-clone = {
enable = true;
repos = {
"${config.home.homeDirectory}/Pictures/backgrounds".url = lib.zgitRepo "backgrounds";
};
};
};
}

View file

@ -1,31 +0,0 @@
{ config, pkgs, lib, ... }:
let
cfg = config.snowhawk.satty;
in
{
options.snowhawk.satty = {
enable = lib.mkEnableOption "satty module";
};
config = lib.mkIf cfg.enable {
home.packages = with pkgs; [
grim
jq
satty
slurp
wl-clipboard
astal.river
];
xdg.configFile = {
"satty/config.toml".source = pkgs.writers.writeTOML "satty-config.toml" {
general = {
action-on-enter = "save-to-clipboard";
copy-command = "${pkgs.wl-clipboard}/bin/wl-copy -t image/png";
output-filename = "${config.home.homeDirectory}/Pictures/screenShots/screenshot-%FT%T.png";
save-after-copy = true;
};
};
};
};
}

View file

@ -22,39 +22,32 @@ in
programs.ssh = {
enable = true;
includes = [ "conf.d/*" ];
matchBlocks = rec {
matchBlocks = {
"git.zynh.me" = {
hostname = "git.zynh.me";
user = "git";
port = 2221;
identityFile = keyPathIfSops "personal_git";
};
"github.com" = {
hostname = "github.com";
user = "git";
identityFile = keyPathIfSops "github";
};
snowhawk = {
hostname = "192.168.0.22";
hostname = "192.168.0.21";
user = "ravenshade";
proxyJump = "ravenshade@permafrost";
proxyJump = "zynh@msiserver";
identityFile = keyPathIfSops "snowhawk";
};
permafrost = {
msiserver = {
hostname = "scarlet.zynh.me";
user = "ravenshade";
user = "zynh";
identityFile = keyPathIfSops "msiserver";
};
"msiserver.local" = lib.mkIf cfg.homeNetwork {
hostname = "msiserver";
user = "zynh";
identityFile = keyPathIfSops "msiserver";
};
"permafrost.local" = lib.mkIf cfg.homeNetwork (permafrost // {
hostname = "permafrost";
});
caveserver = {
identityFile = keyPathIfSops "caveserver";
};
virtmsi = {
hostname = "192.168.122.76";
identityFile = keyPathIfSops "snowhawk";
};
};
};
@ -63,7 +56,6 @@ in
"private_keys/caveserver" = { };
"private_keys/snowhawk" = { };
"private_keys/personal_git" = { };
"private_keys/github" = { };
"ssh_hosts/caveserver".path = "${sshDir}/conf.d/caveserver_config";
};

View file

@ -45,7 +45,7 @@ in
gtk.enable = true;
x11.enable = true;
name = name;
size = 24;
size = 16;
package =
pkgs.runCommand "moveUp" { } ''
mkdir -p $out/share/icons

View file

@ -15,8 +15,6 @@ in
programs.tmux = {
enable = true;
shell = getExe (if macos then pkgs.zsh else pkgs.fish);
# shell = if macos then "/bin/zsh" else (getExe pkgs.fish);
# shell = getExe pkgs.fish;
mouse = true;
baseIndex = 1;
terminal = "screen-256color";

View file

@ -1,4 +1,4 @@
{ lib, config, pkgs, ... }:
{ lib, config, ... }:
let
cfg = config.snowhawk.user;
@ -19,12 +19,9 @@ in
home.username = lib.mkDefault cfg.username;
home.homeDirectory = lib.mkDefault "/home/${cfg.username}";
home.packages = with pkgs; [ comma ];
home.sessionPath = [
"${config.home.homeDirectory}/.cargo/bin"
"${config.home.homeDirectory}/.dotnet/tools"
"${config.home.homeDirectory}/.local/bin"
];
snowhawk.tmux.sessionizer.paths = [

View file

@ -1,33 +0,0 @@
{ lib, config, pkgs, ... }:
let
cfg = config.snowhawk.wezterm;
macos = config.snowhawk.macos.enable;
in
{
options.snowhawk.wezterm = {
enable = lib.mkEnableOption "kitty home-manager module";
};
config = lib.mkIf cfg.enable {
home.packages = with pkgs; [
wezterm
fd
];
programs.wezterm = {
enable = true;
extraConfig = /* lua */''
return require 'modules'
'';
};
xdg.configFile = {
wezterm = {
source = ../../home/wezterm;
recursive = true;
executable = true;
};
};
};
}

View file

@ -15,7 +15,7 @@ in
in lib.mkIf cfg.enable {
home.packages = with pkgs; [
xivlauncher
# fflogs
fflogs
(writeShellScriptBin "iinact" ''
${pkgs.brave}/bin/brave --new-window "http://proxy.iinact.com/overlay/skyline/?OVERLAY_WS=ws://127.0.0.1:10501/ws"

View file

@ -1,50 +0,0 @@
local wezterm = require("wezterm")
-- This is the M table that we will export
local M = {}
-- define a function in the M table.
-- Only functions defined in `M` will be exported to
-- code that imports this M.
-- The suggested convention for making Ms that update
-- the config is for them to export an `apply_to_config`
-- function that accepts the config object, like this:
function M.apply_to_config(config)
config.colors = {
foreground = "#d8d8d8",
background = "#050505",
selection_fg = "#e0def4",
selection_bg = "#403d52",
cursor_bg = "#524f67",
cursor_fg = "#e0def4",
cursor_border = "#524f67",
ansi = {
"#181818",
"#ac4242",
"#90a959",
"#f4bf75",
"#6a8fb5",
"#aa759f",
"#75b5aa",
"#d8d8d8",
},
brights = {
"#6b6b6b",
"#c55555",
"#aac474",
"#fcea88",
"#82b8c8",
"#c28cb8",
"#93d3c3",
"#f8f8f8",
},
}
end
-- return our M table
return M

View file

@ -1,49 +0,0 @@
local wezterm = require("wezterm")
local config = wezterm.config_builder()
local colors = require("modules/colors")
colors.apply_to_config(config)
config.unix_domains = { { name = "unix" } }
config.default_gui_startup_args = { "connect", "unix" }
config.font = wezterm.font("JetBrainsMono Nerd Font")
config.use_fancy_tab_bar = false
config.tab_bar_at_bottom = true
-- https://github.com/wez/wezterm/issues/5990
config.front_end = "WebGpu"
local act = wezterm.action
local sessionizer = require("modules/sessionizer")
local navigator = require("modules/navigator")
-- timeout_milliseconds defaults to 1000 and can be omitted
config.leader = { key = "b", mods = "CTRL", timeout_milliseconds = 1000 }
config.keys = {
{ key = "b", mods = "LEADER|CTRL", action = act.ActivateLastTab },
{ key = "p", mods = "LEADER", action = act.ActivateTabRelative(-1) },
{ key = "p", mods = "LEADER|CTRL", action = act.ActivateTabRelative(-1) },
{ key = "n", mods = "LEADER", action = act.ActivateTabRelative(1) },
{ key = "n", mods = "LEADER|CTRL", action = act.ActivateTabRelative(1) },
{ key = "s", mods = "LEADER", action = act.ShowLauncherArgs({ flags = "WORKSPACES" }) },
{ key = "\\", mods = "LEADER", action = act.SplitHorizontal({ domain = "CurrentPaneDomain" }) },
{ key = "-", mods = "LEADER", action = act.SplitVertical({ domain = "CurrentPaneDomain" }) },
{ key = "c", mods = "LEADER", action = act.SpawnTab("CurrentPaneDomain") },
{ key = "a", mods = "LEADER", action = act.AttachDomain("unix") },
{ key = "d", mods = "LEADER|CTRL", action = act.DetachDomain("CurrentPaneDomain") },
-- Integration with neovim panes
-- { key = "h", mods = "CTRL", action = act.EmitEvent("ActivatePaneDirection-left") },
-- { key = "j", mods = "CTRL", action = act.EmitEvent("ActivatePaneDirection-down") },
-- { key = "k", mods = "CTRL", action = act.EmitEvent("ActivatePaneDirection-up") },
-- { key = "l", mods = "CTRL", action = act.EmitEvent("ActivatePaneDirection-right") },
{ key = "f", mods = "LEADER", action = wezterm.action_callback(sessionizer.toggle) },
}
return config

View file

@ -1,53 +0,0 @@
local wezterm = require("wezterm")
local M = {}
-- https://github.com/lrvdijk/dotfiles/blob/master/wezterm/wezterm.lua
-- Integration with neovim panes
function M.isViProcess(pane)
-- get_foreground_process_name On Linux, macOS and Windows,
-- the process can be queried to determine this path. Other operating systems
-- (notably, FreeBSD and other unix systems) are not currently supported
-- return pane:get_foreground_process_name():find('n?vim') ~= nil
-- Use get_title as it works for multiplexed sessions too
return pane:get_title():find("n?vim") ~= nil
end
function M.conditionalActivatePane(window, pane, pane_direction, vim_direction)
local vim_pane_changed = false
if M.isViProcess(pane) then
local before = pane:get_cursor_position()
window:perform_action(
-- This should match the keybinds you set in Neovim.
wezterm.action.SendKey({ key = vim_direction, mods = "CTRL" }),
pane
)
wezterm.sleep_ms(50)
local after = pane:get_cursor_position()
if before.x ~= after.x and before.y ~= after.y then
vim_pane_changed = true
end
end
if not vim_pane_changed then
window:perform_action(wezterm.action.ActivatePaneDirection(pane_direction), pane)
end
end
function M.apply_to_config(config)
wezterm.on("ActivatePaneDirection-right", function(window, pane)
M.conditionalActivatePane(window, pane, "Right", "l")
end)
wezterm.on("ActivatePaneDirection-left", function(window, pane)
M.conditionalActivatePane(window, pane, "Left", "h")
end)
wezterm.on("ActivatePaneDirection-up", function(window, pane)
M.conditionalActivatePane(window, pane, "Up", "k")
end)
wezterm.on("ActivatePaneDirection-down", function(window, pane)
M.conditionalActivatePane(window, pane, "Down", "j")
end)
end
return M

View file

@ -1,52 +0,0 @@
local wezterm = require("wezterm")
local act = wezterm.action
local M = {}
local fd = "/home/ravenshade/.nix-profile/bin/fd"
M.toggle = function(window, pane)
local projects = {}
local success, stdout, stderr = wezterm.run_child_process({
fd,
"-HI",
"^.git$",
"--max-depth=4",
"--prune",
os.getenv("HOME") .. "/projects",
os.getenv("HOME") .. "/.config",
os.getenv("HOME") .. "/src",
})
if not success then
wezterm.log_error("Failed to run fd: " .. stderr)
return
end
for line in stdout:gmatch("([^\n]*)\n?") do
local project = line:gsub("/.git.*$", "")
local label = project
local id = project:gsub(".*/", "")
table.insert(projects, { label = tostring(label), id = tostring(id) })
end
window:perform_action(
act.InputSelector({
action = wezterm.action_callback(function(win, _, id, label)
if not id and not label then
wezterm.log_info("Cancelled")
else
wezterm.log_info("Selected " .. label)
win:perform_action(act.SwitchToWorkspace({ name = id, spawn = { cwd = label } }), pane)
end
end),
fuzzy = true,
title = "Select project",
choices = projects,
}),
pane
)
end
return M

View file

@ -0,0 +1,54 @@
{ pkgs, lib, ... }:
{
imports = [
../../home/modules
];
nix = {
package = pkgs.nix;
settings = {
auto-optimise-store = true;
experimental-features = [ "nix-command" "flakes" ];
};
};
snowhawk = {
alacritty.enable = true;
macos.enable = true;
sources.enable = true;
projects.enable = true;
ssh = {
enable = true;
homeNetwork = true;
};
neovim.enable = true;
sops.enable = true;
};
programs.alacritty.settings = {
font.size = lib.mkForce 16.0;
window.opacity = lib.mkForce 0.94;
colors.primary.background = lib.mkForce "#171717";
};
home.username = "zynh";
home.homeDirectory = "/Users/zynh";
home.packages = with pkgs; [
nix-output-monitor
(writeShellScriptBin "rebuild" ''
home-manager switch --flake ~/nixos#zynh@little-lightning |& nom
'')
wakeonlan
go
rustup
fzf
];
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
home.stateVersion = "23.11";
}

View file

@ -1,122 +0,0 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running `nixos-help`).
{ pkgs, inputs, lib, config, ... }:
{
imports = [
inputs.nixos-apple-silicon.nixosModules.default
inputs.home-manager.nixosModules.default
../../modules
# Default specialisation
({ lib, config, ... }: {
config = lib.mkIf (config.specialisation != { }) {
snowhawk.hyprland.enable = true;
};
})
];
# boot.binfmt.emulatedSystems = [
# "x86_64-linux"
# "i686-linux"
# ];
# Install/enable all proprietary firmware
# hardware.enableAllFirmware = true;
environment.sessionVariables.MOZ_GMP_PATH = [
"${pkgs.widevine-cdm}/share/google/chrome/WidevineCdm/manifest.json"
];
snowhawk = {
filesystem.enable = true;
user.enable = true;
env.enable = true;
sops.enable = true;
audio.enable = true;
};
snowhawk.plymouth = {
enable = true;
theme = "owl";
};
specialisation = {
plasma.configuration = {
environment.etc."specialisation".text = "plasma";
services.xserver.enable = true;
services.displayManager.sddm.enable = true;
services.desktopManager.plasma6.enable = true;
services.hypridle.enable = true;
systemd.user.services.hypridle.path = [ pkgs.brightnessctl ];
};
};
documentation = {
enable = true;
dev.enable = true;
man.enable = true;
};
home-manager = {
users = { "ravenshade" = import ./home.nix; };
backupFileExtension = "backup";
useGlobalPkgs = true;
};
# programs.steam.enable = true;
# hardware.graphics.enable32Bit = lib.mkForce false;
services.flatpak.enable = true;
systemd.services.flatpak-repo = {
wantedBy = [ "multi-user.target" ];
path = [ pkgs.flatpak ];
script = ''
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
'';
};
environment.systemPackages = with pkgs; [
pkgs.rose-pine-gtk-theme
pkgs.rose-pine-icon-theme
pkgs.adwaita-icon-theme
neovim
bashmount
curl
git
killall
iwd
iwgtk
gparted
exfatprogs
linux-manual
inputs.nh.packages.${pkgs.system}.default
];
environment.variables.NH_FLAKE = "/home/ravenshade/.config/nixos";
environment.variables.NIXOS_OZONE_WL = 1;
fonts.packages = with pkgs; [
nerd-fonts.jetbrains-mono
];
# Enable CUPS to print documents.
services.printing.enable = true;
# Set your time zone.
time.timeZone = "America/Los_Angeles";
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "23.11"; # Did you read the comment?
}

View file

@ -1,77 +0,0 @@
# 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, inputs, ... }:
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot.initrd.availableKernelModules = [ "usb_storage" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
# FIXME: was previously only "apple_dcp.show_notch=1"
# wish I could predict the commit hash
boot.kernelParams = lib.mkForce [
"earlycon"
"console=tty0"
"boot.shell_on_fail"
"nvme_apple.flush_interval=0"
"quiet"
"splash"
"boot.shell_on_fail"
"loglevel=3"
"rd.systemd.show_status=false"
"rd.udev.log_level=3"
"udev.log_priority=3"
"apple_dcp.show_notch=1"
"root=fstab"
"splash"
"loglevel=0"
];
hardware.asahi.peripheralFirmwareDirectory = ./firmware;
hardware.asahi.useExperimentalGPUDriver = true;
fileSystems."/" = {
device = "/dev/disk/by-uuid/9dba1955-a00b-4963-ac49-74e925ddd1b2";
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/C215-0A0E";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
zramSwap.enable = true;
swapDevices = [{
device = "/swap";
size = 24 * 1000;
}];
# Use the systemd-boot EFI boot loader.
boot.loader.grub = {
enable = true;
efiSupport = true;
device = "nodev";
theme = pkgs.rose-pine-grub;
};
boot.loader.efi.canTouchEfiVariables = false;
# 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.wlan0.useDHCP = lib.mkDefault true;
networking.wireless.iwd = {
enable = true;
settings.General.EnableNetworkConfiguration = true;
};
networking.hostName = "llynx";
nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
}

View file

@ -1,93 +0,0 @@
{ pkgs, config, lib, inputs, ... }:
{
imports = [
../../home/modules
];
snowhawk = {
# Desktop
firefox.enable = true;
kitty.enable = true;
theme.enable = true;
sops.enable = true;
# dunst.enable = true;
flameshot.enable = true;
sources.enable = true;
projects.enable = true;
# Term Tools
neovim.enable = true;
direnv.enable = true;
};
wayland.windowManager.hyprland.settings.monitor = [ ",preferred,auto,auto" ];
snowhawk.ssh = {
enable = true;
homeNetwork = true;
};
repo-clone.enable = true;
repo-clone.repos = {
"${config.home.homeDirectory}/Pictures/backgrounds".url = lib.zgitRepo "backgrounds";
};
home.packages = with pkgs; [
bottom
ncspot
vesktop
ripgrep
lazygit
iwd
gcc
wl-clipboard
unzip
fzf
tree
pulsemixer
duf
pcmanfm
jq
advantagescope
wpilib.glass
wpilib.shuffleboard
wpilib.datalogtool
elastic-dashboard
pathplanner
# inputs.frc-nix.packages."x86_64-linux".pathplanner
box64
openjdk17-bootstrap
(vscode-with-extensions.override {
vscodeExtensions = with vscode-extensions; [
wpilibsuite.vscode-wpilib
vscjava.vscode-java-debug
vscjava.vscode-java-dependency
redhat.java
vscodevim.vim
mvllow.rose-pine
eamodio.gitlens
];
})
];
programs.nix-index.enable = true;
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
home.stateVersion = "23.11";
}

View file

@ -1,199 +0,0 @@
{ pkgs, lib, self, inputs, ... }: {
# List packages installed in system profile. To search by name, run:
# $ nix-env -qaP | grep wget
environment.systemPackages = [
inputs.nh.packages.${pkgs.system}.default
];
nix.settings.experimental-features = [ "nix-command" "flakes" ];
nix.optimise.automatic = true;
environment.variables = {
NH_FLAKE = "/Users/ravenshade/nixos";
};
environment.shells = with pkgs; [ bashInteractive zsh fish ];
# Enable alternative shell support in nix-darwin.
# programs.fish.enable = true;
services.yabai =
let
gap = 10;
gapListParts = builtins.map
(x: lib.attrsets.nameValuePair (x + "_padding") gap)
[ "top" "bottom" "left" "right" ];
gapSettings = (builtins.listToAttrs gapListParts) // { window_gap = gap; };
in
{
enable = true;
enableScriptingAddition = true;
config = {
layout = "bsp";
window_shadow = "float";
mouse_modifier = "fn";
mouse_action1 = "move";
mouse_action2 = "resize";
focus_follows_mouse = "autoraise";
mouse_follows_focus = "off";
window_topmost = "off";
} // gapSettings;
extraConfig = ''
yabai -m rule --add app="^System Settings$" manage=off
yabai -m rule --add app="Python" manage=off
yabai -m rule --add app="macroquad_playground" manage=off
yabai -m rule --add app="^coreautha$" manage=off
yabai -m rule --add app="^Robot Simulation$" manage=off
'';
};
services.skhd =
let
yabaiSwapToFullscreen = pkgs.writeShellApplication {
name = "yabai-swap-to-fullscreen";
runtimeInputs = [ pkgs.jq pkgs.yabai ];
text = ''
focus() {
yabai -m space --focus "$1"
}
get_fs_displays() {
yabai -m query --spaces | jq -c 'map(select(."is-native-fullscreen" == true))'
}
get_visible() {
printf '%s' "$1" | jq -c 'map(select(."is-visible" == true))'
}
is_empty() {
length="$(printf '%s' "$1" | jq 'length')"
[ "$length" -le 0 ]
}
first() {
printf '%s' "$1" | jq 'sort_by(.index) | .[0].index'
}
try_focus_visible() {
# This should be at max length 1. Though this may likely break in a multimonitor environment
visible_fullscreen_displays=$(get_visible "$1")
if ! is_empty "$visible_fullscreen_displays"; then
visible_index=$(printf '%s' "$visible_fullscreen_displays" | jq -c '.[0].index')
next_index=$((visible_index + 1))
if [ "$(printf '%s' "$fullscreen_displays" | jq "map(select(.index == $next_index)) | length")" -gt "0" ]; then
focus "$next_index"
return 0
fi
fi
return 1
}
main() {
fullscreen_displays="$(get_fs_displays)"
is_empty "$fullscreen_displays" && focus 1 && return 1
try_focus_visible "$fullscreen_displays" && return 1
focus "$(first "$fullscreen_displays")"
}
main
'';
};
# Idk if macos' 'open' is something I can find in nixpkgs lmfao
newAlacrityWindow = pkgs.writeShellApplication {
name = "new-alacritty-window";
runtimeInputs = [ pkgs.alacritty ];
text = ''
alacritty_output=$(alacritty msg create-window 2>/dev/null)
if [ -z "$alacritty_output" ]; then
open /Applications/Alacritty.app
fi
'';
};
session = pkgs.writeText "main-kitty-session" ''
cd /Users/zynh
'';
yabai = lib.getExe pkgs.yabai;
kitty = lib.getExe pkgs.kitty;
in
{
enable = true;
skhdConfig = ''
# float / unfloat window and center on screen
alt - t : ${yabai} -m window --toggle float --grid 4:4:1:1:2:2
# open terminal window using shell script
cmd - return : ${kitty} --session ${session} --single-instance
# rebind space switching
ctrl - left : ${yabai} -m space --focus prev || ${yabai} -m space --focus last
ctrl - right : ${yabai} -m space --focus next || ${yabai} -m space --focus first
# focusing specific spaces
cmd - 1 : ${yabai} -m space --focus 1
cmd - 2 : ${yabai} -m space --focus 2
cmd - 3 : ${yabai} -m space --focus 3
cmd - 4 : ${yabai} -m space --focus 4
cmd - 5 : ${yabai} -m space --focus 5
cmd - 6 : ${yabai} -m space --focus 6
cmd - 7 : ${yabai} -m space --focus 7
cmd - 8 : ${yabai} -m space --focus 8
cmd - 9 : ${yabai} -m space --focus 9
cmd - 0x32 : ${lib.getExe yabaiSwapToFullscreen}
# moving windows
cmd + shift - 1 : ${yabai} -m window --space 1
cmd + shift - 2 : ${yabai} -m window --space 2
cmd + shift - 3 : ${yabai} -m window --space 3
# cmd + shift - 4 : ${yabai} -m window --space 4
cmd + shift - 5 : ${yabai} -m window --space 5
cmd + shift - 6 : ${yabai} -m window --space 6
cmd + shift - 7 : ${yabai} -m window --space 7
cmd + shift - 8 : ${yabai} -m window --space 8
cmd + shift - 9 : ${yabai} -m window --space 9
cmd + shift - 0x32 : ${yabai} -m window --toggle native-fullscreen
# cmd + alt - 4 : "cmd + shift - 4"
'';
};
home-manager.sharedModules = [
{
home.file.".config/yabai/yabaiExe".source = lib.getExe pkgs.yabai;
home.packages = with pkgs; [ yabai ];
}
];
security.pam.enableSudoTouchIdAuth = true;
users.users.ravenshade = {
name = "ravenshade";
home = "/Users/ravenshade";
};
home-manager = {
users = { "ravenshade" = import ./home.nix; };
backupFileExtension = "backup";
};
fonts.packages = with pkgs; [
nerd-fonts.jetbrains-mono
];
# Set Git commit hash for darwin-version.
system.configurationRevision = self.rev or self.dirtyRev or null;
# $ darwin-rebuild changelog
system.stateVersion = 5;
}

View file

@ -1,86 +0,0 @@
{ pkgs, lib, config, ... }:
{
imports = [
../../home/modules
];
snowhawk = {
alacritty.enable = false;
kitty.enable = true;
macos.enable = true;
sources.enable = true;
projects.enable = true;
ssh = {
enable = true;
homeNetwork = true;
};
neovim.enable = true;
sops.enable = true;
direnv.enable = true;
};
# nixpkgs.overlays = [
# (final: prev: {
# tmux = prev.tmux.overrideAttrs (old: rec {
# version = "3.5";
# src = prev.fetchFromGitHub {
# owner = "tmux";
# repo = "tmux";
# rev = version;
# hash = "sha256-8CRZj7UyBhuB5QO27Y+tHG62S/eGxPOHWrwvh1aBqq0=";
# };
# });
# })
# ];
# programs.tmux.extraConfig = ''
# set -gu default-command
# set -g default-shell "$SHELL"
# '';
snowhawk.tmux.sessionizer.paths = [
"~/Documents/obsidian"
];
programs.kitty.settings = {
background_opacity = lib.mkForce 0.94;
background = lib.mkForce "#171717";
font_size = lib.mkForce 16.0;
hide_window_decorations = lib.mkForce "titlebar-only";
macos_option_as_alt = lib.mkForce "both";
};
programs.alacritty.settings = {
font.size = lib.mkForce 16.0;
window.opacity = lib.mkForce 0.94;
colors.primary.background = lib.mkForce "#171717";
};
home.username = "ravenshade";
home.homeDirectory = "/Users/ravenshade";
home.packages = with pkgs; [
nix-output-monitor
(writeShellScriptBin "rebuild" ''
darwin-rebuild switch --flake ~/nixos#lynx |& nom
'')
(writeShellScriptBin "restart-skhd" ''
launchctl stop org.nixos.skhd
launchctl start org.nixos.skhd
'')
wakeonlan
go
rustup
fzf
gh
];
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
home.stateVersion = "23.11";
}

30
hosts/msiserver/home.nix Normal file
View file

@ -0,0 +1,30 @@
{ pkgs, inputs, ... }:
{
imports = [
../../home/modules
];
snowhawk.neovim = {
enable = true;
package = inputs.neovim-overlay.packages.${pkgs.system}.default;
};
snowhawk.ssh.enable = true;
snowhawk.sops.enable = true;
snowhawk.user.username = "zynh";
home.packages = with pkgs; [
nix-output-monitor
(writeShellScriptBin "rebuild" ''
home-manager switch -v |& nom
'')
go
wakeonlan
];
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
home.stateVersion = "23.11";
}

View file

@ -1,53 +0,0 @@
{ pkgs, inputs, ... }:
{
imports = [
../../home/modules
];
nix = {
package = pkgs.nix;
settings = {
auto-optimise-store = true;
experimental-features = [ "nix-command" "flakes" ];
};
};
snowhawk.neovim = {
enable = true;
};
snowhawk.ssh.enable = true;
snowhawk.sops.enable = true;
snowhawk.repo-clone.enable = true;
snowhawk.user.username = "ravenshade";
snowhawk.tmux.sessionizer.paths = [
"/etc/nixos"
];
home.packages = with pkgs; [
nix-output-monitor
(writeShellScriptBin "rebuild" ''
home-manager switch --flake /home/ravenshade/.config/home-manager#ravenshade@virtmsi |& nom
'')
pkgs.nix
inputs.nh.packages.${pkgs.system}.default
goaccess
go
wakeonlan
];
home.sessionVariables = {
NH_FLAKE = "/home/ravenshade/permafrost";
};
programs.nix-index.enable = true;
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
home.stateVersion = "23.11";
}

View file

@ -2,7 +2,7 @@
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running `nixos-help`).
{ pkgs, inputs, lib, config, ... }:
{ pkgs, inputs, lib, ... }:
{
imports = [
@ -12,207 +12,60 @@
# Default specialisation
({ lib, config, ... }: {
config = lib.mkIf (config.specialisation != { }) {
hardware.nvidia.open = lib.mkForce true;
snowhawk.dwm.enable = true;
snowhawk.hyprland = {
enable = true;
nvidia = true;
split-monitor-workspaces = true;
};
home-manager.sharedModules = [{
wayland.windowManager.hyprland = {
settings = {
monitor = [
"DP-1, 1920x1080@144, 1920x0, 1"
"HDMI-A-1, 1920x1080@60, 0x0, 1"
];
};
};
}];
home-manager.sharedModules = [{ snowhawk.dunst.enable = lib.mkDefault true; }];
};
})
];
specialisation =
let
nvkConfig = {
system.nixos.tags = [ "nouveau-drivers" ];
boot.kernelParams = lib.mkAfter [ "nouveau.config=NvGspRm=1" ];
services.xserver.videoDrivers = (lib.lists.remove "nvidia" config.services.xserver.videoDrivers);
specialisation = {
dwl.configuration = {
snowhawk.dwl.enable = true;
hardware.firmware = [ (config.hardware.nvidia.package).firmware ];
boot.blacklistedKernelModules = [
"nvidia"
"nvidiafb"
"nvidia-drm"
"nvidia-uvm"
"nvidia-modeset"
];
};
in
{
# dwmNVK.configuration = {
# environment.etc."specialisation".text = "dwm";
#
# snowhawk.dwm.enable = true;
#
# home-manager.sharedModules = [{ snowhawk.dunst.enable = lib.mkDefault true; }];
# } // nvkConfig;
# dwl.configuration = {
# environment.etc."specialisation".text = "dwl";
#
# hardware.nvidia.open = lib.mkForce true;
#
# snowhawk.dwl.enable = true;
#
# home-manager.sharedModules = [{ snowhawk.dunst.enable = lib.mkDefault true; }];
# };
dwm.configuration = {
environment.etc."specialisation".text = "dwm";
snowhawk.dwm.enable = true;
home-manager.sharedModules = [{
snowhawk.dunst.enable = lib.mkDefault true;
snowhawk.dwm.useXFixes = true;
}];
};
# plasma.configuration = {
# environment.etc."specialisation".text = "plasma";
#
# hardware.nvidia.open = lib.mkForce true;
#
# services.xserver.enable = true;
# services.displayManager.sddm.enable = true;
# services.desktopManager.plasma6.enable = true;
# };
# dwlNVK.configuration = {
# environment.etc."specialisation".text = "dwlNVK";
#
# snowhawk.dwl.enable = true;
#
# home-manager.sharedModules = [{ snowhawk.dunst.enable = lib.mkDefault true; }];
# } // nvkConfig;
home-manager.sharedModules = [{ snowhawk.dunst.enable = lib.mkDefault true; }];
};
services.libinput.mouse.middleEmulation = false;
};
snowhawk = {
filesystem.enable = true;
plymouth.enable = true;
polkit.enable = true;
syncthing.enable = true;
user.enable = true;
wake-on-lan.enable = true;
star-citizen.enable = true;
};
snowhawk.plymouth = {
enable = true;
theme = "owl";
};
programs.gamemode.enable = true;
# Enable automatic login for the user.
services.displayManager.autoLogin = {
enable = true;
user = "ravenshade";
};
documentation = {
enable = true;
dev.enable = true;
man.enable = true;
};
home-manager = {
users = { "ravenshade" = import ./home.nix; };
backupFileExtension = "backup";
useGlobalPkgs = true;
};
services.flatpak.enable = true;
xdg.portal.enable = true;
xdg.portal.config.common.default = "*";
xdg.portal.extraPortals = with pkgs; [ xdg-desktop-portal-gtk ];
systemd.services.flatpak-repo = {
wantedBy = [ "multi-user.target" ];
path = [ pkgs.flatpak ];
script = ''
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
'';
};
environment.systemPackages = with pkgs; [
mysql-workbench
# FIXME: extract to theme module?
pkgs.rose-pine-gtk-theme
pkgs.rose-pine-icon-theme
pkgs.adwaita-icon-theme
bluetui
blueberry
brightnessctl
neovim
curl
git
killall
gamemode
linux-manual
inputs.nh.packages.${pkgs.system}.default
godot_4-mono
];
environment.variables.NH_FLAKE = "/home/ravenshade/.config/nixos";
fonts.packages = with pkgs; [
nerd-fonts.jetbrains-mono
(nerdfonts.override { fonts = [ "JetBrainsMono" ]; })
];
# Enable CUPS to print documents.
services.printing.enable = true;
services.ratbagd.enable = true;
programs.gamescope.enable = true;
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
gamescopeSession.enable = true;
};
# Adds pkgs.uhk-dev-rules to services.udev.packages
hardware.keyboard.uhk.enable = true;
swapDevices = [{
device = "/swap";
size = 16 * 1024;
}];
# Also recommended, either as an alternative or in addition
zramSwap.enable = true;
virtualisation.docker.enable = true;
users.users.ravenshade.extraGroups = [ "docker" "libvirtd" ];
virtualisation = {
libvirtd = {
enable = true;
qemu = {
package = pkgs.qemu_kvm;
};
};
};
programs.virt-manager.enable = true;
# I think I need a gtk theme? gnome-keyring
qt.platformTheme = "gtk2";

View file

@ -48,8 +48,8 @@ in
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/0499-9841";
fileSystems."/efi" = {
device = "/dev/disk/by-uuid/1A0A-CEB2";
fsType = "vfat";
};
@ -89,7 +89,6 @@ in
partOf = [ "graphical-session.target" ];
};
systemd.user.services.fehbg.after = [ "screenlayout.service" ];
hardware.nvidia = {
@ -113,7 +112,7 @@ in
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
# Only available from driver 515.43.04+
# Currently alpha-quality/buggy, so false is currently the recommended setting.
open = false;
open = true;
# Enable the Nvidia settings menu,
# accessible via `nvidia-settings`.
@ -130,23 +129,19 @@ in
swapDevices = [ ];
# Bootloader.
boot.loader.grub = {
enable = true;
efiSupport = true;
device = "nodev";
theme = pkgs.rose-pine-grub;
default = "saved";
extraEntries = ''
menuentry 'Windows Boot Manager (on /dev/nvme0n1p1)' --class windows --class os {
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=root 22A0-639A
chainloader /efi/Microsoft/Boot/bootmgfw.efi
}
'';
boot.loader = {
grub = {
enable = true;
efiSupport = true;
useOSProber = true;
device = "nodev";
theme = pkgs.rose-pine-grub;
};
efi = {
canTouchEfiVariables = true;
efiSysMountPoint = "/efi";
};
};
boot.loader.efi.canTouchEfiVariables = true;
# Enable networking
networking.networkmanager.enable = true;

View file

@ -1,4 +1,4 @@
{ pkgs, config, lib, inputs, ... }:
{ pkgs, config, ... }:
{
imports = [
@ -7,17 +7,16 @@
snowhawk = {
# Desktop
firefox.enable = true;
dunst.enable = true;
theme.enable = true;
redshift.enable = true;
flameshot.enable = true;
playerctl.enable = true;
kitty.enable = true;
alacritty.enable = true;
defaultPrograms.enable = true;
pipewire-controller.enable = true;
# Games
lutris.enable = true;
xivlauncher.enable = true;
# Term Tools
@ -40,7 +39,6 @@
apps = {
github.url = "https://github.com";
zgit.url = "https://git.zynh.me";
gmail.url = "https://mail.google.com/mail/u/0";
calendar.url = "https://calendar.google.com/calendar/u/0/r";
slack_nh.urlFile = config.sops.secrets."app_urls/nh_slack".path;
};
@ -51,47 +49,17 @@
homeNetwork = true;
};
repo-clone.repos = {
"${config.home.homeDirectory}/Pictures/backgrounds".url = lib.zgitRepo "backgrounds";
};
snowhawk.tmux.sessionizer.paths = [
"~/obsidian"
];
home.packages = with pkgs; [
# (writeShellScriptBin "battlenet" ''
# export WINEARCH=win64
# export WINEPREFIX=$HOME/.wine-battlenet
# wine64 ~/.wine-battlenet/drive_c/Program\ Files\ \(x86\)/Battle.net/Battle.net\ Launcher.exe
# '')
(wineWowPackages.full.override {
wineRelease = "staging";
mingwSupport = true;
})
winetricks
r2modman
wowup-cf
(writeShellScriptBin "fix-desktop" ''
systemctl --user restart xrootdatetime.service
systemctl --user restart fehbg.service
'')
ripgrep
unzip
fzf
tree
ncspot
pathplanner
gparted
arandr
bear
brave
firefox
spotify
vesktop
@ -100,36 +68,27 @@
'')
steam-run
brave
nix-output-monitor
(writeShellScriptBin "rebuild" ''
nixos-rebuild switch --log-format internal-json -v $@ |& nom --json
'')
(writeShellScriptBin "alt-firefox" ''
${lib.getExe pkgs.firefox} -P "alt"
'')
(writeShellScriptBin "suspend" ''
systemctl suspend
'')
(writeShellScriptBin "reboot-windows" ''
sudo ${pkgs.grub2}/bin/grub-reboot "Windows Boot Manager (on /dev/nvme0n1p1)"
sudo reboot
'')
(writeShellScriptBin "roblox" ''
flatpak run org.vinegarhq.Sober
'')
prismlauncher
feh
imagemagick
uhk-agent
pulsemixer
obsidian
inputs.deploy-rs.packages.${pkgs.system}.default
steam
# Build Tools
gnumake
@ -140,25 +99,10 @@
nodejs_22
dotnet-sdk_8
blender
ffmpeg
duf
qdirstat
pcmanfm
geeqie
jq
gimp
rsync
eww
dwm-msg
pwvucontrol
];
programs.nix-index.enable = true;

View file

@ -10,8 +10,8 @@ in
config = lib.mkIf cfg.enable {
# Enable sound with pipewire.
services.pulseaudio.enable = false;
services.pulseaudio.extraModules = [ pkgs.pulseaudio-modules-bt ];
hardware.pulseaudio.enable = false;
hardware.pulseaudio.extraModules = [ pkgs.pulseaudio-modules-bt ];
security.rtkit.enable = true;
services.pipewire = {
enable = true;

View file

@ -1,4 +1,4 @@
{ lib, config, pkgs, inputs, ... }:
{ lib, config, pkgs, ... }:
let
cfg = config.snowhawk.dwl;
@ -9,7 +9,7 @@ in
package = lib.mkOption {
type = with lib.types; package;
default = inputs.zdwl.packages."x86_64-linux".default;
default = pkgs.dwl;
apply = p: p.overrideAttrs {
postInstall = ''
mkdir -p $out/share/wayland-sessions
@ -23,16 +23,8 @@ in
config = lib.mkIf cfg.enable {
services.graphical-desktop.enable = lib.mkDefault true;
services.displayManager = {
enable = true;
sessionPackages = [ cfg.package ];
defaultSession = "dwl";
# TODO: greetd?
sddm = {
enable = lib.mkDefault true;
wayland.enable = lib.mkDefault true;
};
};
services.displayManager.sessionPackages = [ cfg.package ];
services.displayManager.defaultSession = "dwl";
security = {
polkit.enable = lib.mkDefault true;
@ -40,75 +32,28 @@ in
# pam.services.swaylock = { };
};
# environment.sessionVariables.NIXOS_OZONE_WL = "1";
environment.sessionVariables.NIXOS_OZONE_WL = "1";
programs = {
dconf.enable = lib.mkDefault true;
xwayland.enable = lib.mkDefault true;
};
xdg.portal = {
enable = true;
wlr.enable = lib.mkDefault true;
extraPortals = [
pkgs.xdg-desktop-portal-gtk
pkgs.xdg-desktop-portal-wlr
];
};
xdg.portal.wlr.enable = lib.mkDefault true;
xdg.portal.extraPortals = [
pkgs.xdg-desktop-portal-gtk
];
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1050913
xdg.portal.config.dwl.default = lib.mkDefault [ "wlr" "gtk" ];
services.xserver.desktopManager.runXdgAutostartIfNone = lib.mkDefault true;
environment.variables = {
QT_QPA_PLATFORM = "wayland;xcb";
MOZ_ENABLE_WAYLAND = 1;
SDL_VIDEODRIVER = "wayland,x11"; # TODO: Test me
_JAVA_AWT_WM_NONREPARENTING = 1;
XDG_CURRENT_DESKTOP = "dwl";
XDG_SESSION_DESKTOP = "dwl";
};
environment.systemPackages = with pkgs; [
grim
slurp
satty
dwlmsg
wdisplays
xorg.xlsclients
wl-clipboard
wmenu
kitty
foot
cfg.package
pipewire-controller
(pkgs.writeShellApplication {
name = "sattySnap";
runtimeInputs = [ satty grim gawk gnugrep dwlmsg ];
text =
let
sattyArgs = lib.cli.toGNUCommandLineShell { } {
early-exit = true;
filename = "-";
fullscreen = true;
initial-tool = "crop";
};
in
''
grim -o "$(dwlmsg -g | grep "selmon 1" | awk '{ print $1 }')" - | satty ${sattyArgs}
'';
})
];
home-manager.sharedModules = [
{ snowhawk.satty.enable = lib.mkDefault true; }
];
};
}

View file

@ -1,6 +1,7 @@
{ lib, config, pkgs, inputs, ... }:
let
inherit (pkgs) fetchpatch;
inherit (lib) getExe;
cfg = config.snowhawk.dwm;
@ -22,16 +23,18 @@ in
};
};
services.libinput = {
enable = true;
mouse.accelProfile = "flat";
};
services.xserver.windowManager.dwm = {
enable = true;
package = pkgs.dwm.overrideAttrs (oldAttrs: {
src = inputs.zdwm;
buildInputs = oldAttrs.buildInputs ++ [ pkgs.yajl ];
patches = [
# Systray patch
(fetchpatch {
url = "https://dwm.suckless.org/patches/systray/dwm-systray-20230922-9f88553.diff";
hash = "sha256-KeNXvXTxgAFomP/68hljeVLHd9JvXy8WHQ+66nQZCKE=";
})
../home/dwm/config.def.h-6.5.diff
];
});
};
@ -41,35 +44,18 @@ in
};
systemd.user.services.xrootdatetime = {
script =
let
pamixer = getExe pkgs.pamixer;
xsetroot = getExe pkgs.xorg.xsetroot;
in
/* bash */ ''
function update_x_root() {
set +e # allow errors
mute="$(${pamixer} --default-source --get-mute)"
set -e # disallow errors
if [[ "$mute" == "true" ]]; then
mutedString="Mic Muted "
else
mutedString=""
fi
dateTime=$(date +"<-- %A, %B %d -- %H:%M -->")
${xsetroot} -name "$mutedString$dateTime"
}
trap update_x_root SIGUSR1
while true; do
sleep 1 &
wait
update_x_root
done
'';
script = ''
while true; do
if [[ "$(${getExe pkgs.pamixer} --default-source --get-mute)" == "true" ]]; then
mutedString="Mic Muted "
else
mutedString=""
fi
dateTime=$(date +"<-- %A, %B %d -- %H:%M -->")
${getExe pkgs.xorg.xsetroot} -name "$mutedString$dateTime"
sleep 1
done
'';
wantedBy = [ "graphical-session.target" ];
after = [ "pipewire.service" ];
serviceConfig.Restart = "on-failure";
@ -83,15 +69,9 @@ in
partOf = [ "graphical-session.target" ];
};
environment.variables.FREETYPE_PROPERTIES = "cff:no-stem-darkening=0 autofitter:no-stem-darkening=0";
environment.systemPackages = with pkgs; [
dmenu
xclip
flameshot
rose-pine-gtk-theme
rose-pine-icon-theme
];
home-manager.sharedModules = [

View file

@ -10,7 +10,6 @@ in
config = lib.mkIf cfg.enable {
nix.settings = {
trusted-users = [ "ravenshade" ];
experimental-features = [ "nix-command" "flakes" ];
auto-optimise-store = true;
};

View file

@ -1,4 +1,4 @@
{ config, lib, pkgs, ... }:
{ config, lib, ... }:
let
inherit (lib) mkIf mkEnableOption;
@ -7,39 +7,12 @@ in
{
options.snowhawk.dwm = {
enable = mkEnableOption "niri home-manager module";
useXFixes = mkEnableOption "using unclutter-xfixes instead of unclutter";
};
config = mkIf cfg.enable {
# WM Stuff
xsession.numlock.enable = true;
services.unclutter = {
enable = true;
package = if cfg.useXFixes then pkgs.unclutter-xfixes else pkgs.unclutter;
};
systemd.user.services.unclutter.Service.ExecStart =
let cfg = config.services.unclutter;
in lib.mkForce ''
${cfg.package}/bin/unclutter \
--timeout ${toString cfg.timeout} \
--jitter ${toString (cfg.threshold - 1)} \
${lib.concatStrings cfg.extraOptions}
'';
home.file.".xinitrc".text = ''
[ -f ~/.Xresources ] && ${lib.getExe pkgs.xorg.xrdb} -merge ~/.Xresources
'';
xresources.properties = {
"Xft.lcdfilter" = "lcddefault";
"Xft.hintstyle" = "hintslight";
"Xft.hinting" = "1";
"Xft.antialias" = "1";
"Xft.rgba" = "none";
};
services.unclutter.enable = true;
};
}

View file

@ -1,446 +0,0 @@
{ lib, config, pkgs, inputs, ... }:
let
cfg = config.snowhawk.hyprland;
in
{
options.snowhawk.hyprland = {
enable = lib.mkEnableOption "hyprland";
split-monitor-workspaces = lib.mkEnableOption "split-monitor-workspaces";
nvidia = lib.mkEnableOption "hyprland nvidia tweaks";
};
config = lib.mkIf cfg.enable (lib.mkMerge [
# Core Module
{
services.graphical-desktop.enable = lib.mkDefault true;
services.displayManager = {
enable = true;
sddm = {
enable = lib.mkDefault true;
wayland.enable = lib.mkDefault true;
};
};
security = {
polkit.enable = lib.mkDefault true;
};
programs = {
dconf.enable = lib.mkDefault true;
xwayland.enable = lib.mkDefault true;
};
# xdg.portal = {
# enable = true;
# extraPortals = [
# pkgs.xdg-desktop-portal
# pkgs.xdg-desktop-portal-gtk
# ];
# };
programs.waybar.enable = true;
programs.hyprland = {
enable = true;
withUWSM = true;
xwayland.enable = true;
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
portalPackage = inputs.hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland;
};
services.hypridle.enable = true;
systemd.user.services.hypridle.path = [ pkgs.brightnessctl ];
# programs.hyprlock.enable = true;
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1050913
# xdg.portal.config.hyprland.default = lib.mkDefault [ "wlr" "gtk" ];
services.xserver.desktopManager.runXdgAutostartIfNone = lib.mkDefault true;
environment.variables = {
QT_QPA_PLATFORM = "wayland;xcb";
MOZ_ENABLE_WAYLAND = 1;
SDL_VIDEODRIVEWR = "wayland,x11";
_JAVA_AWT_WM_NONREPARENTING = 1;
};
environment.systemPackages = [
inputs.rose-pine-hyprcursor.packages.${pkgs.system}.default
];
}
# hyprland configuration
{
home-manager.sharedModules = [{
wayland.windowManager.hyprland = {
enable = true;
# extraConfig = builtins.readFile ../home/hypr/hyprland.conf;
settings = {
source = [ "${../home/hypr/rose-pine.conf}" ];
env = [
"XCURSOR_SIZE,24"
"HYPRCURSOR_SIZE,24"
"HYPRCURSOR_THEME,rose-pine-hyprcursor"
"MOZ_ENABLE_WAYLAND,1"
];
# TODO: Direct links
"$terminal" = "kitty";
"$fileManager" = "pcmanfm";
"$menu" = "wofi --show drun";
"$mainMod" = "SUPER";
general = {
gaps_in = 5;
gaps_out = 5;
border_size = 1;
"col.active_border" = "$foam $pine 45deg";
"col.inactive_border" = "$muted";
resize_on_border = true;
allow_tearing = false;
layout = "dwindle";
};
# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration = {
rounding = 5;
rounding_power = 2;
active_opacity = 1.0;
inactive_opacity = 1.0;
shadow = {
enabled = true;
range = 4;
render_power = 3;
color = "rgba(1a1a1aee)";
};
# https://wiki.hyprland.org/Configuring/Variables/#blur
blur = {
enabled = true;
size = 3;
passes = 1;
vibrancy = 0.1696;
};
};
# https://wiki.hyprland.org/Configuring/Variables/#animations
animations = {
enabled = "no,";
bezier = [ "easeOutQuint,0.23,1,0.32,1" "easeInOutCubic,0.65,0.05,0.36,1" "linear,0,0,1,1" "almostLinear,0.5,0.5,0.75,1.0" "quick,0.15,0,0.1,1" ];
# I need to tinker with these some more for llynx
# animation = global, 1, 10, default
# animation = border, 1, 5.39, easeOutQuint
# animation = windows, 1, 4.79, easeOutQuint
# animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
# animation = windowsOut, 1, 1.49, linear, popin 87%
# animation = windowsMove, 1, 4.79, easeOutQuint
# animation = fadeIn, 1, 1.73, almostLinear
# animation = fadeOut, 1, 1.46, almostLinear
# animation = fade, 1, 3.03, quick
# animation = layers, 1, 3.81, easeOutQuint
# animation = layersIn, 1, 4, easeOutQuint, fade
# animation = layersOut, 1, 1.5, linear, fade
# animation = fadeLayersIn, 1, 1.79, almostLinear
# animation = fadeLayersOut, 1, 1.39, almostLinear
# animation = workspaces, 1, 1.94, almostLinear, fade
# animation = workspacesIn, 1, 1.21, almostLinear, fade
# animation = workspacesOut, 1, 1.94, almostLinear, fade
};
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
dwindle = {
pseudotile = true;
preserve_split = true;
};
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
master = {
new_status = "master";
};
# https://wiki.hyprland.org/Configuring/Variables/#misc
misc = {
force_default_wallpaper = -1;
disable_hyprland_logo = false;
};
cursor = {
inactive_timeout = 5;
};
# https://wiki.hyprland.org/Configuring/Variables/#input
input = {
kb_layout = "us";
kb_variant = "";
kb_model = "";
kb_options = "";
kb_rules = "";
follow_mouse = 1;
sensitivity = 0;
numlock_by_default = true;
touchpad = {
natural_scroll = true;
clickfinger_behavior = true;
};
};
# https://wiki.hyprland.org/Configuring/Variables/#gestures
gestures = {
workspace_swipe = true;
workspace_swipe_distance = 50;
};
plugin = {
split-monitor-workspaces = lib.mkIf cfg.split-monitor-workspaces {
count = 10;
keep_focused = 10;
enable_notifications = 0;
enable_persistent_workspaces = 0;
};
};
windowrulev2 = [
# Ignore maximize requests from apps. You'll probably like this.
"suppressevent maximize, class:.*"
# Fix some dragging issues with XWayland
"nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0"
];
bindm = [
# Move/resize windows with mainMod + LMB/RMB and dragging
"$mainMod, mouse:272, movewindow"
"$mainMod, mouse:273, resizewindow"
];
bindel = [
# Laptop multimedia keys for volume and LCD brightness
",XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
",XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
",XF86MonBrightnessUp, exec, brightnessctl s 10%+"
",XF86MonBrightnessDown, exec, brightnessctl s 10%-"
];
bindl = [
# Requires playerctl
", XF86AudioNext, exec, playerctl next"
", XF86AudioPause, exec, playerctl play-pause"
", XF86AudioPlay, exec, playerctl play-pause"
", XF86AudioPrev, exec, playerctl previous"
];
bind = [
"$mainMod, Q, exec, $terminal"
"$mainMod, C, killactive,"
"$mainMod CTRL SHIFT, M, exit,"
"$mainMod, E, exec, $fileManager"
"$mainMod, V, togglefloating,"
"$mainMod, R, exec, $menu"
"$mainMod, P, pseudo, # dwindle"
"$mainMod, J, togglesplit, # dwindle"
"$mainMod SHIFT, minus, exec, bash -c \"XDG_CURRENT_DESKTOP=sway flameshot gui\""
"$mainMod, n, exec, swaync-client -t"
# moving focus
"$mainMod, left, movefocus, l"
"$mainMod, right, movefocus, r"
"$mainMod, up, movefocus, u"
"$mainMod, down, movefocus, d"
# scratchpad
"$mainMod, S, togglespecialworkspace, magic"
"$mainMod SHIFT, S, movetoworkspace, special:magic"
] ++ (
# workspaces
# binds $mod + [shift +] {1..9} to [move to] workspace {1..9}
builtins.concatLists (builtins.genList
(i:
let ws = i + 1;
in [
"$mainMod, code:1${toString i}, ${lib.optionalString cfg.split-monitor-workspaces "split-"}workspace, ${toString ws}"
"$mainMod SHIFT, code:1${toString i}, ${lib.optionalString cfg.split-monitor-workspaces "split-"}movetoworkspace, ${toString ws}"
]
)
9)
);
};
package = null;
portalPackage = null;
};
}];
}
# split-monitor-workspaces
(lib.mkIf cfg.split-monitor-workspaces {
home-manager.sharedModules = [{
wayland.windowManager.hyprland = {
settings.bind = [
"$mainMod SHIFT, comma, split-changemonitor, -1"
"$mainMod SHIFT, period, split-changemonitor, +1"
];
plugins = [
inputs.split-monitor-workspaces.packages.${pkgs.system}.split-monitor-workspaces
];
};
}];
})
# useful desktop stuff
{
environment.systemPackages = with pkgs; [
# Screenshotting
grim
slurp
satty
# Hardware Control
brightnessctl
# Desktop
wofi
kitty
pipewire-controller
# Wayland Utilities
wdisplays
xorg.xlsclients
wl-clipboard
];
}
# SDDM Theme
(
let sddmPkg = (pkgs.sddm-astronaut.override { embeddedTheme = "purple_leaves"; });
in {
services.displayManager = {
enable = lib.mkDefault true;
sddm = {
enable = lib.mkDefault true;
wayland.enable = lib.mkDefault true;
theme = "sddm-astronaut-theme";
package = pkgs.kdePackages.sddm;
extraPackages = with pkgs; [
sddmPkg
kdePackages.qtsvg
kdePackages.qtvirtualkeyboard
kdePackages.qtmultimedia
];
};
};
environment.systemPackages = [ sddmPkg ];
}
)
# Anyrun
(lib.mkIf false {
home-manager.sharedModules = [{
imports = [
inputs.anyrun.homeManagerModules.default
];
programs.anyrun = {
enable = true;
config = {
x = { fraction = 0.5; };
y = { fraction = 0.3; };
width = { fraction = 0.3; };
layer = "overlay";
showResultsImmediately = true;
hidePluginInfo = true;
plugins = [
inputs.anyrun.packages.${pkgs.system}.applications
];
};
extraCss = /* css */ ''
window {
background: transparent;
}
'';
};
}];
})
({
home-manager.sharedModules = [{
services.swaync = {
enable = true;
style = builtins.readFile "${inputs.rose-pine-swaync}/theme/rose-pine.css";
settings = {
positionX = "right";
positionY = "tops";
layer = "overlay";
control-center-layer = "tops";
cssPriority = "application";
control-center-margin-top = 0;
control-center-margin-bottom = 0;
control-center-margin-right = 0;
control-center-margin-left = 0;
notification-2fa-action = true;
notification-inline-replies = false;
notification-icon-size = 64;
notification-body-image-height = 100;
notification-body-image-width = 200;
timeout = 10;
timeout-low = 5;
timeout-critical = 0;
fit-to-screen = true;
control-center-width = 500;
control-center-height = 600;
notification-window-width = 500;
keyboard-shortcuts = true;
image-visibility = "when-available";
transition-time = 200;
hide-on-clear = false;
hide-on-action = true;
script-fail-notify = false;
};
};
}];
})
{
home-manager.sharedModules = [{
services.playerctld.enable = true;
systemd.user.services.playerctld = {
Unit.PartOf = lib.mkForce [ "graphical-session.target" ];
Install.WantedBy = lib.mkForce [ "graphical-session.target" ];
};
home.packages = with pkgs; [
playerctl
];
}];
}
(lib.mkIf cfg.nvidia {
environment.variables = {
LIBVA_DRIVER_NAME = "nvidia";
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
};
})
]);
}

View file

@ -1,24 +0,0 @@
{ lib, config, inputs, pkgs, ... }:
let
cfg = config.snowhawk.star-citizen;
in
{
options.snowhawk.star-citizen = {
enable = lib.mkEnableOption "star-citizen";
};
config = lib.mkIf cfg.enable {
boot.kernel.sysctl = {
"vm.max_map_count" = 16777216;
"ds.file-max" = 524288;
};
environment.systemPackages = [
(pkgs.star-citizen.override {
useUmu = true;
location = "/data/star-citizen";
})
];
};
}

View file

@ -24,9 +24,9 @@ in
settings = {
devices = {
permafrost.id = "Y3RGVEJ-KKD2QV2-LHHHL7Z-DWRLTWI-P3RG4GG-VTDTNJV-IM4OMRA-E3BY7QN";
lynx.id = "O7EB4D6-AH4A53X-YM6UE7K-T3CJGIZ-MRJ6J7U-DXTEOKB-Z7LSV2M-LVUWFAO";
sprite.id = "IS2F2X5-43F7B2Q-SVSNY4J-GOHU5XP-NSJ2MJS-GDDNNTR-BGPQHHE-TE4JDAX";
msiserver = { id = "KVUA7S4-UHZHKHS-3NX2WSY-MWACTER-SNZBIN4-QMCT5KS-O4NQASP-65HFOAO"; };
macbook = { id = "O7EB4D6-AH4A53X-YM6UE7K-T3CJGIZ-MRJ6J7U-DXTEOKB-Z7LSV2M-LVUWFAO"; };
s22 = { id = "IS2F2X5-43F7B2Q-SVSNY4J-GOHU5XP-NSJ2MJS-GDDNNTR-BGPQHHE-TE4JDAX"; };
};
folders = {
@ -34,13 +34,13 @@ in
id = "obsidian";
label = id;
path = "/home/ravenshade/obsidian";
devices = [ "permafrost" "lynx" "sprite" ];
devices = [ "msiserver" "macbook" "s22" ];
};
"sync" = {
id = "default";
label = "sync";
path = "/home/ravenshade/sync";
devices = [ "lynx" ];
devices = [ "macbook" ];
};
};

View file

@ -10,9 +10,4 @@ in
borderlessBrowser = callDefaultPackage ./borderlessBrowser;
zenBrowser = callDefaultPackage ./zenBrowser;
rose-pine-grub = callDefaultPackage ./rosePineGrub;
dwm-msg = callDefaultPackage ./dwm-msg;
dwlmsg = callDefaultPackage ./dwlmsg;
uhk-agent = callDefaultPackage ./uhk-agent;
pipewire-controller = callDefaultPackage ./pipewire-controller;
dorion = callDefaultPackage ./dorion;
}

View file

@ -1,195 +0,0 @@
{ lib
, fetchFromGitHub
, fetchurl
, rustPlatform
, cmake
, ninja
, wrapGAppsHook4
, glib-networking
, gst_all_1
, libsysprof-capture
, libayatana-appindicator
, nodejs
, openssl
, pkg-config
, yq-go
, pnpm_9
, webkitgtk_4_1
, cargo-tauri
, desktop-file-utils
,
}:
let
webkitgtk_4_1' = webkitgtk_4_1.override {
enableExperimental = true;
};
shelter = fetchurl {
url = "https://raw.githubusercontent.com/uwu/shelter-builds/4264c79a7e8efb2c0000c180dd8369c9a5194105/shelter.js";
hash = "sha256-C+iPl40QN2CfhHX8cc+5mu+8qfD1VZDJHbUjfY2QcUg=";
meta = {
homepage = "https://github.com/uwu/shelter";
sourceProvenance = [ lib.sourceTypes.binaryBytecode ]; # actually, minified JS
license = lib.licenses.cc0;
};
};
in
# nyo finalAttrs :<
# https://github.com/NixOS/nixpkgs/pull/194475
rustPlatform.buildRustPackage rec {
pname = "dorion";
version = "6.5.0";
src = fetchFromGitHub {
owner = "SpikeHD";
repo = "Dorion";
tag = "v${version}";
hash = "sha256-EetRPa2v2UBav+UwprG7TgcswNzbjfBMvP4xlYOnWYI=";
};
cargoPatches = [
./no-cargo-patch.patch
];
cargoRoot = "src-tauri";
buildAndTestSubdir = cargoRoot;
useFetchCargoVendor = true;
cargoHash = "sha256-+AVmg/fyIsyksOoGwphePdd+9VtklTO1SFWlM+FBgbE=";
pnpmDeps = pnpm_9.fetchDeps {
inherit pname version src;
hash = "sha256-xBonUzA4+1zbViEsKap6CaG6ZRldW1LjNYIB+FmVRFs=";
};
# CMake (webkit extension)
cmakeDir = ".";
cmakeBuildDir = "src-tauri/extension_webkit";
dontUseCmakeConfigure = true;
dontUseNinjaBuild = true;
dontUseNinjaCheck = true;
dontUseNinjaInstall = true;
# cmake's supposed to set this automatically
# ... but the detection is based on the presence of ninja build hook
cmakeFlags = [
"-GNinja"
];
nativeBuildInputs = [
pnpm_9.configHook
cargo-tauri.hook
nodejs
pkg-config
wrapGAppsHook4
yq-go
desktop-file-utils
cmake
ninja
];
buildInputs = [
openssl
webkitgtk_4_1'
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-bad
gst_all_1.gst-plugins-good
gst_all_1.gst-plugins-rs
glib-networking
libsysprof-capture
libayatana-appindicator
];
postPatch = ''
# remove updater
rm -rf updater
# patch cargo-deps
pushd $cargoDepsCopy/tauri-plugin-shell-*
patch -p1 < /build/source/src-tauri/patches/tauri-plugin-shell+*.patch
popd
substituteInPlace $cargoDepsCopy/libappindicator-sys-*/src/lib.rs \
--replace "libayatana-appindicator3.so.1" "${libayatana-appindicator}/lib/libayatana-appindicator3.so.1"
# disable pre-build script and disable auto-updater
yq -iPo=json '
.bundle.resources = (.bundle.resources | map(select(. != "updater*")))
' src-tauri/tauri.conf.json
# link shelter injection
ln -s ${shelter} src-tauri/injection/shelter.js
# link html/frontend data
ln -s /build/source/src /build/source/src-tauri/html
'';
configurePhase = ''
cmakeConfigurePhase
pnpmConfigHook
'';
buildPhase = ''
ninjaBuildPhase
cd /build/source
tauriBuildHook
'';
postInstall = ''
# Set up the resource directories
mkdir -p $out/lib/Dorion
ln -s $out/lib/Dorion $out/lib/dorion
rm -rf $out/lib/Dorion/injection
cp -r src-tauri/injection $out/lib/Dorion
cp -r src $out/lib/Dorion
# Modify the desktop file
desktop-file-edit \
--set-comment "Tiny alternative Discord client" \
--set-key="Exec" --set-value="Dorion %U" \
--set-key="TryExec" --set-value="Dorion" \
--set-key="StartupWMClass" --set-value="Dorion" \
--set-key="StartupNotify" --set-value="true" \
--set-key="Categories" --set-value="Network;InstantMessaging;Chat;" \
--set-key="Keywords" --set-value="dorion;discord;vencord;chat;im;vc;ds;dc;dsc;tauri;" \
--set-key="Terminal" --set-value="false" \
--set-key="MimeType" --set-value="x-scheme-handler/discord" \
$out/share/applications/Dorion.desktop
'';
# error: failed to run custom build command for `Dorion v6.4.1 (/build/source/src-tauri)`
# Permission denied (os error 13)
doCheck = false;
env = {
TAURI_RESOURCE_DIR = "${placeholder "out"}/lib";
};
meta = {
homepage = "https://spikehd.github.io/projects/dorion/";
description = "Tiny alternative Discord client";
longDescription = ''
Dorion is an alternative Discord client aimed towards lower-spec or
storage-sensitive PCs that supports themes, plugins, and more!
'';
changelog = "https://github.com/SpikeHD/Dorion/releases/tag/v${version}";
downloadPage = "https://github.com/SpikeHD/Dorion/releases/tag/v${version}";
license = with lib.licenses; [
gpl3Only
cc0 # Shelter
];
mainProgram = "Dorion";
maintainers = with lib.maintainers; [
nyabinary
aleksana
griffi-gh
getchoo
];
platforms = lib.platforms.linux;
sourceProvenance = [
lib.sourceTypes.binaryBytecode # actually, minified JS
lib.sourceTypes.fromSource
];
};
}

View file

@ -1,31 +0,0 @@
diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock
index 59f676d..b7090d4 100644
--- a/src-tauri/Cargo.lock
+++ b/src-tauri/Cargo.lock
@@ -4954,6 +4954,8 @@ dependencies = [
[[package]]
name = "tauri-plugin-shell"
version = "2.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ad7880c5586b6b2104be451e3d7fc0f3800c84bda69e9ba81c828f87cb34267"
dependencies = [
"encoding_rs",
"log",
diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml
index 62a508b..0bbe935 100644
--- a/src-tauri/Cargo.toml
+++ b/src-tauri/Cargo.toml
@@ -12,13 +12,6 @@ rust-version = "1.81"
strip = "debuginfo"
lto = true
-# Patches
-[package.metadata.patch]
-crates = ["tauri-plugin-shell"]
-
-[patch.crates-io]
-tauri-plugin-shell = { path="./target/patch/tauri-plugin-shell-2.0.2" }
-
[build-dependencies]
tauri-build = { version = "2.0.0", features = [] }

View file

@ -1,38 +0,0 @@
{ lib
, stdenv
, fetchgit
, pkg-config
, wayland-scanner
, kdePackages
,
}:
stdenv.mkDerivation {
pname = "dwlmsg";
version = "0-unstable-2025-01-13";
src = fetchgit {
url = "https://codeberg.org/notchoc/dwlmsg/";
rev = "7cfc2635984611e6eceef011084f21c22979b3d0";
hash = "sha256-uEw9QY0WveM8cu7uhXLbIKLYgtmyUyMxEDti+uWLoCU=";
};
nativeBuildInputs = [
pkg-config
];
buildInputs = [
wayland-scanner
kdePackages.wayland
];
makeFlags = [ "PREFIX=${placeholder "out"}" ];
meta = with lib; {
description = "send ipc messages to dwl";
homepage = "https://codeberg.org/notchoc/dwlmsg";
license = licenses.unfree;
mainProgram = "dwm-msg";
maintainers = with lib.maintainers; [ nullcube ];
};
}

View file

@ -1,44 +0,0 @@
# Yoinky Sploinky https://git.nullcube.net/nullcube/nullpkgs/src/branch/main/pkgs/dwm-msg/default.nix
{ lib
, stdenv
, fetchFromGitHub
, libX11
, libXft
, libXinerama
, pkg-config
, yajl
,
}:
stdenv.mkDerivation rec {
pname = "dwm-msg";
version = "1.5.7";
src = fetchFromGitHub {
owner = "mihirlad55";
repo = "dwm-ipc";
rev = "v${version}";
hash = "sha256-ReQbA551i6YOQi/Qoive7jANnD5/IcXGApHHctgPdOM=";
};
nativeBuildInputs = [
pkg-config
libX11
libXinerama
libXft
yajl
];
installPhase = ''
mkdir -p $out/bin
cp dwm-msg $out/bin/
'';
meta = with lib; {
description = "a cli program that can be used to run commands, query dwm for information, and listen for events.";
homepage = "https://github.com/mihirlad55/dwm-ipc";
license = licenses.mit;
# platforms = platforms.all;
mainProgram = "dwm-msg";
};
}

View file

@ -1,70 +0,0 @@
{ pkgs
, mpv
, pamixer
, lib
}:
let
mpvExe = lib.getExe mpv;
pamixerExe = lib.getExe pamixer;
in
pkgs.writers.writeRustBin "pipewire-controller" { } ''
use std::{process::Command, str};
const MUTE_AUDIO: &str = "${./audio/discord-mute.mp3}";
const UNMUTE_AUDIO: &str = "${./audio/discord-unmute.mp3}";
fn main() {
let mute_status = Command::new("${pamixerExe}")
.args(["--default-source", "--get-mute"])
.output()
.expect("Unable to get mute status from pamixer")
.stdout;
let mute_status = str::from_utf8(&mute_status[..]).expect("pamixer output wasn't a string").trim();
if mute_status == "false" {
Command::new("${pamixerExe}")
.args(["--default-source", "--mute"])
.output()
.expect("Unable to mute via pamixer");
Command::new("${mpvExe}")
.args(["--no-video", "--volume=80", MUTE_AUDIO])
.output()
.expect("Unable to play audio via mpv");
} else {
Command::new("${pamixerExe}")
.args(["--default-source", "--unmute"])
.output()
.expect("Unable to unmute via pamixer");
Command::new("${mpvExe}")
.args(["--no-video", "--volume=80", UNMUTE_AUDIO])
.output()
.expect("Unable to play audio via mpv");
}
let xrootdatetime_pid_raw =
Command::new("systemctl")
.args([
"--user",
"show",
"--property", "MainPID",
"--value", "xrootdatetime"
])
.output();
if let Ok(xrootdatetime_pid_raw) = xrootdatetime_pid_raw {
if let Ok(xrootdatetime_pid) = str::from_utf8(&xrootdatetime_pid_raw.stdout[..]) {
let _ = Command::new("kill")
.args([
"-s",
"SIGUSR1",
xrootdatetime_pid
])
.spawn();
}
}
}
''

View file

@ -1,79 +0,0 @@
{ lib
, stdenv
, stdenvNoCC
, fetchurl
, appimageTools
, electron
, makeWrapper
, asar
, autoPatchelfHook
, libusb1
}:
let
pname = "uhk-agent";
version = "5.0.2";
src = fetchurl {
url = "https://github.com/UltimateHackingKeyboard/agent/releases/download/v${version}/UHK.Agent-${version}-linux-x86_64.AppImage";
name = "${pname}-${version}.AppImage";
sha256 = "sha256-A0ALw5noXeeCGvWEFJMyYeNb9mMHyr3DC3T0yK1MQoM=";
};
appimageContents = appimageTools.extract {
inherit pname version src;
};
in
stdenvNoCC.mkDerivation {
inherit pname version src;
dontUnpack = true;
nativeBuildInputs = [
asar
makeWrapper
autoPatchelfHook
];
buildInputs = [
(lib.getLib stdenv.cc.cc)
libusb1
];
autoPatchelfIgnoreMissingDeps = [
"libc.musl-x86_64.so.1"
];
installPhase = ''
runHook preInstall
mkdir -p "$out"/{opt,share/applications}
cp -r --no-preserve=mode "${appimageContents}/resources" "$out/opt/${pname}"
cp -r --no-preserve=mode "${appimageContents}/usr/share/icons" "$out/share/icons"
cp -r --no-preserve=mode "${appimageContents}/${pname}.desktop" "$out/share/applications/${pname}.desktop"
substituteInPlace "$out/share/applications/${pname}.desktop" \
--replace "Exec=AppRun" "Exec=${pname}"
asar extract "$out/opt/${pname}/app.asar" "$out/opt/${pname}/app.asar.unpacked"
rm "$out/opt/${pname}/app.asar"
makeWrapper "${electron}/bin/electron" "$out/bin/${pname}" \
--add-flags "$out/opt/${pname}/app.asar.unpacked" \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \
--set-default ELECTRON_IS_DEV 0 \
--inherit-argv0
runHook postInstall
'';
meta = with lib; {
description = "Agent is the configuration application of the Ultimate Hacking Keyboard";
homepage = "https://github.com/UltimateHackingKeyboard/agent";
license = licenses.unfreeRedistributable;
maintainers = with maintainers; [ ngiger nickcao ];
platforms = [ "x86_64-linux" ];
sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
};
}

View file

@ -1,11 +1,10 @@
private_keys:
github: ENC[AES256_GCM,data:FH+z20K3ZZwcKCdDeBu5ogezpOBic5IjjBLyWw3QlKLtRXZIR7+Gkn7Hf9j9v5xPDGc8kpkKcF9n5EV1/4jrDeVic0LNz/D2OLbNUiTgxKsWatt9DurOo942iNRTpbysNo0DOD2rCFTal5d5J7rgxCe4anrdHiKM9BwArHGwe8PDEt5U1UcpEPeJ1MWjaUaTRRYwYzPHirM1POlXZBUe67Zq98OG9nKfrNMKhiHBAdyYzGZGd4xVxoj36H3oh14uozEmuwaAvp/EVJ/Wd7trlq8MNjtuSdSCB6WgpOSJasSaGP0ADmiaSRX4kKxxSiy0fSw0bWwZc45XXfftSGRlSx3/Bg4ekcu/iVojVYrwWL1Z9L+v2TPqoNYOWLfseQoUjkiad5eK3T1Go5sz/ToirdMagv5ICGBZ/97abJIc5Q1TVyoR1o8t9MzpkIAA7ajW0Ux83DY4MFhJ/GV2aMPd/UJXqLF4QYLgww9P/MyOKxqtcR3PONbRB5SqEgG39p+b3pZ3+SCP+IU6bhvej0FA0UeKWxVU1qFMqlRQ,iv:9e9yDKsPp+DK2L8Cw4uiQF9UlsdbpCtGWdFf5r2j4QI=,tag:L/HPQ6tGuwgcX/i3s0gvcQ==,type:str]
personal_git: ENC[AES256_GCM,data:r5NXuhqltyaZpjMhz6Nh+2Nv1UI86nxtud5aPFkAfwOuBhtDLOx5dOZWZqJ/8Lf+hjyVsCRN77GNXIKmBA3UhguIzWdWSRMboDXYePxRar+i0rBQdKK24rzPLMAYRd5L1sLml1hS5eZxds+D+C5PCv4FXrkc+9xO08RPFgqJVfFbzIEM/5HAmgG1xLpK32+56/QdwW/bL2r2bheSuNXmcrciDeilVBS5/jVgIaa8mxDHQjVPi6SdL4MGt85+OpcOesqDGuTpc00H9kd/i6mOucYCw2UjHJpLYDJ202cE0pHiKenFbssiS+NqG7dWSLKD0HqhDoHLvJVaXlLT+GxEx1ec/vHAl7LgpRRpUfcEknFpsJgliPOfr1p3D2plx/ZcWqysFy3jZ5HZI3ZawRrsDdQlKpljcjCgOeCVoTlQdrjQruDV3QueLPn5ueFMx3Iks6e/PyENXp+JhdJID5dPjckSb2vp/VUP7n3PT3aNuPMluMpXFUhUwthTb/RsKBAqDUEaw0RAe1mvAaoD3ZUJtg5Q84UVuQxQHGtS,iv:fUwoEgHb2Bat/qjnedfHVzso0qfRPXuelO26CFxdud0=,tag:bqHeF1R4+IHQ/a0urVXhIA==,type:str]
msiserver: ENC[AES256_GCM,data:WPfERytAHOgvEpAs1neYMlV1tc6gJUPlYuW7iak9/UNEguNR3UlNB2OLHGYlpnPjH9hIOsUzxBNoE+kTI2atm1kZzIkzHCuJyn/CMaW61dPY+kvv/oiKSr/eqOLY7WLnniQysWih8zjtbb0DUoVfT9UujuWLaE92F9y7ZWyfz61Kf9BgyUF9xBkmwfOYnOs0ugnslm42jLh+qpw+2N2CqG5aqmBJzXp8fZfHmT5+wYTlKK4yb3vfXejcFQ37aLZwimJ9qn2Kfa4X6h1U9yerrNnOWhc0WC+1X3G1HKTlEF/yHTnIbSysxIYFdGPgzxFaw7Tyh2KhCJVOuPAJPmq7ms+lgpmS/Tr6ZdGF9XPGufT+UiiYFdK0zQYDz5A7qoDaOmztzFHhCtAmo6MvBUt2c4j03mT+KHkn9qFaQ1M/6EMp0KcL7Wt3bKLOC3kkbU9kMrahxhYTC7vTc33kZuvSsbTBnVJTAZM2vhIsOd2DtJzBdbTNXwpLqo5elQ8GuOBec84dAnYGs7etekn4GpuI0OayAlSoGdmGK6qmfBTZm62zuTadF/JBCKQU6sFyw1IfCO6fTSibQ/L7eqn8HF/pDG1+v+XHYYzv56gZHgIY78XB27phEbB+n7KFGHYw8RYDWHGsgZrR93ZRoVG5RXo/cx0+GqZHxEf+xHtrO6G4cKq8rIlvGcLMp6gWLrJRhZ4qObzpk5i/TRQH8qGeB5ZDzDkGmWwJV2xAmDuJnCSAmv1vVVDHPwAT5NfmJS4PXmTeDNBGLX/xf+tXFLI5fWhqAEynutVv5yavSxfOZ0a8+y7Ks0TbOaxwcCjWtJpmTmMLnROY1cEzre/tdxDA3TKJgLvqM05qN44MmS9ZDb3DDTiVAfDjjoKJt3XTTj3T3pbI4GIxapoKvLuQr/bWWwA2Ho5WXV8uCL0HBkuHSX5nTElnTWGbDznQOqnT4NlXRFTE17WYyoL1O8iv9s1QNHoBl89DrNfnAD5PeMU8zfXOHEH9UPSfniMvK0SxfaP6hZ2dx/VJyuby/ZMkbha9T0tXA3BQdqrB7D2qng8t62cywDhIIiXK1L2XIuVCewjEgmtFlG+MjDTW62y1cXjiAf8UzoxYIjvbsiDS0f75cAEpNnof8sbuGRFFnv8MF/8D16KWW1mUC6tH+nta260JgM4N2Coep8hzH5FE6BDrn/2pggycTWO7nkZQR+70p3F9POeokAiXee88z3yuddfP4ZBA4y7qLYfsImDkZBFHWinDD5BNKb9Ows/YbvtYJkykbR60hMPIVJdPIB2kFdOOAjHd5dDOtNiwLU3IEQCjAy+tFndnsTjQCqIq0zkm7O0bHedIWv3gequSaxvcG9pixtbCSCOLeqebzONb+MGQl7d/pgPCU3YL9dGh7YAfeT0X05tY9YOUqoBxFT5kCzz0pdkkYe2GMXxMAvTAdHfC1joqFvaO8hJ7FE38hCyDr+LWDDCjz8zI4nYP90BtiW16A/P1jmdXwkqaYdEmeNjOpIJAjvpzndRtW+t0M/ip1BJLL33h+Zk5Va23Th7BNfC/aGCyOv8PytteN4Cnvq1z8giY2vQ582uZz6Wi/oQKcTp6p7zNcy/cFQtgRWv1BSrZJGptvhQXobEO8VdHwKjgR0R1DYlIDYXb7fK3dvedttNjhwhyghfr8XfWoaDQKRYNwWBMC5eE4ikCUH+QXa4z7aqRDlUCum+sG8I6ZZ6xsEmTDH/GZ2lpgGDlHrC2yEQQBRRhJQ9VONnT/GMYxMUGg2NDDRcAuGxAcfXiN7mNbj0AmF0xBEIrxGQHjN64YTTDKltjad7GelzqRQNHV4DBl+5tzD3gTFovNPKzBhA73BLngK411DFi+fhr5nx7mWv2VtGz5mx01ShJhRQwZSR7dTG4Bb3vsFTljEDy9Qu6GrMXKBOzbJRtbGDZzx3KFiDNzHIPyd75/3Fn+CseBzHY3R1rOmfyCFlyP8yXpQBfsftTfPThrOXGQDu+lk8JtxR1dpVCJyl9bW0cFoZYoeUGbny4NpuUOeeDzfct1tf1WOhC4iRnGEorLpsAKiQTFekes6t/+iZJqZ8G7A2QtetO0o1MkYwJZR+4scr5PK5//ibbHY/bV6ubVOVbRLpqUChlPGcHP8e9MuRGxbH5hsFx8FlQDCNSGJetqtt0ygJtdvV3LCelDmhHqwM7t0LKVzrvpkw4l8wO4qhwUobRHgI6A0wEe8jgzpM4a5ZYas7aC46ie/sRBWBY33yrXTkL3kURD4pxmBs6b235A7JnHCDGxERBE/5yJ3IWmf7YNxACKBcRqxGtqgg6RDCcSC+spTG3rqMOQXYJP+JhSArv4yReGF6WgWtmFebXsI4TME42S8coomys0wcv9nB4+15GpSDtEN86YKT57XlcsTSI/tS8xdCnFMTAVuZOJ9Uyb9kMLP216lV5cp6RXj6IjAQ9GJjW2rCnBAJ4ejERW8ZJi3a4kBbrRoKY+Pp3F3kH/RrzJySFmsaIASWjujfRYqJzx2aY6pBpzjDsquv7QgsHWeSxKZGrJU9nU4puJeQzus9nmQPMrpmCyj+74Z/7015d7NZgh8zuqRPvIS8Hd2vQmE7zepMklFkhzT7H9kjIDmuitxvm4GDEYw+DQctfXe6m3LpOoiKnB1FN+AgH9AIxbz7Vs6ObyTDpK24u9IkfUuQAP2ImvyEpb0Sbh9eDLhN+tLdiY7rC7e0JaxoM0N6ARpxXylhLznuXNB03PfT0sa8XRwBqWpfhYIAJe7+su3NdBd6fmwpsNDbnNbDWwsWVUO33X4w5s3xZn6P+augAJA57stmX0xD/UZG+y84kkrF/YLtFJ9GJYzbrJD2AdJj1zbMpTeIuoE+aSnoB2xQzBQwWUp2qodAcIEisCRhD2UwdP6P+GhSyf43vW/eIeyfL+3aSXxQ2RkaHPZAXucxh8DCpT0vFF68XSuUf2iQnmX0thVUCSS4D063DPtBOQ9u2gC8ZnL9uyl27OI8Vr36L6nR+XnkV+/XkpgkVpj8ianjkM/IsqN9KQZUjgIkR7fenl0UalaJ9UcTspLfkNU67rTbhcJ9+G/QCguJ5I9ovJSS5k4u0t8SE0ZelRyC7j8xh5yT9l/GaoWuQryID145vR2Qf5jmR9H34mDhQigB713+7mjqoLGkorrhrZqLIDO94SRDJhUUn5nqCQmuwz9T22p9xqjpzwk9XGWsTN3+Mvku+OdpZWkVNwfWPJO2ShEcfQIBBykMO1gN1N8RbusFzCJfKCER7Rq2bnm31g+hby6Xms3pmW+Xg9jNj9HParuWewYx4nTLdGR+c5aufVp3xRpgSMD5w9uQIDebiuss8eFR64GcMlG90cC6ewHjS+68P/Rfnd24XawFNm4hu11TvA6zSjK6h6J4YehPzdnEUFFz5bh26AJkcnTN8svwcUW8etq8X9yN+W4UWFxtZNdNoLT2XD6v4C7TNhIugA4h9MIkxdA==,iv:QD0B2ymlqkSAV1wEAQyJAomxpIj+ydeikTJmVhxpxBo=,tag:zbXmhxabQwLgkPxavodHxQ==,type:str]
caveserver: ENC[AES256_GCM,data:bf3+bhbbX08NPk31Wy26ZsYzUIg2fv7SjWZ73CEOPTQZf8yLy32A63oJX71qtPIj6PcpbsHfrYGMKYHuMUYr5N9fYDhiXEbesAt1nX9HOsq0UwYSl7HWucRHkorkIq09r5oVB4CWoYEj6/2HmZhbYJgEZdMptActi3+eRobgjTdqtq4Q8K0tp9X3VeE2Ca/M17DEz9y93aMKunXbD38jS+zZs0SI1OtyC0V9MenAtiiadBznexq6IVwsp/4mcAiv0udFn7lwCYpPPsSKoCjFYfNIPu/0rCIEag3/bdJHPJA0fng37E4ZGA3ZCwy4PhaJ88kJBAqLJ8u1mQ+UGNFtZBaqww+RIAStkq958tYoyZaI4C+E+XpGRs6FsthN9lsJZ1skiT41vxsfb9+M2sELv+Jm9xDkHJr7+pjtGkN2xEvWS/DrzsKxl4qCw+ZkyE5VNS7vW+gfM+7XieooxXJlQEihlYWflRd1aikYfEizXXWaM6XlLsHtFYEmtQMvesB8XCeoCVT47XgGNqmaNFEEo6Pdl5ke6WO4Gi5K,iv:FZWDaT+ernolWiLZbE67g9JWNCgCwdUyglv8cwAeFO0=,tag:emCa72E1HIjU6+PAJvICcQ==,type:str]
snowhawk: ENC[AES256_GCM,data:I06s6rV8wURi5db2S+/QEHK2QtAn45PhP7vAvtTOwQUhECA/WD2Q6zPsn6nKxIt5Y7mlrSlN9+/cQ+zkEOqMvfkQIeGGoK5I/zi/196lLqTen6aDF7M0ZQVUJUIlXP3K4aO9b6ZI4BQSOTWAPq5CfMkCyT6BErhG4JnEl5Dxvdic94mrImmzGHJWdA2p9lfc/a+rPBwSqMTS7VAtez/aU/DyzexFYos0k2i2CMnMdLj+5FxAxSarlG6/PilumGj+xVN6msgGv6tN0kpb7RWbiv/ZwQNG+jkKukIduG+PAvhq5+X+ib2y+/JHhTTYZ5sAJrmdHJ0YGQqciu3VS9uLOn/NUksO2zLdvRZf1A0Y5MbE9nHrX2tpv77ivu5Hii7x9kBQXk/0PqvzYpV1thvEyxte18pN68NWm2BdSSU1KHiY6SlmrpqfmIZJqdW4yHn1otJRsDMfOLLSm2Eekjhs7qCrZVGj5bwk4TZALD00UeQsexLpNX+Gi8Njy2HJYtHtVPsMkq8oQ4RnQ/2cv7Pu82AZ98wdRPwFA05M,iv:bZ4fkol7BBjROx9J6cVYG1MQdfTbtgRR8/GiNjVWTcA=,tag:6r5+LCE5UcRjXIe1b0kYrw==,type:str]
ssh_hosts:
caveserver: ENC[AES256_GCM,data:gbP+iNnBUOmQTxUuegIv5sgqGuBhAlg9p0dZUC1nlX/DzZW3DOjF7YBdmSx/TYJ7HHAp8DLZ,iv:LIXC3jTQLFK6HDDZm4dbzx+inJMcsTGkyEY3ytaMwfs=,tag:OOP1zQidcic3lgmWqVlOJw==,type:str]
caveserver: ENC[AES256_GCM,data:EvgnXLZ7ZIcHB/VQj+hEK63DfKfPWGBBdKR1aXFTiN3OwAcfu5jxdSqctK2iAO88jJs=,iv:xEP3OpNNYHisnrtcsCCbjKx34e1DOvikjcRdDx6/WfQ=,tag:XpFBYxuaCMWCTHT09MFvrQ==,type:str]
locations:
snowhawk:
lat: ENC[AES256_GCM,data:N7CsvQ==,iv:BfSp2jXBZDEEyNHhpo3SAwEVIWI0timAT2S1l76ODn0=,tag:Mf99+rM/m3Wh8BmmITKjpg==,type:str]
@ -23,32 +22,23 @@ sops:
- recipient: age1zgd7qpj7vc4gjtetttqgp32aw75fmnjrw6ax2x2meul2w4jclytszvutdd
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA2bENoUVd6cEMvaEJmT1Rj
NVZteDJqSEp4cDJ0Q2RkL1A3Uk1RMjBJS25JClY2QTAwOTNSb1RkV3hKRmRJS2FR
eXNLTzl5MzBCVFdaR3hPNENmdWFxM3cKLS0tIHFZcDhqYXZ0UFZqUWRHMHFRYTBp
TlRqL0NRTlJjWHFvWU9aMlpKZ3R6VHcK8a0OhvrSbfqGBGZ/wAkFhtGf0dpi8kDh
TqIxry+58JV8EGyMlP2/6JWIZILUVkHUmCGj/RmtnuraNWdYuS4KNw==
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBqaUZNVnZaV3Z6WG9zVmw1
d0tXNlp0OWVHaHp4OFpNTG1GdStMdUlGakhFClg0TS9RZkFjSlFkUFlXOHRQbm1X
NlZDa0JrMDhQOGM2MWVPRjE2VDBDSDAKLS0tIGg3aWVLTm9DQ2Q0dkdoaFFibHlP
MGgveEdDb1laY3NhUkRyOVVuME9OVlkKUpTeucratE3vrdsHa/Sm0s0ygwD2UBZ7
5wNykjQUGUG+7OluUlWrwvnmgzyYKS0BM3BD0NjpzTS4OiSB6VYD5g==
-----END AGE ENCRYPTED FILE-----
- recipient: age1s549sffdhu2yyfk9h06hhks7xc4mqq9a6k53dleurr7y3rmuudpqwz24gv
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtVldzZkxhajRLaVB5T0dT
T0xKZHlDaU00cnZ0cXBrOFJwWE1rbzBMbmhVCms5YTBqSkFOWlFJc042My9hMW5O
a1VnaFNpUFBidHNMRGdQTHFNcm84M3cKLS0tIC94US81cEpnSCthV1N3NkNRRzNi
alUrY0ZqQkRRQ3grR280SlNYRUR0TmMK9wh5a+irau+K/bD6jWrs+F7KxzHun4qo
3yMSjNh0Qc+4KNrVZ9F1K5lEYRygAO/pEA+/Jv278YxCEph2Xwea4w==
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBhRVphSzg4NEZWenBWSGY3
L3A5QTVuMFVBOVdrRHlRY3ViK2xjcFpTVkdnCnlCV0dHMmVlRTllbnRpQTdJaVQr
QjFXV1lPV1N4TEZxL05WaStDYmlRRTAKLS0tIFZSdkdTT3JyQmlqZVNEWDRwSFln
Nk1jNmhBV2hFcFVXaVl0TE02L290NDgKq0JV2vKnHUio0d6p8Wo29skOdq1uzjGh
ViIFNODIG8pPVsXQZqCXDWgZIVsAwbavS43d4wkg8iSZ4h6o6sC23Q==
-----END AGE ENCRYPTED FILE-----
- recipient: age1vtsdlkxr3wuy5vtrpwfdr6sy7duzl06htusdu3as2knvfzvhhakqmc70rj
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBqbzQ2M1F2Z1ZLNm51ZkFl
SnlxeUxic1lVQXFLc2UySTBPa2l6VmZPUXh3CkI1RHJWc3FlY3RuamxNUVFFVDdh
bVIreTZZbzJFdVJhOEdzL292dDR6NFkKLS0tIHVZZ0RGM3J5ODdiS1huNjNDbkpB
SzBGRHZHNm5SeGhnZHBlNW9JMnFBWkEK5lRKdGVp9rCL2e7dRXedxNFCvlj6NFfF
jy0vb0T8arxL4UlqYKRFgxhm+UriLaiYqNz1eXzIHe5KKyapurFf7w==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-03-14T09:38:21Z"
mac: ENC[AES256_GCM,data:znO3sIZuXg/wIZ7Uxf2q+D/3eguMsiQ3+EZjDWQI9j2fE6q0tRzvcpFr/aarVhdIIs8MF7oG3Ka7ZO2s7F+hBsU9Ryu+w1Iyp/kFsf0tfFZAoTv0RdhmZJKe1GK8PH+Tmj0IzlPjCl/9tuWfWHwLe6+IVakP7oi5W00yRgwc71M=,iv:c9JibJ1iDGEYU96v0K0KfWE71lP+p4yBiTUGdxsWp64=,tag:1j7nTWgUe2H9Ny7qZ1aDDw==,type:str]
lastmodified: "2024-10-02T05:03:22Z"
mac: ENC[AES256_GCM,data:5uu8UWdvE28qmxi9WnmA/3PjUcnKuP+F78xmeiK8gyJjK0Pd88wt06TMk55ey8BadYkhGRa3+F28q4gu0QqPSau+6OeffOokZg1JkAWymWcVYyW1cMAha3YiUfO+iR9/8O59XdTB6QkfO5j94NYWZLOgtzy9AxxEFJ7VbYoUuEc=,iv:WXzDvJM5zu3jrQ4jfCl+iYzZAC5UCdHR0ZhW3WLmBZA=,tag:mpZ7qv813nBgvsIfquzDYA==,type:str]
pgp: []
unencrypted_suffix: _unencrypted
version: 3.9.4
version: 3.9.0