uhm . all of hyprland happened, i guess
This commit is contained in:
parent
dd270c47ed
commit
66b3280955
|
@ -20,4 +20,8 @@ these are sorted by `theme - de`.
|
||||||
|
|
||||||
### Catppuccin - Gnome
|
### Catppuccin - Gnome
|
||||||
|
|
||||||
![](./docs/assets/2024-01-08_14-24.png)
|
![](./docs/assets/2024-01-08_14-24.png)
|
||||||
|
|
||||||
|
### Catppuccin - Hyprland
|
||||||
|
|
||||||
|
![](./docs/assets/2024-03-17_01-43.png)
|
Binary file not shown.
After Width: | Height: | Size: 2.2 MiB |
Binary file not shown.
After Width: | Height: | Size: 577 KiB |
|
@ -0,0 +1,223 @@
|
||||||
|
precision mediump float;
|
||||||
|
varying vec2 v_texcoord;
|
||||||
|
uniform sampler2D tex;
|
||||||
|
uniform float time;
|
||||||
|
|
||||||
|
// Analys cube
|
||||||
|
// (c) 2019 FMS_Cat, MIT License
|
||||||
|
|
||||||
|
// == tweak these numbers, yee =====================================================================
|
||||||
|
#define SIZE 0.5
|
||||||
|
#define FX_NYOOOM 0.0
|
||||||
|
#define FX_FORWARD 1.0
|
||||||
|
#define FX_KICK (0.1*exp(-3.0*mod(BEAT,4.0)))
|
||||||
|
#define FX_TWIST (20.0*exp(-3.0*mod(BEAT-2.0,4.0)))
|
||||||
|
#define FX_SKEW 0.0
|
||||||
|
#define FX_DEFORM (0.2*0.0)
|
||||||
|
#define FX_DEFORM_FREQ 0.1
|
||||||
|
|
||||||
|
// == raymarch related constants ===================================================================
|
||||||
|
#define MARCH_ITER 64
|
||||||
|
#define MARCH_EPSILON 1E-4
|
||||||
|
#define MARCH_NEAR 0.01
|
||||||
|
#define MARCH_FAR 40.0
|
||||||
|
#define MARCH_MULP 0.6
|
||||||
|
|
||||||
|
// == common macros ================================================================================
|
||||||
|
#define HALF_PI 1.57079632679
|
||||||
|
#define PI 3.14159265359
|
||||||
|
#define TAU 6.28318530718
|
||||||
|
#define BEAT (time*170.0/60.0)
|
||||||
|
#define saturate(i) clamp(i,0.,1.)
|
||||||
|
#define linearstep(a,b,t) saturate(((t)-(a))/((b)-(a)))
|
||||||
|
|
||||||
|
// == common functions =============================================================================
|
||||||
|
mat2 rotate2D( float t ) {
|
||||||
|
return mat2( cos( t ), -sin( t ), sin( t ), cos( t ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
// == camera =======================================================================================
|
||||||
|
struct Camera {
|
||||||
|
vec3 pos;
|
||||||
|
vec3 dir;
|
||||||
|
vec3 up;
|
||||||
|
float roll;
|
||||||
|
float fov;
|
||||||
|
};
|
||||||
|
|
||||||
|
Camera newCamera( vec3 pos, vec3 dir ) {
|
||||||
|
Camera camera;
|
||||||
|
camera.pos = pos;
|
||||||
|
camera.dir = dir;
|
||||||
|
camera.up = vec3( 0.0, 1.0, 0.0 );
|
||||||
|
camera.roll = 0.0;
|
||||||
|
camera.fov = 0.5;
|
||||||
|
return camera;
|
||||||
|
}
|
||||||
|
|
||||||
|
// == ray ==========================================================================================
|
||||||
|
struct Ray {
|
||||||
|
vec3 orig;
|
||||||
|
vec3 dir;
|
||||||
|
};
|
||||||
|
|
||||||
|
Ray newRay( vec3 ori, vec3 dir ) {
|
||||||
|
Ray ray;
|
||||||
|
ray.orig = ori;
|
||||||
|
ray.dir = dir;
|
||||||
|
return ray;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ray rayFromCamera( Camera camera, vec2 p ) {
|
||||||
|
vec3 dirX = normalize( cross( camera.dir, camera.up ) );
|
||||||
|
vec3 dirY = cross( dirX, camera.dir );
|
||||||
|
vec2 pt = rotate2D( camera.roll ) * p;
|
||||||
|
return newRay(
|
||||||
|
camera.pos,
|
||||||
|
normalize( pt.x * dirX + pt.y * dirY + camera.dir / tan( camera.fov ) )
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 getRayPosition( Ray ray, float len ) {
|
||||||
|
return ray.orig + ray.dir * len;
|
||||||
|
}
|
||||||
|
|
||||||
|
// == isect ========================================================================================
|
||||||
|
struct Intersection {
|
||||||
|
Ray ray;
|
||||||
|
float len;
|
||||||
|
vec3 pos;
|
||||||
|
};
|
||||||
|
|
||||||
|
Intersection newIntersection( Ray ray, float len ) {
|
||||||
|
Intersection isect;
|
||||||
|
isect.ray = ray;
|
||||||
|
isect.len = len;
|
||||||
|
isect.pos = getRayPosition( ray, len );
|
||||||
|
return isect;
|
||||||
|
}
|
||||||
|
|
||||||
|
// == march result =================================================================================
|
||||||
|
struct MarchResult {
|
||||||
|
float dist;
|
||||||
|
vec2 uv;
|
||||||
|
};
|
||||||
|
|
||||||
|
// == distFuncs ====================================================================================
|
||||||
|
float distFuncBox( vec3 p, vec3 b ) {
|
||||||
|
vec3 d = abs( p ) - b;
|
||||||
|
return length( max( d, 0.0 ) ) + min( max( d.x, max( d.y, d.z ) ), 0.0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 deform( vec3 p ) {
|
||||||
|
vec3 pt = p;
|
||||||
|
pt.xy = rotate2D( FX_SKEW * pt.z ) * pt.xy;
|
||||||
|
pt.x *= 1.0 - sqrt( FX_NYOOOM );
|
||||||
|
pt.yz = rotate2D( FX_NYOOOM * exp( 5.0 * FX_NYOOOM ) * pt.x ) * pt.yz;
|
||||||
|
pt.y += 2.0 * FX_SKEW * pt.x;
|
||||||
|
pt += FX_DEFORM * (
|
||||||
|
texture2D( tex, FX_DEFORM_FREQ * ( pt.xy ) + 0.5 ).xyz - 0.5
|
||||||
|
);
|
||||||
|
pt.zx = rotate2D( mod( 2.5 * time + PI, TAU ) + FX_TWIST * pt.y ) * pt.zx;
|
||||||
|
pt.xy = rotate2D( 0.6 * sin( 0.9 * time ) ) * pt.xy;
|
||||||
|
pt.yz = rotate2D( 0.6 * sin( 1.4 * time ) ) * pt.yz;
|
||||||
|
pt -= normalize( pt ) * FX_KICK * sin( 15.0 * length( pt ) - 40.0 * time );
|
||||||
|
return pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
MarchResult distFunc( vec3 p ) {
|
||||||
|
MarchResult result;
|
||||||
|
|
||||||
|
vec3 pt = p;
|
||||||
|
pt = deform( pt );
|
||||||
|
result.dist = distFuncBox( pt, vec3( SIZE ) );
|
||||||
|
|
||||||
|
vec3 spt = vec3( 1.0 );
|
||||||
|
|
||||||
|
if ( FX_FORWARD > 0.0 ) {
|
||||||
|
vec3 ptIfs = p;
|
||||||
|
ptIfs.z = mod( ptIfs.z - 16.0 * time + 3.0 * sin( HALF_PI * BEAT + 0.5 ), 6.0 ) - 3.0;
|
||||||
|
for ( int i = 0; i < 6; i ++ ) {
|
||||||
|
float fi = float( i );
|
||||||
|
spt *= sign( ptIfs );
|
||||||
|
ptIfs = abs( ptIfs ) - vec3( 3.2, 4.5, 1.2 ) / max( 1E-2, FX_FORWARD ) * pow( 0.5, fi );
|
||||||
|
ptIfs.xy = rotate2D( 1.1 ) * ptIfs.xy;
|
||||||
|
ptIfs.zx = rotate2D( 2.1 ) * ptIfs.zx;
|
||||||
|
}
|
||||||
|
|
||||||
|
ptIfs = deform( ptIfs );
|
||||||
|
|
||||||
|
float distIfs = distFuncBox( ptIfs, vec3( SIZE ) );
|
||||||
|
|
||||||
|
if ( result.dist < distIfs ) {
|
||||||
|
spt = vec3( 1.0 );
|
||||||
|
} else {
|
||||||
|
result.dist = distIfs;
|
||||||
|
pt = ptIfs;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 abspt = abs( pt );
|
||||||
|
float n = max( abspt.x, max( abspt.y, abspt.z ) );
|
||||||
|
|
||||||
|
result.uv = 0.5 + (
|
||||||
|
( n == abspt.z ) ? ( pt.xy * vec2( sign( pt.z ), 1.0 ) ) :
|
||||||
|
( n == abspt.x ) ? ( pt.zy * vec2( -sign( pt.x ), 1.0 ) ) :
|
||||||
|
( pt.xz * vec2( 1.0, -sign( pt.y ) ) )
|
||||||
|
) * spt.x * spt.y * spt.z * 0.5 / SIZE;
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 normalFunc( vec3 p, float dd ) {
|
||||||
|
vec2 d = vec2( 0.0, dd );
|
||||||
|
return normalize( vec3(
|
||||||
|
distFunc( p + d.yxx ).dist - distFunc( p - d.yxx ).dist,
|
||||||
|
distFunc( p + d.xyx ).dist - distFunc( p - d.xyx ).dist,
|
||||||
|
distFunc( p + d.xxy ).dist - distFunc( p - d.xxy ).dist
|
||||||
|
) );
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 normalFunc( vec3 p ) {
|
||||||
|
return normalFunc( p, MARCH_NEAR );
|
||||||
|
}
|
||||||
|
|
||||||
|
// == main procedure ===============================================================================
|
||||||
|
void main() {
|
||||||
|
vec2 p = v_texcoord - 0.5;
|
||||||
|
Camera camera = newCamera( vec3( 0.0, 0.0, 0.0 ), vec3( 0.0, 0.0, -1.0 ) );
|
||||||
|
camera.fov = 0.6 + 0.9 * FX_FORWARD * ( 0.5 + 0.5 * sin( HALF_PI * BEAT - 0.5 ) );
|
||||||
|
camera.pos.z = 0.5 + 1.5 / camera.fov;
|
||||||
|
Ray ray = rayFromCamera( camera, p );
|
||||||
|
|
||||||
|
Intersection isect;
|
||||||
|
float rayLen = MARCH_NEAR;
|
||||||
|
vec3 rayPos = getRayPosition( ray, rayLen );
|
||||||
|
MarchResult result;
|
||||||
|
for ( int i = 0; i < MARCH_ITER; i ++ ) {
|
||||||
|
result = distFunc( rayPos );
|
||||||
|
if ( abs( result.dist ) < MARCH_NEAR ) { break; }
|
||||||
|
rayLen += result.dist * MARCH_MULP;
|
||||||
|
if ( MARCH_FAR < rayLen ) { break; }
|
||||||
|
rayPos = getRayPosition( ray, rayLen );
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3 bg = vec3( 0.0 );
|
||||||
|
|
||||||
|
if ( abs( result.dist ) < MARCH_NEAR ) {
|
||||||
|
vec3 normal = normalFunc( rayPos );
|
||||||
|
float edge = linearstep( 0.498, 0.499, abs( result.uv.x - 0.5 ) );
|
||||||
|
edge += linearstep( 0.495, 0.497, abs( result.uv.y - 0.5 ) );
|
||||||
|
vec2 uv = result.uv;
|
||||||
|
vec4 tex = texture2D( tex, uv );
|
||||||
|
float fog = exp( -0.2 * max( 0.0, rayLen - 3.0 ) );
|
||||||
|
gl_FragColor = vec4( fog * mix(
|
||||||
|
0.1 + 0.1 * normal + 0.8 * tex.rgb,
|
||||||
|
1.0 + 1.0 * sin( vec3( 0.0, 1.0, 2.0 ) + 10.0 * length( result.uv - 0.5 ) - 10.0 * time ),
|
||||||
|
edge
|
||||||
|
), 1.0 );
|
||||||
|
} else {
|
||||||
|
discard;
|
||||||
|
//gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,64 @@
|
||||||
|
# https://github.com/catppuccin/dunst/blob/main/src/mocha.conf
|
||||||
|
[global]
|
||||||
|
frame_color = "#89B4FA"
|
||||||
|
separator_color= frame
|
||||||
|
|
||||||
|
follow = none
|
||||||
|
width = 300
|
||||||
|
height = 145
|
||||||
|
origin = top-right
|
||||||
|
alignment = "left"
|
||||||
|
vertical_alignment = "center"
|
||||||
|
ellipsize = "middle"
|
||||||
|
offset = "15x15"
|
||||||
|
padding = 15
|
||||||
|
horizontal_padding = 15
|
||||||
|
text_icon_padding = 15
|
||||||
|
icon_position = "left"
|
||||||
|
min_icon_size = 48
|
||||||
|
max_icon_size = 64
|
||||||
|
progress_bar = true
|
||||||
|
progress_bar_height = 8
|
||||||
|
progress_bar_frame_width = 1
|
||||||
|
progress_bar_min_width = 150
|
||||||
|
progress_bar_max_width = 300
|
||||||
|
separator_height = 2
|
||||||
|
frame_width = 2
|
||||||
|
corner_radius = 8
|
||||||
|
transparency = 0
|
||||||
|
gap_size = 8
|
||||||
|
line_height = 0
|
||||||
|
notification_limit = 0
|
||||||
|
idle_threshold = 120
|
||||||
|
history_length = 20
|
||||||
|
show_age_threshold = 60
|
||||||
|
markup = "full"
|
||||||
|
font = "Atkinson Hyperlegible 10"
|
||||||
|
word_wrap = "yes"
|
||||||
|
sort = "yes"
|
||||||
|
shrink = "no"
|
||||||
|
indicate_hidden = "yes"
|
||||||
|
sticky_history = "yes"
|
||||||
|
ignore_newline = "no"
|
||||||
|
show_indicators = "no"
|
||||||
|
stack_duplicates = true
|
||||||
|
always_run_script = true
|
||||||
|
hide_duplicate_count = false
|
||||||
|
ignore_dbusclose = false
|
||||||
|
mouse_left_click = "do_action"
|
||||||
|
mouse_middle_click = "close_all"
|
||||||
|
mouse_right_click = "close_current"
|
||||||
|
|
||||||
|
[urgency_low]
|
||||||
|
background = "#1E1E2E"
|
||||||
|
foreground = "#CDD6F4"
|
||||||
|
|
||||||
|
[urgency_normal]
|
||||||
|
background = "#1E1E2E"
|
||||||
|
foreground = "#CDD6F4"
|
||||||
|
|
||||||
|
[urgency_critical]
|
||||||
|
background = "#1E1E2E"
|
||||||
|
foreground = "#CDD6F4"
|
||||||
|
frame_color = "#FAB387"
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
window {
|
||||||
|
/*background: @base;*/
|
||||||
|
background: alpha(@base, 0.3);
|
||||||
|
color: @text;
|
||||||
|
font-family: 'Atkinson Hyperlegible', FontAwesome, Noto Sans CJK;
|
||||||
|
font-size: 14px;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* search entry */
|
||||||
|
entry {
|
||||||
|
background-color: alpha(@surface0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
button, image {
|
||||||
|
background: none;
|
||||||
|
border: none
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
padding: 1em 0.5em;
|
||||||
|
border-radius: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
button:hover {
|
||||||
|
background-color: alpha(@surface0, 0.5);
|
||||||
|
}
|
|
@ -0,0 +1,98 @@
|
||||||
|
* {
|
||||||
|
bg-col: #24273a;
|
||||||
|
bg-col-light: #313244;
|
||||||
|
border-col: #363a4f;
|
||||||
|
selected-col: #45475a;
|
||||||
|
pink: #f5c2e7;
|
||||||
|
fg-col: #cdd6f4;
|
||||||
|
fg-col2: @pink;
|
||||||
|
grey: #bac2de;
|
||||||
|
|
||||||
|
width: 450px;
|
||||||
|
}
|
||||||
|
|
||||||
|
element-text, element-icon , mode-switcher {
|
||||||
|
background-color: inherit;
|
||||||
|
text-color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
window {
|
||||||
|
height: 500px;
|
||||||
|
border: 2px;
|
||||||
|
border-radius: 1em;
|
||||||
|
border-color: @pink;
|
||||||
|
background-color: @bg-col;
|
||||||
|
}
|
||||||
|
|
||||||
|
mainbox {background-color: @bg-col;}
|
||||||
|
|
||||||
|
inputbar {
|
||||||
|
margin: 10px 5px 5px 5px;
|
||||||
|
children: [prompt, entry];
|
||||||
|
background-color: @bg-col;
|
||||||
|
padding: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
prompt {
|
||||||
|
background-color: transparent;
|
||||||
|
padding: 1px;
|
||||||
|
text-color: @fg-col;
|
||||||
|
border-radius: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
textbox-prompt-colon {
|
||||||
|
expand: true;
|
||||||
|
str: ":";
|
||||||
|
}
|
||||||
|
|
||||||
|
entry {
|
||||||
|
padding: 1px;
|
||||||
|
margin: 0px;
|
||||||
|
text-color: @fg-col;
|
||||||
|
background-color: @bg-col;
|
||||||
|
}
|
||||||
|
|
||||||
|
listview {
|
||||||
|
border: 0px 0px 0px;
|
||||||
|
margin: 5px 0px 0px 10px;
|
||||||
|
columns: 1;
|
||||||
|
lines: 10;
|
||||||
|
background-color: @bg-col;
|
||||||
|
}
|
||||||
|
|
||||||
|
element {
|
||||||
|
padding: 1px;
|
||||||
|
background-color: @bg-col;
|
||||||
|
text-color: @fg-col;
|
||||||
|
}
|
||||||
|
|
||||||
|
element-icon {size: 12px;}
|
||||||
|
|
||||||
|
element.selected {
|
||||||
|
background-color: @selected-col;
|
||||||
|
text-color: @fg-col2;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
scrollbar {
|
||||||
|
width: 4px ;
|
||||||
|
border: 0;
|
||||||
|
handle-color: @fg-col;
|
||||||
|
handle-width: 8px ;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
mode-switcher {spacing: 0;}
|
||||||
|
|
||||||
|
button {
|
||||||
|
spacing: 0;
|
||||||
|
background-color: @bg-col-light;
|
||||||
|
text-color: @grey;
|
||||||
|
vertical-align: 0.5;
|
||||||
|
horizontal-align: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
button.selected {
|
||||||
|
background-color: @bg-col;
|
||||||
|
text-color: @pink;
|
||||||
|
}
|
|
@ -0,0 +1,118 @@
|
||||||
|
* {
|
||||||
|
border: none;
|
||||||
|
border-radius: 0px;
|
||||||
|
min-height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
color: @text;
|
||||||
|
/*background: alpha(@base, 0.6);*/
|
||||||
|
background: @base;
|
||||||
|
border-radius: 1em;
|
||||||
|
/*font-family: VictorMono, Iosevka Nerd Font, Noto Sans CJK;*/
|
||||||
|
/*font-family: 'Atkinson Hyperlegible', FontAwesome, Noto Sans CJK;*/
|
||||||
|
font-family: CozetteVector, FontAwesome, Noto Sans CJK;
|
||||||
|
font-size: 13px;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
box.module, .modules-right box {
|
||||||
|
background-color: @surface0;
|
||||||
|
margin: 0 0.25em;
|
||||||
|
padding: 0.15em 0.25em;
|
||||||
|
border-radius: 1em;
|
||||||
|
}
|
||||||
|
.modules-right label.module {
|
||||||
|
margin: 0 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modules-right box {
|
||||||
|
padding: 0.15em 0.4em;
|
||||||
|
}
|
||||||
|
.modules-left, .modules-right {
|
||||||
|
margin: 0.4em 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces {
|
||||||
|
background-color: @surface0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
background-color: transparent;
|
||||||
|
color: @text;
|
||||||
|
padding: 0 0.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button:nth-child(1) {
|
||||||
|
border-top-left-radius: 1em;
|
||||||
|
border-bottom-left-radius: 1em;
|
||||||
|
}
|
||||||
|
#workspaces button:nth-last-child(1) {
|
||||||
|
border-top-right-radius: 1em;
|
||||||
|
border-bottom-right-radius: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.visible {
|
||||||
|
background: @surface1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.active {
|
||||||
|
background: @pink;
|
||||||
|
color: @surface0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.urgent {
|
||||||
|
background: @red;
|
||||||
|
color: @surface0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#window {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock {
|
||||||
|
color: @lavender;
|
||||||
|
}
|
||||||
|
|
||||||
|
#power-profiles-daemon {
|
||||||
|
color: @teal;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery {
|
||||||
|
color: @green;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.charging {
|
||||||
|
color: @green;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.warning:not(.charging) {
|
||||||
|
color: @peach;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.critical:not(.charging) {
|
||||||
|
color: @maroon;
|
||||||
|
}
|
||||||
|
|
||||||
|
#network {
|
||||||
|
color: @sapphire;
|
||||||
|
}
|
||||||
|
|
||||||
|
#backlight {
|
||||||
|
color: @yellow;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio {
|
||||||
|
color: @pink;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-power {
|
||||||
|
color: @red;
|
||||||
|
}
|
||||||
|
|
||||||
|
tooltip {
|
||||||
|
color: @text;
|
||||||
|
background: @base;
|
||||||
|
border: 1px solid @pink;
|
||||||
|
}
|
15
default.nix
15
default.nix
|
@ -9,14 +9,24 @@
|
||||||
inherit (lib.modules) mkAliasOptionModule mkDefault mkIf;
|
inherit (lib.modules) mkAliasOptionModule mkDefault mkIf;
|
||||||
inherit (lib.my) mapModulesRec';
|
inherit (lib.my) mapModulesRec';
|
||||||
in {
|
in {
|
||||||
|
# disables Nixpkgs Hyprland module to avoid conflicts
|
||||||
|
#disabledModules = [ "programs/hyprland.nix" ];
|
||||||
|
|
||||||
imports =
|
imports =
|
||||||
[
|
[
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
inputs.nix-colors.homeManagerModules.default
|
|
||||||
(mkAliasOptionModule ["hm"] ["home-manager" "users" config.user.name])
|
(mkAliasOptionModule ["hm"] ["home-manager" "users" config.user.name])
|
||||||
|
inputs.nix-colors.homeManagerModules.default
|
||||||
|
inputs.hyprland.nixosModules.default
|
||||||
]
|
]
|
||||||
++ (mapModulesRec' (toString ./modules) import);
|
++ (mapModulesRec' (toString ./modules) import);
|
||||||
|
|
||||||
|
hm.imports = [
|
||||||
|
inputs.hyprlock.homeManagerModules.hyprlock
|
||||||
|
inputs.hypridle.homeManagerModules.hypridle
|
||||||
|
inputs.hyprland.homeManagerModules.default
|
||||||
|
];
|
||||||
|
|
||||||
# Common config for all nixos machines;
|
# Common config for all nixos machines;
|
||||||
environment.variables = {
|
environment.variables = {
|
||||||
NIXPKGS_ALLOW_UNFREE = "1";
|
NIXPKGS_ALLOW_UNFREE = "1";
|
||||||
|
@ -33,10 +43,11 @@ in {
|
||||||
auto-optimise-store = true;
|
auto-optimise-store = true;
|
||||||
keep-outputs = true;
|
keep-outputs = true;
|
||||||
keep-derivations = true;
|
keep-derivations = true;
|
||||||
substituters = [ "https://nix-community.cachix.org" "https://nixpkgs-wayland.cachix.org" ];
|
substituters = [ "https://nix-community.cachix.org" "https://nixpkgs-wayland.cachix.org" "https://hyprland.cachix.org" ];
|
||||||
trusted-public-keys = [
|
trusted-public-keys = [
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
"nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA="
|
"nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA="
|
||||||
|
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 197 KiB |
406
flake.lock
406
flake.lock
|
@ -221,6 +221,227 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"hyprcursor": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprlang": "hyprlang_2",
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1710091028,
|
||||||
|
"narHash": "sha256-yFk2kc8J2kVh0RWlwT+PQf0bpfUNcROOcRYcyQJbpk4=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprcursor",
|
||||||
|
"rev": "05db7dfd7fc261e0195e54f8a6d655d4f370e70f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprcursor",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hypridle": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprlang": "hyprlang",
|
||||||
|
"nixpkgs": "nixpkgs_3",
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1710180874,
|
||||||
|
"narHash": "sha256-ZSn3wXQuRz36Ta/L+UCFKuUVG6QpwK2QmRkPjpQprU4=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hypridle",
|
||||||
|
"rev": "4395339a2dc410bcf49f3e24f9ed3024fdb25b0a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hypridle",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprland": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprcursor": "hyprcursor",
|
||||||
|
"hyprland-protocols": "hyprland-protocols",
|
||||||
|
"hyprlang": "hyprlang_3",
|
||||||
|
"nixpkgs": "nixpkgs_4",
|
||||||
|
"systems": "systems_3",
|
||||||
|
"wlroots": "wlroots",
|
||||||
|
"xdph": "xdph"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1710344304,
|
||||||
|
"narHash": "sha256-jE+/UGqRYkKBBpLTTV5ayCtVmD9N1WsSKpufszUPzcA=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "Hyprland",
|
||||||
|
"rev": "3e67ee0f5f66c74c0a0bd4f797361fd100c2e2d2",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "Hyprland",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprland-catppuccin": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1702668781,
|
||||||
|
"narHash": "sha256-9BhZq9J1LmHfAPBqOr64chiAEzS+YV6zqe9ma95V3no=",
|
||||||
|
"owner": "catppuccin",
|
||||||
|
"repo": "hyprland",
|
||||||
|
"rev": "fc228737d3d0c12e34a7fa155a0fc3192e5e4017",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "catppuccin",
|
||||||
|
"repo": "hyprland",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprland-protocols": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1691753796,
|
||||||
|
"narHash": "sha256-zOEwiWoXk3j3+EoF3ySUJmberFewWlagvewDRuWYAso=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-protocols",
|
||||||
|
"rev": "0c2ce70625cb30aef199cb388f99e19a61a6ce03",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-protocols",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprlang": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hypridle",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1708212860,
|
||||||
|
"narHash": "sha256-nW3Zrhh9RJcMTvOcXAaKADnJM/g6tDf3121lJtTHnYo=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprlang",
|
||||||
|
"rev": "11d5ccda071c153dfdc18ef65338956a51cef96a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprlang",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprlang_2": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprcursor",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": "systems_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709914708,
|
||||||
|
"narHash": "sha256-bR4o3mynoTa1Wi4ZTjbnsZ6iqVcPGriXp56bZh5UFTk=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprlang",
|
||||||
|
"rev": "a685493fdbeec01ca8ccdf1f3655c044a8ce2fe2",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprlang",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprlang_3": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709914708,
|
||||||
|
"narHash": "sha256-bR4o3mynoTa1Wi4ZTjbnsZ6iqVcPGriXp56bZh5UFTk=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprlang",
|
||||||
|
"rev": "a685493fdbeec01ca8ccdf1f3655c044a8ce2fe2",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprlang",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprlang_4": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprlock",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1708212860,
|
||||||
|
"narHash": "sha256-nW3Zrhh9RJcMTvOcXAaKADnJM/g6tDf3121lJtTHnYo=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprlang",
|
||||||
|
"rev": "11d5ccda071c153dfdc18ef65338956a51cef96a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprlang",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprlock": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprlang": "hyprlang_4",
|
||||||
|
"nixpkgs": "nixpkgs_5",
|
||||||
|
"systems": "systems_4"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1710528547,
|
||||||
|
"narHash": "sha256-zi2exTT5e3OOK6P7s6IjdiUUIawhqMN4R9RiUJ+T6Fc=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprlock",
|
||||||
|
"rev": "7ee406bf9b11351e3d73e6b6b2aec7de93ba61bf",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprlock",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nix-colors": {
|
"nix-colors": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"base16-schemes": "base16-schemes",
|
"base16-schemes": "base16-schemes",
|
||||||
|
@ -321,6 +542,54 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
"nixpkgs_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1708475490,
|
||||||
|
"narHash": "sha256-g1v0TsWBQPX97ziznfJdWhgMyMGtoBFs102xSYO4syU=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "0e74ca98a74bc7270d28838369593635a5db3260",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709961763,
|
||||||
|
"narHash": "sha256-6H95HGJHhEZtyYA3rIQpvamMKAGoa8Yh2rFV29QnuGw=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "3030f185ba6a4bf4f18b87f345f104e6a6961f34",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_5": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1708475490,
|
||||||
|
"narHash": "sha256-g1v0TsWBQPX97ziznfJdWhgMyMGtoBFs102xSYO4syU=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "0e74ca98a74bc7270d28838369593635a5db3260",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_6": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1710162809,
|
"lastModified": 1710162809,
|
||||||
"narHash": "sha256-i2R2bcnQp+85de67yjgZVvJhd6rRnJbSYNpGmB6Leb8=",
|
"narHash": "sha256-i2R2bcnQp+85de67yjgZVvJhd6rRnJbSYNpGmB6Leb8=",
|
||||||
|
@ -341,9 +610,142 @@
|
||||||
"crystal-flake": "crystal-flake",
|
"crystal-flake": "crystal-flake",
|
||||||
"hardware": "hardware",
|
"hardware": "hardware",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
|
"hypridle": "hypridle",
|
||||||
|
"hyprland": "hyprland",
|
||||||
|
"hyprland-catppuccin": "hyprland-catppuccin",
|
||||||
|
"hyprlock": "hyprlock",
|
||||||
"nix-colors": "nix-colors",
|
"nix-colors": "nix-colors",
|
||||||
"nixpkgs": "nixpkgs_3",
|
"nixpkgs": "nixpkgs_6",
|
||||||
"nixpkgs-unstable": "nixpkgs-unstable"
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
|
"waybar-catppuccin": "waybar-catppuccin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1689347949,
|
||||||
|
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1689347949,
|
||||||
|
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1689347949,
|
||||||
|
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1689347949,
|
||||||
|
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"waybar-catppuccin": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1678438606,
|
||||||
|
"narHash": "sha256-WLJMA2X20E5PCPg0ZPtSop0bfmu+pLImP9t8A8V4QK8=",
|
||||||
|
"owner": "catppuccin",
|
||||||
|
"repo": "waybar",
|
||||||
|
"rev": "f74ab1eecf2dcaf22569b396eed53b2b2fbe8aff",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "catppuccin",
|
||||||
|
"repo": "waybar",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"wlroots": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"host": "gitlab.freedesktop.org",
|
||||||
|
"lastModified": 1709983277,
|
||||||
|
"narHash": "sha256-wXWIJLd4F2JZeMaihWVDW/yYXCLEC8OpeNJZg9a9ly8=",
|
||||||
|
"owner": "wlroots",
|
||||||
|
"repo": "wlroots",
|
||||||
|
"rev": "50eae512d9cecbf0b3b1898bb1f0b40fa05fe19b",
|
||||||
|
"type": "gitlab"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"host": "gitlab.freedesktop.org",
|
||||||
|
"owner": "wlroots",
|
||||||
|
"repo": "wlroots",
|
||||||
|
"rev": "50eae512d9cecbf0b3b1898bb1f0b40fa05fe19b",
|
||||||
|
"type": "gitlab"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"xdph": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprland-protocols": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-protocols"
|
||||||
|
],
|
||||||
|
"hyprlang": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprlang"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709299639,
|
||||||
|
"narHash": "sha256-jYqJM5khksLIbqSxCLUUcqEgI+O2LdlSlcMEBs39CAU=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "xdg-desktop-portal-hyprland",
|
||||||
|
"rev": "2d2fb547178ec025da643db57d40a971507b82fe",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "xdg-desktop-portal-hyprland",
|
||||||
|
"type": "github"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -14,6 +14,15 @@
|
||||||
catppuccin-vsc.url = "github:catppuccin/vscode";
|
catppuccin-vsc.url = "github:catppuccin/vscode";
|
||||||
|
|
||||||
crystal-flake.url = "github:manveru/crystal-flake";
|
crystal-flake.url = "github:manveru/crystal-flake";
|
||||||
|
|
||||||
|
hyprland.url = "github:hyprwm/Hyprland";
|
||||||
|
hyprlock.url = "github:hyprwm/hyprlock";
|
||||||
|
hypridle.url = "github:hyprwm/hypridle";
|
||||||
|
|
||||||
|
waybar-catppuccin.url = "github:catppuccin/waybar";
|
||||||
|
waybar-catppuccin.flake = false;
|
||||||
|
hyprland-catppuccin.url = "github:catppuccin/hyprland";
|
||||||
|
hyprland-catppuccin.flake = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = inputs @ {
|
outputs = inputs @ {
|
||||||
|
|
|
@ -23,6 +23,10 @@
|
||||||
cowsay file which tree gnused yt-dlp prismlauncher
|
cowsay file which tree gnused yt-dlp prismlauncher
|
||||||
] ++ (with pkgs.my; [
|
] ++ (with pkgs.my; [
|
||||||
olympus iterator-icons
|
olympus iterator-icons
|
||||||
|
]) ++ (with pkgs.gnome; [
|
||||||
|
# these are usually defaults, but are missing when non-gnome DEs are used
|
||||||
|
# however gnome apps are my beloved so i'm just adding them back
|
||||||
|
nautilus gnome-system-monitor pkgs.loupe gnome-disk-utility pkgs.gedit file-roller
|
||||||
]);
|
]);
|
||||||
|
|
||||||
# usually you don't need to do this, but this is a workaround for https://github.com/flameshot-org/flameshot/issues/3328
|
# usually you don't need to do this, but this is a workaround for https://github.com/flameshot-org/flameshot/issues/3328
|
||||||
|
@ -44,7 +48,8 @@
|
||||||
};
|
};
|
||||||
desktop = {
|
desktop = {
|
||||||
envProto = "wayland";
|
envProto = "wayland";
|
||||||
gnome.enable = true;
|
|
||||||
|
/*gnome.enable = true;
|
||||||
gnome.keybinds.shell = {
|
gnome.keybinds.shell = {
|
||||||
# disable defaults
|
# disable defaults
|
||||||
"screenshot" = [];
|
"screenshot" = [];
|
||||||
|
@ -70,8 +75,21 @@
|
||||||
binding = "Launch1";
|
binding = "Launch1";
|
||||||
command = ''${grabScript}'';
|
command = ''${grabScript}'';
|
||||||
};
|
};
|
||||||
};
|
};*/
|
||||||
|
|
||||||
#xfce.enable = true;
|
#xfce.enable = true;
|
||||||
|
|
||||||
|
# in my mind they're a lesbian polycule
|
||||||
|
hyprland.enable = true;
|
||||||
|
hyprlock.enable = true;
|
||||||
|
hyprpaper.enable = true;
|
||||||
|
hypridle.enable = true;
|
||||||
|
|
||||||
|
dunst.enable = true;
|
||||||
|
waybar.enable = true;
|
||||||
|
rofi.enable = true;
|
||||||
|
nwg-drawer.enable = true;
|
||||||
|
|
||||||
themes.active = "catppuccin";
|
themes.active = "catppuccin";
|
||||||
};
|
};
|
||||||
software = {
|
software = {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Largely based upon https://www.thinkwiki.org/wiki/X1_Linux_Tweaks
|
# Largely based upon https://www.thinkwiki.org/wiki/X1_Linux_Tweaks
|
||||||
|
|
||||||
{ ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
# Laptop-specific battery usage tuning
|
# Laptop-specific battery usage tuning
|
||||||
powerManagement.enable = true;
|
powerManagement.enable = true;
|
||||||
|
@ -11,8 +11,37 @@
|
||||||
# Use power-profile-daemon for battery saving management
|
# Use power-profile-daemon for battery saving management
|
||||||
services.power-profiles-daemon.enable = true;
|
services.power-profiles-daemon.enable = true;
|
||||||
|
|
||||||
|
# better performance than the actual Intel driver
|
||||||
|
services.xserver.videoDrivers = ["modesetting"];
|
||||||
|
|
||||||
|
# OpenCL support and VAAPI
|
||||||
|
hardware.opengl = {
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
#intel-compute-runtime
|
||||||
|
intel-media-driver
|
||||||
|
intel-vaapi-driver
|
||||||
|
libvdpau-va-gl
|
||||||
|
];
|
||||||
|
|
||||||
|
extraPackages32 = with pkgs.pkgsi686Linux; [
|
||||||
|
#intel-compute-runtime
|
||||||
|
intel-media-driver
|
||||||
|
intel-vaapi-driver
|
||||||
|
libvdpau-va-gl
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.variables = {
|
||||||
|
LIBVA_DRIVER_NAME = "iHD";
|
||||||
|
VDPAU_DRIVER = "va_gl";
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [ intel-gpu-tools ];
|
||||||
|
|
||||||
boot.kernelParams = [
|
boot.kernelParams = [
|
||||||
# Enable the i915 Sandybridge Framebuffer Compression (confirmed 475mw savings)
|
# Enable the i915 Sandybridge Framebuffer Compression (confirmed 475mw savings)
|
||||||
"i915.i915_enable_fbc=1"
|
"i915.i915_enable_fbc=1"
|
||||||
|
"i915.fastboot=1"
|
||||||
|
"enable_gvt=1"
|
||||||
];
|
];
|
||||||
}
|
}
|
|
@ -42,10 +42,31 @@ in {
|
||||||
# https://discourse.nixos.org/t/boot-faster-by-disabling-udev-settle-and-nm-wait-online/6339
|
# https://discourse.nixos.org/t/boot-faster-by-disabling-udev-settle-and-nm-wait-online/6339
|
||||||
systemd.services.systemd-udev-settle.enable = false;
|
systemd.services.systemd-udev-settle.enable = false;
|
||||||
systemd.services.NetworkManager-wait-online.enable = false;
|
systemd.services.NetworkManager-wait-online.enable = false;
|
||||||
|
|
||||||
|
# https://wiki.archlinux.org/title/Systemd/Journal#Persistent_journals
|
||||||
|
# limit systemd journal size
|
||||||
|
# journals get big really fasti and on desktops they are not audited often
|
||||||
|
# on servers, however, they are important for both security and stability
|
||||||
|
# thus, persisting them as is remains a good idea
|
||||||
|
services.journald.extraConfig = ''
|
||||||
|
SystemMaxUse=100M
|
||||||
|
RuntimeMaxUse=50M
|
||||||
|
SystemMaxFileSize=50M
|
||||||
|
'';
|
||||||
}
|
}
|
||||||
(mkIf (cfg.envProto == "wayland") {
|
(mkIf (cfg.envProto == "wayland") {
|
||||||
# https://github.com/NixOS/nixpkgs/commit/b2eb5f62a7fd94ab58acafec9f64e54f97c508a6
|
environment.sessionVariables = {
|
||||||
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
# https://github.com/NixOS/nixpkgs/commit/b2eb5f62a7fd94ab58acafec9f64e54f97c508a6
|
||||||
|
NIXOS_OZONE_WL = "1";
|
||||||
|
# the rest are borrowed from https://github.com/NotAShelf/nyx/blob/9fbba55f565c630469a971bc71e5957dc228703b/modules/core/common/system/os/display/wayland/environment.nix#L18
|
||||||
|
_JAVA_AWT_WM_NONEREPARENTING = "1";
|
||||||
|
GDK_BACKEND = "wayland,x11";
|
||||||
|
ANKI_WAYLAND = "1";
|
||||||
|
MOZ_ENABLE_WAYLAND = "1";
|
||||||
|
XDG_SESSION_TYPE = "wayland";
|
||||||
|
SDL_VIDEODRIVER = "wayland";
|
||||||
|
CLUTTER_BACKEND = "wayland";
|
||||||
|
};
|
||||||
})
|
})
|
||||||
(mkIf (cfg.envProto == "x11") {
|
(mkIf (cfg.envProto == "x11") {
|
||||||
services.xserver.excludePackages = [ pkgs.xterm ];
|
services.xserver.excludePackages = [ pkgs.xterm ];
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
{ lib, config, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.desktop.dunst;
|
||||||
|
in {
|
||||||
|
options.modules.desktop.dunst = {
|
||||||
|
enable = mkEnableOption "Enable dunst, a lightweight replacement for the notification daemons provided by most desktop environments";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
hm.services.dunst = {
|
||||||
|
enable = true;
|
||||||
|
configFile = ../../config/dunst.conf;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -94,6 +94,7 @@ in {
|
||||||
"org/gnome/desktop/interface".monospace-font-name = with cfg.fonts.monospace; "${family} ${toString size}";
|
"org/gnome/desktop/interface".monospace-font-name = with cfg.fonts.monospace; "${family} ${toString size}";
|
||||||
};
|
};
|
||||||
} // (mkIf cfg.baseFonts {
|
} // (mkIf cfg.baseFonts {
|
||||||
|
fonts.enableDefaultPackages = true;
|
||||||
fonts.packages = with pkgs; [
|
fonts.packages = with pkgs; [
|
||||||
fira-code
|
fira-code
|
||||||
fira-code-symbols
|
fira-code-symbols
|
||||||
|
@ -102,6 +103,10 @@ in {
|
||||||
proggyfonts
|
proggyfonts
|
||||||
atkinson-hyperlegible
|
atkinson-hyperlegible
|
||||||
cozette
|
cozette
|
||||||
|
twemoji-color-font
|
||||||
|
noto-fonts-color-emoji
|
||||||
|
noto-fonts-monochrome-emoji
|
||||||
|
#font-awesome
|
||||||
];
|
];
|
||||||
});
|
});
|
||||||
}
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
{ lib, config, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.desktop.hypridle;
|
||||||
|
in {
|
||||||
|
options.modules.desktop.hypridle = {
|
||||||
|
enable = mkEnableOption "Enable hypridle, Hyprland's idle daemon";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
hm.services.hypridle = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
lockCmd = "${lib.getExe config.hm.programs.hyprlock.package}";
|
||||||
|
unlockCmd = "pkill -USR1 hyprlock";
|
||||||
|
|
||||||
|
listeners = [
|
||||||
|
{
|
||||||
|
timeout = 60 * 1; # 1 min
|
||||||
|
onTimeout = "${lib.getExe pkgs.brightnessctl} -s set 20";
|
||||||
|
onResume = "${lib.getExe pkgs.brightnessctl} -r" ;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
timeout = 90; # 1.5 min
|
||||||
|
onTimeout = "hyprctl dispatch dpms off"; # turn off screen
|
||||||
|
onResume = "hyprctl dispatch dpms on"; # turn it back on
|
||||||
|
}
|
||||||
|
{
|
||||||
|
timeout = 60 * 2; # 2 min
|
||||||
|
onTimeout = "loginctl lock-session"; # lock the system
|
||||||
|
}
|
||||||
|
{
|
||||||
|
timeout = 60 * 5; # 5 min
|
||||||
|
onTimeout = "systemctl suspend"; # suspend
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,267 @@
|
||||||
|
{ inputs, lib, config, system, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.desktop.hyprland;
|
||||||
|
in {
|
||||||
|
options.modules.desktop.hyprland = {
|
||||||
|
enable = mkEnableOption "Enable Hyprland, a dynamic tiling Wayland compositor based on wlroots that doesn't sacrifice on its looks";
|
||||||
|
allowTearing = mkEnableOption "Enable tearing, reduces latency in games but unsupported on some GPUs";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = let
|
||||||
|
hyprpkgs = inputs.hyprland.packages.${system};
|
||||||
|
in mkIf cfg.enable {
|
||||||
|
services.xserver.displayManager.sessionPackages = [ hyprpkgs.hyprland ];
|
||||||
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
extraPortals = [ pkgs.xdg-desktop-portal-gtk hyprpkgs.xdg-desktop-portal-hyprland ];
|
||||||
|
config = {
|
||||||
|
common = {
|
||||||
|
default = [ "hyprland" "gtk" ];
|
||||||
|
|
||||||
|
# for flameshot to work
|
||||||
|
# https://github.com/flameshot-org/flameshot/issues/3363#issuecomment-1753771427
|
||||||
|
"org.freedesktop.impl.portal.Screencast" = "hyprland";
|
||||||
|
"org.freedesktop.impl.portal.Screenshot" = "hyprland";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
hm.wayland.windowManager.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
xwayland.enable = true;
|
||||||
|
package = hyprpkgs.hyprland;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
source = [];
|
||||||
|
|
||||||
|
"$mod" = "SUPER";
|
||||||
|
bindm = [
|
||||||
|
# Move/resize windows with mod + LMB/RMB and dragging
|
||||||
|
"$mod, mouse:272, movewindow"
|
||||||
|
"$mod, mouse:273, resizewindow"
|
||||||
|
];
|
||||||
|
bindel = [
|
||||||
|
", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 10%+"
|
||||||
|
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 10%-"
|
||||||
|
", XF86MonBrightnessUp, exec, ${lib.getExe pkgs.brightnessctl} s +5%"
|
||||||
|
", XF86MonBrightnessDown, exec, ${lib.getExe pkgs.brightnessctl} s 5%-"
|
||||||
|
];
|
||||||
|
bindl = [
|
||||||
|
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
||||||
|
", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
|
||||||
|
];
|
||||||
|
bindr = [
|
||||||
|
"SUPER, Super_L, exec, ${lib.getExe pkgs.nwg-drawer}"
|
||||||
|
];
|
||||||
|
bind =
|
||||||
|
[
|
||||||
|
"$mod, R, exec, ${lib.getExe pkgs.rofi-wayland} -show run"
|
||||||
|
", Print, exec, ${lib.getExe pkgs.grimblast} copy area"
|
||||||
|
"$mod, T, exec, ${lib.getExe pkgs.wezterm}"
|
||||||
|
#"$mod, ;, exec, "
|
||||||
|
"$mod, Q, killactive, "
|
||||||
|
#"$mod, M, exit, "
|
||||||
|
"$mod, V, togglefloating, "
|
||||||
|
"$mod, P, pseudo, " # dwindle
|
||||||
|
"$mod, J, togglesplit, " # dwindle
|
||||||
|
|
||||||
|
# Move focus with mod + arrow keys
|
||||||
|
"$mod, left, movefocus, l"
|
||||||
|
"$mod, right, movefocus, r"
|
||||||
|
"$mod, up, movefocus, u"
|
||||||
|
"$mod, down, movefocus, d"
|
||||||
|
|
||||||
|
# Example special workspace (scratchpad)
|
||||||
|
"$mod, S, togglespecialworkspace, magic"
|
||||||
|
"$mod SHIFT, S, movetoworkspace, special:magic"
|
||||||
|
|
||||||
|
# Scroll through existing workspaces with mod + scroll
|
||||||
|
"$mod, mouse_down, workspace, e+1"
|
||||||
|
"$mod, mouse_up, workspace, e-1"
|
||||||
|
]
|
||||||
|
++ (
|
||||||
|
# workspaces
|
||||||
|
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
|
||||||
|
builtins.concatLists (builtins.genList (
|
||||||
|
x: let
|
||||||
|
ws = let
|
||||||
|
c = (x + 1) / 10;
|
||||||
|
in
|
||||||
|
builtins.toString (x + 1 - (c * 10));
|
||||||
|
in [
|
||||||
|
"$mod, ${ws}, workspace, ${toString (x + 1)}"
|
||||||
|
"$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}"
|
||||||
|
]
|
||||||
|
)
|
||||||
|
10)
|
||||||
|
);
|
||||||
|
|
||||||
|
input = {
|
||||||
|
kb_layout = "us,ru";
|
||||||
|
kb_variant = "workman,";
|
||||||
|
kb_options = "grp:alt_shift_toggle";
|
||||||
|
touchpad = {
|
||||||
|
disable_while_typing = false;
|
||||||
|
natural_scroll = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
follow_mouse = 1;
|
||||||
|
|
||||||
|
sensitivity = 0; # -1.0 - 1.0, 0 means no modification.
|
||||||
|
};
|
||||||
|
|
||||||
|
# basically porting the default config for safety
|
||||||
|
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||||
|
monitor=",highrr,auto,auto";
|
||||||
|
|
||||||
|
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
||||||
|
|
||||||
|
# Execute your favorite apps at launch
|
||||||
|
# exec-once = waybar & hyprpaper & firefox
|
||||||
|
|
||||||
|
exec-once = [ "${lib.getExe pkgs.networkmanagerapplet}" ];
|
||||||
|
|
||||||
|
# Source a file (multi-file configs)
|
||||||
|
# source = ~/.config/hypr/myColors.conf
|
||||||
|
|
||||||
|
# Some default env vars.
|
||||||
|
env = [
|
||||||
|
"XCURSOR_THEME,${config.modules.desktop.themes.cursor.name}"
|
||||||
|
"XCURSOR_SIZE,24"
|
||||||
|
];
|
||||||
|
|
||||||
|
general = {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
|
||||||
|
gaps_in = 6;
|
||||||
|
gaps_out = 6;
|
||||||
|
border_size = 2;
|
||||||
|
no_border_on_floating = true;
|
||||||
|
|
||||||
|
layout = "dwindle";
|
||||||
|
|
||||||
|
resize_on_border = true;
|
||||||
|
|
||||||
|
# https://wiki.hyprland.org/Configuring/Tearing/
|
||||||
|
allow_tearing = cfg.allowTearing;
|
||||||
|
};
|
||||||
|
|
||||||
|
windowrulev2 = [
|
||||||
|
# i think this only applies to proton
|
||||||
|
"immediate, class:^steam_app_"
|
||||||
|
"float, class:^steam_app_"
|
||||||
|
|
||||||
|
# common popups
|
||||||
|
"float, class:file-roller"
|
||||||
|
"float, class:org.gnome.Loupe"
|
||||||
|
"float, initialTitle:^Open Folder$"
|
||||||
|
"float, initialTitle:^Open File$"
|
||||||
|
|
||||||
|
#"float, class:org.gnome.Nautilus"
|
||||||
|
|
||||||
|
# fix focus
|
||||||
|
"stayfocused, class:^pinentry-"
|
||||||
|
"stayfocused, class:^rofi"
|
||||||
|
|
||||||
|
# workspace moving
|
||||||
|
"workspace 1, class:^vivaldi"
|
||||||
|
"workspace 2, class:code-url-handler"
|
||||||
|
"workspace 4, class:ArmCord"
|
||||||
|
];
|
||||||
|
|
||||||
|
blurls = [
|
||||||
|
"gtk-layer-shell"
|
||||||
|
"waybar"
|
||||||
|
];
|
||||||
|
|
||||||
|
decoration = {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
|
||||||
|
rounding = 10;
|
||||||
|
|
||||||
|
blur = {
|
||||||
|
enabled = true;
|
||||||
|
size = 4;
|
||||||
|
passes = 1;
|
||||||
|
#popups = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
drop_shadow = false;
|
||||||
|
#shadow_range = 4;
|
||||||
|
#shadow_render_power = 3;
|
||||||
|
|
||||||
|
# mistake mistake mistkae mistake mistake mistake mistake mistake mistake mistake
|
||||||
|
#screen_shader = toString ../../config/analys.frag;
|
||||||
|
};
|
||||||
|
|
||||||
|
animations = {
|
||||||
|
enabled = true;
|
||||||
|
|
||||||
|
# https://wiki.hyprland.org/Configuring/Animations/
|
||||||
|
|
||||||
|
bezier = [
|
||||||
|
"outCubic, 0.33, 1, 0.68, 1"
|
||||||
|
"outExpo, 0.16, 1, 0.3, 1"
|
||||||
|
];
|
||||||
|
|
||||||
|
animation = [
|
||||||
|
"windows, 1, 5, outExpo, popin"
|
||||||
|
"windowsOut, 1, 5, outCubic, popin 80%"
|
||||||
|
"border, 1, 2, outExpo"
|
||||||
|
"fade, 1, 3, outCubic"
|
||||||
|
"workspaces, 1, 6, outExpo"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
dwindle = {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||||
|
pseudotile = "yes"; # master switch for pseudotiling. Enabling is bound to mod + P in the keybinds section below
|
||||||
|
preserve_split = "yes"; # you probably want this
|
||||||
|
};
|
||||||
|
|
||||||
|
master = {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||||
|
new_is_master = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
gestures = {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
workspace_swipe = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
misc = {
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
force_default_wallpaper = 0; # Set to 0 to disable the anime mascot wallpapers
|
||||||
|
disable_splash_rendering = true;
|
||||||
|
disable_hyprland_logo = true;
|
||||||
|
vrr = 2;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Example windowrule v1
|
||||||
|
# windowrule = float, ^(kitty)$
|
||||||
|
# Example windowrule v2
|
||||||
|
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||||
|
};
|
||||||
|
# this has to be done this way because source (on my end) is shoved at the bottom
|
||||||
|
# which means the theme variables aren't loaded in the regular config.
|
||||||
|
# luckily, extraConfig is always last
|
||||||
|
extraConfig = ''
|
||||||
|
general {
|
||||||
|
col.active_border=$pink
|
||||||
|
col.inactive_border=$surface0
|
||||||
|
}
|
||||||
|
decoration {
|
||||||
|
col.shadow=$surface0
|
||||||
|
col.shadow_inactive=$surface0
|
||||||
|
}
|
||||||
|
misc {
|
||||||
|
background_color=$crust
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,63 @@
|
||||||
|
{ lib, config, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.desktop.hyprlock;
|
||||||
|
in {
|
||||||
|
options.modules.desktop.hyprlock = {
|
||||||
|
enable = mkEnableOption "Enable hyprlock, a simple, yet fast, multi-threaded and GPU-accelerated screen lock for hyprland";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
security.pam.services.hyprlock.text = "auth include login";
|
||||||
|
hm.programs.hyprlock = with config.colorScheme.colors; {
|
||||||
|
enable = true;
|
||||||
|
general = {
|
||||||
|
hide_cursor = false;
|
||||||
|
no_fade_in = true;
|
||||||
|
no_fade_out = true;
|
||||||
|
};
|
||||||
|
backgrounds = [
|
||||||
|
{
|
||||||
|
path = toString ../../assets/lockscreen.png;
|
||||||
|
blur_passes = 3;
|
||||||
|
blur_size = 6;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
labels = [
|
||||||
|
{
|
||||||
|
text = "cmd[update:1000] echo \"$(date +'%H:%M')\"";
|
||||||
|
font_size = 58;
|
||||||
|
color = "rgb(${base05})";
|
||||||
|
font_family = config.modules.desktop.fonts.fonts.sansSerif.family;
|
||||||
|
position = { x = 0; y = 30; };
|
||||||
|
}
|
||||||
|
{
|
||||||
|
text = "cmd[update:1000] echo \"$(date +'%A %B %e')\"";
|
||||||
|
font_size = 14;
|
||||||
|
color = "rgb(${base05})";
|
||||||
|
font_family = config.modules.desktop.fonts.fonts.sansSerif.family;
|
||||||
|
position = { x = 0; y = 10; };
|
||||||
|
}
|
||||||
|
];
|
||||||
|
input-fields = [
|
||||||
|
{
|
||||||
|
size = { width = 300; height = 28; };
|
||||||
|
outline_thickness = 2;
|
||||||
|
dots_size = 0.2;
|
||||||
|
fade_on_empty = false;
|
||||||
|
placeholder_text = "";
|
||||||
|
|
||||||
|
outer_color = "rgb(${base0E})";
|
||||||
|
inner_color = "rgb(${base00})";
|
||||||
|
font_color = "rgb(${base05})";
|
||||||
|
check_color = "rgb(${base02})";
|
||||||
|
fail_color = "rgb(${base08})";
|
||||||
|
capslock_color = "rgb(${base09})";
|
||||||
|
|
||||||
|
position = { x = 0; y = -30; };
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
{ lib, config, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.desktop.hyprpaper;
|
||||||
|
in {
|
||||||
|
options.modules.desktop.hyprpaper = {
|
||||||
|
enable = mkEnableOption "Enable Hyprpaper, a blazing fast wayland wallpaper utility";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
hm.wayland.windowManager.hyprland.settings.exec-once = [ "${lib.getExe pkgs.hyprpaper}" ];
|
||||||
|
hm.xdg.configFile."hypr/hyprpaper.conf" = let
|
||||||
|
img = ../../assets/wallpaper.png;
|
||||||
|
in {
|
||||||
|
text = ''
|
||||||
|
preload = ${img}
|
||||||
|
wallpaper = ,${img}
|
||||||
|
splash = false
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
{ lib, config, pkgs, inputs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.desktop.nwg-drawer;
|
||||||
|
in {
|
||||||
|
options.modules.desktop.nwg-drawer = {
|
||||||
|
enable = mkEnableOption "Enable nwg-drawer, a GTK-based application launcher for Wayland";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
hm.wayland.windowManager.hyprland.settings.exec-once = [ "${lib.getExe pkgs.nwg-drawer} -r -nofs -nocats -term wezterm -spacing 15 -fm nautilus" ];
|
||||||
|
hm.xdg.configFile."nwg-drawer/drawer.css".text =
|
||||||
|
builtins.concatStringsSep "\n" [
|
||||||
|
"@import \"${inputs.waybar-catppuccin}/themes/mocha.css\";"
|
||||||
|
(lib.readFile ../../config/nwg-drawer.css)
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
{ lib, config, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.desktop.rofi;
|
||||||
|
in {
|
||||||
|
options.modules.desktop.rofi = {
|
||||||
|
enable = mkEnableOption "Enable rofi, a window switcher, run dialog and dmenu replacement";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
hm.programs.rofi = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.rofi-wayland;
|
||||||
|
font = with config.modules.desktop.fonts.fonts.monospace; "${family} ${toString size}";
|
||||||
|
extraConfig = {
|
||||||
|
show-icons = true;
|
||||||
|
};
|
||||||
|
theme = ../../config/rofi.rasi;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -3,7 +3,8 @@
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.desktop.themes;
|
cfg = config.modules.desktop.themes;
|
||||||
#accent = "pink"; # TODO?
|
accent = "pink";
|
||||||
|
variant = "mocha";
|
||||||
in {
|
in {
|
||||||
config = mkIf (cfg.active == "catppuccin") {
|
config = mkIf (cfg.active == "catppuccin") {
|
||||||
colorScheme = inputs.nix-colors.colorSchemes.catppuccin-mocha;
|
colorScheme = inputs.nix-colors.colorSchemes.catppuccin-mocha;
|
||||||
|
@ -12,10 +13,10 @@ in {
|
||||||
dark = true;
|
dark = true;
|
||||||
|
|
||||||
gtkTheme = {
|
gtkTheme = {
|
||||||
name = "Catppuccin-Mocha-Compact-Pink-Dark";
|
name = "Catppuccin-Mocha-Compact-Pink-Dark"; #todo put accent in here
|
||||||
package = pkgs.catppuccin-gtk.override {
|
package = pkgs.catppuccin-gtk.override {
|
||||||
variant = "mocha";
|
variant = variant;
|
||||||
accents = ["pink"];
|
accents = [ accent ];
|
||||||
tweaks = ["rimless"];
|
tweaks = ["rimless"];
|
||||||
size = "compact";
|
size = "compact";
|
||||||
};
|
};
|
||||||
|
@ -35,7 +36,7 @@ in {
|
||||||
vscode = {
|
vscode = {
|
||||||
name = "Catppuccin Mocha";
|
name = "Catppuccin Mocha";
|
||||||
extension = (pkgs.vscode-extensions.catppuccin.catppuccin-vsc.override {
|
extension = (pkgs.vscode-extensions.catppuccin.catppuccin-vsc.override {
|
||||||
accent = "pink";
|
accent = accent;
|
||||||
boldKeywords = false;
|
boldKeywords = false;
|
||||||
italicComments = false;
|
italicComments = false;
|
||||||
italicKeywords = false;
|
italicKeywords = false;
|
||||||
|
@ -45,6 +46,8 @@ in {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
hyprland = "${inputs.hyprland-catppuccin}/themes/${variant}.conf";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
|
@ -33,6 +33,8 @@ in {
|
||||||
extension = mkPackageOption pkgs "extension" {};
|
extension = mkPackageOption pkgs "extension" {};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
hyprland = mkOpt (nullOr str) null;
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf (cfg.active != null) {
|
config = mkIf (cfg.active != null) {
|
||||||
|
@ -55,11 +57,18 @@ in {
|
||||||
theme = cfg.gtkTheme;
|
theme = cfg.gtkTheme;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
hm.services.dunst.iconTheme = {
|
||||||
|
name = cfg.iconTheme.name;
|
||||||
|
package = cfg.iconTheme.package;
|
||||||
|
};
|
||||||
|
|
||||||
hm.programs.vscode = {
|
hm.programs.vscode = {
|
||||||
extensions = [ cfg.editor.vscode.extension ];
|
extensions = [ cfg.editor.vscode.extension ];
|
||||||
userSettings = {
|
userSettings = {
|
||||||
"workbench.colorTheme" = cfg.editor.vscode.name;
|
"workbench.colorTheme" = cfg.editor.vscode.name;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
hm.wayland.windowManager.hyprland.settings.source = mkIf (cfg.hyprland != null) [ cfg.hyprland ];
|
||||||
};
|
};
|
||||||
}
|
}
|
|
@ -0,0 +1,244 @@
|
||||||
|
{ lib, config, pkgs, inputs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.desktop.waybar;
|
||||||
|
in {
|
||||||
|
options.modules.desktop.waybar = {
|
||||||
|
enable = mkEnableOption "Enable Waybar, a lightweight desktop environment based on GTK+";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
hm.wayland.windowManager.hyprland.settings.exec-once = [ "${lib.getExe pkgs.waybar}" ];
|
||||||
|
hm.programs.waybar = {
|
||||||
|
enable = true;
|
||||||
|
#style = builtins.concatStringsSep "\n" [
|
||||||
|
# "@import \"${inputs.waybar-catppuccin}/themes/mocha.css\";"
|
||||||
|
# (lib.readFile ../../config/waybar.css)
|
||||||
|
#];
|
||||||
|
settings = {
|
||||||
|
mainBar = {
|
||||||
|
layer = "top";
|
||||||
|
position = "top";
|
||||||
|
#spacing = 4;
|
||||||
|
height = 24;
|
||||||
|
margin-top = 6;
|
||||||
|
margin-left = 6;
|
||||||
|
margin-right = 6;
|
||||||
|
margin-bottom = 0;
|
||||||
|
modules-left = [
|
||||||
|
"hyprland/workspaces"
|
||||||
|
"hyprland/window"
|
||||||
|
];
|
||||||
|
modules-center = [
|
||||||
|
"clock"
|
||||||
|
];
|
||||||
|
modules-right = [
|
||||||
|
"group/status"
|
||||||
|
"tray"
|
||||||
|
"group/power"
|
||||||
|
];
|
||||||
|
|
||||||
|
"group/status" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
modules = [
|
||||||
|
"hyprland/language"
|
||||||
|
"pulseaudio"
|
||||||
|
"backlight"
|
||||||
|
"cpu"
|
||||||
|
"memory"
|
||||||
|
"power-profiles-daemon"
|
||||||
|
"battery"
|
||||||
|
#"network"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"group/power" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
drawer = {
|
||||||
|
transition-duration = 200;
|
||||||
|
children-class = "not-power";
|
||||||
|
transition-left-to-right = false;
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
"custom/power"
|
||||||
|
"custom/lock"
|
||||||
|
"custom/reboot"
|
||||||
|
"custom/quit"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"custom/quit" = {
|
||||||
|
format = "";
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-format = "Exit Hyprland";
|
||||||
|
on-click = "hyprctl dispatch exit";
|
||||||
|
};
|
||||||
|
"custom/lock" = {
|
||||||
|
format = "";
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-format = "Lock the system";
|
||||||
|
on-click = "hyprlock";
|
||||||
|
};
|
||||||
|
"custom/reboot" = {
|
||||||
|
format = "↻";
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-format = "Reboot";
|
||||||
|
on-click = "reboot";
|
||||||
|
};
|
||||||
|
"custom/power" = {
|
||||||
|
format = "⏻";
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-format = "Power off";
|
||||||
|
on-click = "shutdown now";
|
||||||
|
};
|
||||||
|
"hyprland/workspaces" = {
|
||||||
|
format = "{icon}";
|
||||||
|
format-icons = {
|
||||||
|
"1" = "";
|
||||||
|
"2" = "";
|
||||||
|
"3" = "";
|
||||||
|
"4" = "";
|
||||||
|
urgent = "";
|
||||||
|
default = "•";
|
||||||
|
};
|
||||||
|
persistent-workspaces = {
|
||||||
|
"1" = [];
|
||||||
|
"2" = [];
|
||||||
|
"3" = [];
|
||||||
|
"4" = [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"hyprland/window" = {
|
||||||
|
format = "{}";
|
||||||
|
icon = true;
|
||||||
|
icon-size = 16;
|
||||||
|
rewrite = {
|
||||||
|
"(.*) - Vivaldi" = "$1";
|
||||||
|
"(.*) - Visual Studio Code" = "$1";
|
||||||
|
#"(.*\\.nix\\s.*)" = "";
|
||||||
|
"(\\S+\\.js\\s.*)" = " $1";
|
||||||
|
"(\\S+\\.ts\\s.*)" = " $1";
|
||||||
|
"(\\S+\\.go\\s.*)" = " $1";
|
||||||
|
"(\\S+\\.lua\\s.*)" = " $1";
|
||||||
|
"(\\S+\\.java\\s.*)" = " $1";
|
||||||
|
"(\\S+\\.rb\\s.*)" = " $1";
|
||||||
|
"(\\S+\\.php\\s.*)" = " $1";
|
||||||
|
"(\\S+\\.jsonc?\\s.*)" = " $1";
|
||||||
|
"(\\S+\\.md\\s.*)" = " $1";
|
||||||
|
"(\\S+\\.txt\\s.*)" = " $1";
|
||||||
|
"(\\S+\\.cs\\s.*)" = " $1";
|
||||||
|
"(\\S+\\.c\\s.*)" = " $1";
|
||||||
|
"(\\S+\\.cpp\\s.*)" = " $1";
|
||||||
|
"(\\S+\\.hs\\s.*)" = " $1";
|
||||||
|
".*Discord | (.*) | .*" = "$1 - ArmCord";
|
||||||
|
#"(.*) - ArmCord" = "$1";
|
||||||
|
};
|
||||||
|
separate-outputs = true;
|
||||||
|
};
|
||||||
|
"hyprland/language" = {
|
||||||
|
format = " {}";
|
||||||
|
format-en = "Aa";
|
||||||
|
format-ru = "Ру";
|
||||||
|
on-click = "hyprctl switchxkblayout at-translated-set-2-keyboard next";
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-format = "{flag} {long}";
|
||||||
|
};
|
||||||
|
pulseaudio = {
|
||||||
|
format = "{icon} {volume}%";
|
||||||
|
format-bluetooth = "{icon} {volume}%";
|
||||||
|
format-muted = "婢 {volume}%";
|
||||||
|
format-icons = {
|
||||||
|
headphone = "";
|
||||||
|
hands-free = "";
|
||||||
|
headset = "";
|
||||||
|
phone = "";
|
||||||
|
portable = "";
|
||||||
|
car = "";
|
||||||
|
default = ["" "" ""];
|
||||||
|
};
|
||||||
|
scroll-step = 1;
|
||||||
|
on-click = "${lib.getExe pkgs.pavucontrol}";
|
||||||
|
ignored-sinks = ["Easy Effects Sink"];
|
||||||
|
};
|
||||||
|
backlight = {
|
||||||
|
format = "{icon} {percent}%";
|
||||||
|
format-icons = ["" ""];
|
||||||
|
scroll-step = 1;
|
||||||
|
};
|
||||||
|
cpu = {
|
||||||
|
interval = 4;
|
||||||
|
format = " {usage}%";
|
||||||
|
};
|
||||||
|
memory = {
|
||||||
|
interval = 4;
|
||||||
|
format = " {percentage}%";
|
||||||
|
tooltip-format = "{used:0.1f}GiB/{avail:0.1f}GiB used\n{swapUsed:0.1f}GiB/{swapAvail:0.1f}GiB swap";
|
||||||
|
};
|
||||||
|
"battery" = {
|
||||||
|
interval = 30;
|
||||||
|
states = {
|
||||||
|
warning = 20;
|
||||||
|
critical = 10;
|
||||||
|
};
|
||||||
|
full-at = 98;
|
||||||
|
format = "{icon} {capacity}%";
|
||||||
|
format-icons = ["" "" "" "" ""];
|
||||||
|
format-critical = " {capacity}%";
|
||||||
|
tooltip-format = "{timeTo} ({power}W)";
|
||||||
|
format-charging = " {capacity}%";
|
||||||
|
};
|
||||||
|
"network" = {
|
||||||
|
format = "";
|
||||||
|
format-ethernet = "";
|
||||||
|
format-wifi = " {signalStrength}%";
|
||||||
|
format-disconnected = "";
|
||||||
|
tooltip-format = "{ifname} via {gwaddr}";
|
||||||
|
tooltip-format-wifi = "connected to {essid}";
|
||||||
|
tooltip-format-ethernet = "{ifname}";
|
||||||
|
tooltip-format-disconnected = "Disconnected";
|
||||||
|
};
|
||||||
|
"clock" = {
|
||||||
|
format = "{:%H:%M}";
|
||||||
|
format-alt = "{:%a %b %d %R}";
|
||||||
|
tooltip-format = "<tt><small>{calendar}</small></tt>";
|
||||||
|
calendar = {
|
||||||
|
mode = "year";
|
||||||
|
mode-mon-col = 3;
|
||||||
|
weeks-pos = "right";
|
||||||
|
on-scroll = 1;
|
||||||
|
on-click-right = "mode";
|
||||||
|
format = {
|
||||||
|
months = "<span color='#ffead3'><b>{}</b></span>";
|
||||||
|
days = "<span color='#ecc6d9'><b>{}</b></span>";
|
||||||
|
weeks = "<span color='#99ffdd'><b>W{}</b></span>";
|
||||||
|
weekdays = "<span color='#ffcc66'><b>{}</b></span>";
|
||||||
|
today = "<span color='#ff6699'><b><u>{}</u></b></span>";
|
||||||
|
};
|
||||||
|
actions = {
|
||||||
|
on-click-right = "mode";
|
||||||
|
on-click-forward = "tz_up";
|
||||||
|
on-click-backward = "tz_down";
|
||||||
|
on-scroll-up = "shift_up";
|
||||||
|
on-scroll-down = "shift_down";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
power-profiles-daemon = {
|
||||||
|
format = "{icon}";
|
||||||
|
tooltip-format = "Power profile: {profile}\nDriver: {driver}";
|
||||||
|
tooltip = true;
|
||||||
|
format-icons = {
|
||||||
|
default = "";
|
||||||
|
performance = " perf";
|
||||||
|
balanced = " balance";
|
||||||
|
power-saver = " save";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
tray = {
|
||||||
|
icon-size = 16;
|
||||||
|
spacing = 4;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
{
|
||||||
|
# if lvm is enabled, then tell it to issue discards
|
||||||
|
# (this is good for SSDs and has almost no downsides on HDDs, so
|
||||||
|
# it's a good idea to enable it unconditionally)
|
||||||
|
environment.etc."lvm/lvm.conf".text = mkIf config.services.lvm.enable ''
|
||||||
|
devices {
|
||||||
|
issue_discards = 1
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
|
# discard blocks that are not in use by the filesystem, good for SSDs
|
||||||
|
services.fstrim = {
|
||||||
|
# we may enable this unconditionally across all systems becuase it's performance
|
||||||
|
# impact is negligible on systems without a SSD - which means it's a no-op with
|
||||||
|
# almost no downsides aside from the service firing once per week
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# the default value, good enough for average-load systems
|
||||||
|
interval = "weekly";
|
||||||
|
};
|
||||||
|
|
||||||
|
# tweak fstim service to run only when on AC power
|
||||||
|
# and to be nice to other processes
|
||||||
|
# (this is a good idea for any service that runs periodically)
|
||||||
|
systemd.services.fstrim = {
|
||||||
|
unitConfig.ConditionACPower = true;
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
Nice = 19;
|
||||||
|
IOSchedulingClass = "idle";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
{lib, ...}:
|
||||||
|
{
|
||||||
|
# I don't use lvm, can be disabled
|
||||||
|
services.lvm.enable = lib.mkDefault false;
|
||||||
|
}
|
|
@ -67,6 +67,22 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
networking.firewall.enable = false;
|
networking.firewall.enable = false;
|
||||||
|
|
||||||
|
services.usbguard = {
|
||||||
|
IPCAllowedUsers = [ "root" "${env.mainUser}" ];
|
||||||
|
presentDevicePolicy = "allow";
|
||||||
|
rules = ''
|
||||||
|
allow with-interface equals { 08:*:* }
|
||||||
|
|
||||||
|
# Reject devices with suspicious combination of interfaces
|
||||||
|
reject with-interface all-of { 08:*:* 03:00:* }
|
||||||
|
reject with-interface all-of { 08:*:* 03:01:* }
|
||||||
|
reject with-interface all-of { 08:*:* e0:*:* }
|
||||||
|
reject with-interface all-of { 08:*:* 02:*:* }
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = [ pkgs.usbguard ];
|
||||||
} // (mkIf cfg.useDoas {
|
} // (mkIf cfg.useDoas {
|
||||||
security.sudo.enable = false;
|
security.sudo.enable = false;
|
||||||
security.doas.enable = true;
|
security.doas.enable = true;
|
||||||
|
|
|
@ -9,6 +9,7 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
hm.programs.rofi.terminal = "alacritty";
|
||||||
hm.programs.alacritty = {
|
hm.programs.alacritty = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# custom settings
|
# custom settings
|
||||||
|
|
|
@ -9,6 +9,7 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
hm.programs.rofi.terminal = "wezterm";
|
||||||
hm.programs.wezterm = {
|
hm.programs.wezterm = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# custom settings
|
# custom settings
|
||||||
|
@ -47,4 +48,4 @@ in {
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
final: prev: {
|
||||||
|
waybar = prev.waybar.overrideAttrs ( old: {
|
||||||
|
version = "0.10.0";
|
||||||
|
|
||||||
|
src = prev.fetchFromGitHub {
|
||||||
|
owner = "Alexays";
|
||||||
|
repo = "Waybar";
|
||||||
|
rev = "0.10.0";
|
||||||
|
hash = "sha256-p1VRrKT2kTDy48gDXPMHlLbfcokAOFeTZXGzTeO1SAE=";
|
||||||
|
};
|
||||||
|
|
||||||
|
# fix gtk-layer-shell issue
|
||||||
|
mesonFlags = builtins.filter (a: !(prev.lib.strings.hasInfix "gtk-layer-shell" a)) old.mesonFlags;
|
||||||
|
|
||||||
|
# fix cava version mismatch issue
|
||||||
|
postUnpack = let
|
||||||
|
# Derived from subprojects/cava.wrap
|
||||||
|
libcava.src = prev.fetchFromGitHub {
|
||||||
|
owner = "LukashonakV";
|
||||||
|
repo = "cava";
|
||||||
|
rev = "0.10.1";
|
||||||
|
hash = "sha256-iIYKvpOWafPJB5XhDOSIW9Mb4I3A4pcgIIPQdQYEqUw=";
|
||||||
|
};
|
||||||
|
in ''
|
||||||
|
pushd "$sourceRoot"
|
||||||
|
cp -R --no-preserve=mode,ownership ${libcava.src} subprojects/cava-0.10.1
|
||||||
|
patchShebangs .
|
||||||
|
popd
|
||||||
|
'';
|
||||||
|
} );
|
||||||
|
}
|
Loading…
Reference in New Issue