Reorganized desktop, simplified systemwide setup
This commit is contained in:
		
							parent
							
								
									627c29ba9f
								
							
						
					
					
						commit
						9a5bd2177c
					
				@ -23,6 +23,7 @@ in
 | 
				
			|||||||
        clear_password = true;
 | 
					        clear_password = true;
 | 
				
			||||||
        load = true;
 | 
					        load = true;
 | 
				
			||||||
        save = true;
 | 
					        save = true;
 | 
				
			||||||
 | 
					        xinitrc = "null";
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
				
			|||||||
@ -31,11 +31,11 @@ let
 | 
				
			|||||||
in
 | 
					in
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  imports = [
 | 
					  imports = [
 | 
				
			||||||
    # Import home manager
 | 
					 | 
				
			||||||
    # <home-manager/nixos>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # Import system wide configuration required for user modules
 | 
					    # Import system wide configuration required for user modules
 | 
				
			||||||
    ../../user-modules/systemwide/default.nix
 | 
					    ../../user-modules/systemwide/default.nix
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Import systemwide configuration
 | 
				
			||||||
 | 
					    ./systemwide.nix
 | 
				
			||||||
  ];
 | 
					  ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  options = {
 | 
					  options = {
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										13
									
								
								modules/users/systemwide.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								modules/users/systemwide.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  lib,
 | 
				
			||||||
 | 
					  config,
 | 
				
			||||||
 | 
					  ...
 | 
				
			||||||
 | 
					}:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					with lib;
 | 
				
			||||||
 | 
					let
 | 
				
			||||||
 | 
					  configuration = (map (user: user.systemwide) (attrValues config.home-manager.users));
 | 
				
			||||||
 | 
					in
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  config = configuration;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -27,6 +27,7 @@
 | 
				
			|||||||
    ./shell/bash.nix
 | 
					    ./shell/bash.nix
 | 
				
			||||||
    ./shell/fish.nix
 | 
					    ./shell/fish.nix
 | 
				
			||||||
    ./spotify/default.nix
 | 
					    ./spotify/default.nix
 | 
				
			||||||
 | 
					    ./systemwide/default.nix
 | 
				
			||||||
    ./terminal/default.nix
 | 
					    ./terminal/default.nix
 | 
				
			||||||
    ./terminal/foot/default.nix
 | 
					    ./terminal/foot/default.nix
 | 
				
			||||||
    ./theming/default.nix
 | 
					    ./theming/default.nix
 | 
				
			||||||
 | 
				
			|||||||
@ -1,23 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  lib,
 | 
					 | 
				
			||||||
  config,
 | 
					 | 
				
			||||||
  pkgs,
 | 
					 | 
				
			||||||
  ...
 | 
					 | 
				
			||||||
}:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
with lib;
 | 
					 | 
				
			||||||
let
 | 
					 | 
				
			||||||
  cfg = config.modules.glpaper;
 | 
					 | 
				
			||||||
in
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  options.modules.glpaper = {
 | 
					 | 
				
			||||||
    enable = mkEnableOption "glpaper";
 | 
					 | 
				
			||||||
    shader = mkOption {
 | 
					 | 
				
			||||||
      type = types.path;
 | 
					 | 
				
			||||||
      default = ./shaders/waves.glsl;
 | 
					 | 
				
			||||||
      description = "Shader to use for the background";
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  config = mkIf cfg.enable { home.packages = [ pkgs.glpaper ]; };
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,169 +0,0 @@
 | 
				
			|||||||
#define zoom 0.900
 | 
					 | 
				
			||||||
#define tile 0.850
 | 
					 | 
				
			||||||
#define speed2 0.0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef GL_ES
 | 
					 | 
				
			||||||
precision highp float;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
uniform float time;
 | 
					 | 
				
			||||||
uniform vec2 resolution;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define time3 (time * 0.01)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define mouse vec2(sin(time3)/48., cos(time3)/48.)
 | 
					 | 
				
			||||||
#define iterations 14
 | 
					 | 
				
			||||||
#define formuparam2 0.79
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
#define volsteps 5
 | 
					 | 
				
			||||||
#define stepsize 0.390
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
#define brightness 0.003
 | 
					 | 
				
			||||||
#define darkmatter 0.400
 | 
					 | 
				
			||||||
#define distfading 0.560
 | 
					 | 
				
			||||||
#define saturation 0.800
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define transverseSpeed zoom*2.0
 | 
					 | 
				
			||||||
#define cloud 0.11 
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
float triangle(float x, float a) { 
 | 
					 | 
				
			||||||
    float output2 = 2.0 * abs(2.0 * ((x/a) - floor((x/a) + 0.5))) - 1.0;
 | 
					 | 
				
			||||||
    return output2;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
float field(in vec3 p) {	
 | 
					 | 
				
			||||||
    float strength = 7. + .03 * log(1.e-6 + fract(sin(time3) * 4373.11));
 | 
					 | 
				
			||||||
    float accum = 0.;
 | 
					 | 
				
			||||||
    float prev = 0.;
 | 
					 | 
				
			||||||
    float tw = 0.;	
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Replace or uncomment the for-loop as intended in your logic
 | 
					 | 
				
			||||||
    float mag = dot(p, p);
 | 
					 | 
				
			||||||
    p = abs(p) / mag + vec3(-.5, -.8 + 0.1*sin(time3*0.7 + 2.0), -1.1+0.3*cos(time3*0.3));
 | 
					 | 
				
			||||||
    float w = exp(-float(0) / 7.);
 | 
					 | 
				
			||||||
    accum += w * exp(-strength * pow(abs(mag - prev), 2.3));
 | 
					 | 
				
			||||||
    tw += w;
 | 
					 | 
				
			||||||
    prev = mag;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return max(0., 5. * accum / tw - .7);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void main() {   
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
     	vec2 uv2 = 2. * gl_FragCoord.xy / vec2(512) - 1.;
 | 
					 | 
				
			||||||
	vec2 uvs = uv2 * vec2(512)  / 512.;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	float time2 = time3;               
 | 
					 | 
				
			||||||
        float speed = speed2;
 | 
					 | 
				
			||||||
        speed = .01 * cos(time2*0.02 + 3.1415926/4.0);          
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
    	float formuparam = formuparam2;
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
    		
 | 
					 | 
				
			||||||
	vec2 uv = uvs;		       
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	float a_xz = 0.9;
 | 
					 | 
				
			||||||
	float a_yz = -.6;
 | 
					 | 
				
			||||||
	float a_xy = 0.9 + time3*0.08;	
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	mat2 rot_xz = mat2(cos(a_xz),sin(a_xz),-sin(a_xz),cos(a_xz));	
 | 
					 | 
				
			||||||
	mat2 rot_yz = mat2(cos(a_yz),sin(a_yz),-sin(a_yz),cos(a_yz));		
 | 
					 | 
				
			||||||
	mat2 rot_xy = mat2(cos(a_xy),sin(a_xy),-sin(a_xy),cos(a_xy));
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	float v2 =1.0;	
 | 
					 | 
				
			||||||
	vec3 dir=vec3(uv*zoom,1.); 
 | 
					 | 
				
			||||||
	vec3 from=vec3(0.0, 0.0,0.0);                               
 | 
					 | 
				
			||||||
        from.x -= 5.0*(mouse.x-0.5);
 | 
					 | 
				
			||||||
        from.y -= 5.0*(mouse.y-0.5);
 | 
					 | 
				
			||||||
               
 | 
					 | 
				
			||||||
               
 | 
					 | 
				
			||||||
	vec3 forward = vec3(0.,0.,1.);   
 | 
					 | 
				
			||||||
	from.x += transverseSpeed*(1.0)*cos(0.01*time3) + 0.001*time3;
 | 
					 | 
				
			||||||
	from.y += transverseSpeed*(1.0)*sin(0.01*time3) +0.001*time3;
 | 
					 | 
				
			||||||
	from.z += 0.003*time3;	
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	dir.xy*=rot_xy;
 | 
					 | 
				
			||||||
	forward.xy *= rot_xy;
 | 
					 | 
				
			||||||
	dir.xz*=rot_xz;
 | 
					 | 
				
			||||||
	forward.xz *= rot_xz;	
 | 
					 | 
				
			||||||
	dir.yz*= rot_yz;
 | 
					 | 
				
			||||||
	forward.yz *= rot_yz;
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	from.xy*=-rot_xy;
 | 
					 | 
				
			||||||
	from.xz*=rot_xz;
 | 
					 | 
				
			||||||
	from.yz*= rot_yz;
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	float zooom = (time2-3311.)*speed;
 | 
					 | 
				
			||||||
	from += forward* zooom;
 | 
					 | 
				
			||||||
	float sampleShift = mod( zooom, stepsize );
 | 
					 | 
				
			||||||
	 
 | 
					 | 
				
			||||||
	float zoffset = -sampleShift;
 | 
					 | 
				
			||||||
	sampleShift /= stepsize;
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	float s=0.24;
 | 
					 | 
				
			||||||
	float s3 = s + stepsize/2.0;
 | 
					 | 
				
			||||||
	vec3 v=vec3(0.);
 | 
					 | 
				
			||||||
	float t3 = 0.0;	
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	vec3 backCol2 = vec3(0.);
 | 
					 | 
				
			||||||
	for (int r=0; r<volsteps; r++) {
 | 
					 | 
				
			||||||
		vec3 p2=from+(s+zoffset)*dir;
 | 
					 | 
				
			||||||
		vec3 p3=from+(s3+zoffset)*dir;
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		p2 = abs(vec3(tile)-mod(p2,vec3(tile*2.)));
 | 
					 | 
				
			||||||
		p3 = abs(vec3(tile)-mod(p3,vec3(tile*2.)));		
 | 
					 | 
				
			||||||
		#ifdef cloud
 | 
					 | 
				
			||||||
		t3 = field(p3);
 | 
					 | 
				
			||||||
		#endif
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		float pa,a=pa=0.;
 | 
					 | 
				
			||||||
		for (int i=0; i<iterations; i++) {
 | 
					 | 
				
			||||||
			p2=abs(p2)/dot(p2,p2)-formuparam;
 | 
					 | 
				
			||||||
			
 | 
					 | 
				
			||||||
			float D = abs(length(p2)-pa);
 | 
					 | 
				
			||||||
			a += i > 7 ? min( 12., D) : D;
 | 
					 | 
				
			||||||
			pa=length(p2);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		a*=a*a;
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		float s1 = s+zoffset;
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		float fade = pow(distfading,max(0.,float(r)-sampleShift));		
 | 
					 | 
				
			||||||
			
 | 
					 | 
				
			||||||
		v+=fade;
 | 
					 | 
				
			||||||
	       	
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		if( r == 0 )
 | 
					 | 
				
			||||||
			fade *= (1. - (sampleShift));
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		if( r == volsteps-1 )
 | 
					 | 
				
			||||||
			fade *= sampleShift;
 | 
					 | 
				
			||||||
		v+=vec3(s1,s1*s1,s1*s1*s1*s1)*a*brightness*fade;
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		backCol2 += mix(.11, 1., v2) * vec3(1.8 * t3 * t3 * t3, 1.4 * t3 * t3, t3) * fade;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		s+=stepsize;
 | 
					 | 
				
			||||||
		s3 += stepsize;		
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
		       
 | 
					 | 
				
			||||||
	v=mix(vec3(length(v)),v,saturation);	
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	vec4 forCol2 = vec4(v*.01,1.);	
 | 
					 | 
				
			||||||
	#ifdef cloud
 | 
					 | 
				
			||||||
	backCol2 *= cloud;
 | 
					 | 
				
			||||||
	#endif	
 | 
					 | 
				
			||||||
	backCol2.b *= 1.8;
 | 
					 | 
				
			||||||
	backCol2.r *= 0.05;	
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	backCol2.b = 0.5*mix(backCol2.g, backCol2.b, 0.8);
 | 
					 | 
				
			||||||
	backCol2.g = 0.0;
 | 
					 | 
				
			||||||
	backCol2.bg = mix(backCol2.gb, backCol2.bg, 0.5*(cos(time3*0.01) + 1.0));	
 | 
					 | 
				
			||||||
	gl_FragColor = forCol2 + vec4(backCol2, 1.0);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,118 +0,0 @@
 | 
				
			|||||||
#ifdef GL_ES
 | 
					 | 
				
			||||||
precision mediump float;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// glslsandbox uniforms
 | 
					 | 
				
			||||||
uniform float time;
 | 
					 | 
				
			||||||
uniform vec2 resolution;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// shadertoy emulation
 | 
					 | 
				
			||||||
#define iTime time * 0.01 + 10.0
 | 
					 | 
				
			||||||
#define iResolution resolution
 | 
					 | 
				
			||||||
#define fragCoord gl_FragCoord
 | 
					 | 
				
			||||||
#define fragColor gl_FragColor
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
float colormap_red(float x) {
 | 
					 | 
				
			||||||
    if (x < 0.0) {
 | 
					 | 
				
			||||||
        return 54.0 / 255.0;
 | 
					 | 
				
			||||||
    } else if (x < 20049.0 / 82979.0) {
 | 
					 | 
				
			||||||
        return (829.79 * x + 54.51) / 255.0;
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
        return 1.0;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
float colormap_green(float x) {
 | 
					 | 
				
			||||||
    if (x < 20049.0 / 82979.0) {
 | 
					 | 
				
			||||||
        return 0.0;
 | 
					 | 
				
			||||||
    } else if (x < 327013.0 / 810990.0) {
 | 
					 | 
				
			||||||
        return (8546482679670.0 / 10875673217.0 * x - 2064961390770.0 / 10875673217.0) / 255.0;
 | 
					 | 
				
			||||||
    } else if (x <= 1.0) {
 | 
					 | 
				
			||||||
        return (103806720.0 / 483977.0 * x + 19607415.0 / 483977.0) / 255.0;
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
        return 1.0;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
float colormap_blue(float x) {
 | 
					 | 
				
			||||||
    if (x < 0.0) {
 | 
					 | 
				
			||||||
        return 54.0 / 255.0;
 | 
					 | 
				
			||||||
    } else if (x < 7249.0 / 82979.0) {
 | 
					 | 
				
			||||||
        return (829.79 * x + 54.51) / 255.0;
 | 
					 | 
				
			||||||
    } else if (x < 20049.0 / 82979.0) {
 | 
					 | 
				
			||||||
        return 127.0 / 255.0;
 | 
					 | 
				
			||||||
    } else if (x < 327013.0 / 810990.0) {
 | 
					 | 
				
			||||||
        return (792.02249341361393720147485376583 * x - 64.364790735602331034989206222672) / 255.0;
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
        return 1.0;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
vec4 colormap(float x) {
 | 
					 | 
				
			||||||
    return vec4(colormap_red(x), colormap_green(x), colormap_blue(x), 1.0);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// https://iquilezles.org/articles/warp
 | 
					 | 
				
			||||||
/*float noise( in vec2 x )
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    vec2 p = floor(x);
 | 
					 | 
				
			||||||
    vec2 f = fract(x);
 | 
					 | 
				
			||||||
    f = f*f*(3.0-2.0*f);
 | 
					 | 
				
			||||||
    float a = textureLod(iChannel0,(p+vec2(0.5,0.5))/256.0,0.0).x;
 | 
					 | 
				
			||||||
	float b = textureLod(iChannel0,(p+vec2(1.5,0.5))/256.0,0.0).x;
 | 
					 | 
				
			||||||
	float c = textureLod(iChannel0,(p+vec2(0.5,1.5))/256.0,0.0).x;
 | 
					 | 
				
			||||||
	float d = textureLod(iChannel0,(p+vec2(1.5,1.5))/256.0,0.0).x;
 | 
					 | 
				
			||||||
    return mix(mix( a, b,f.x), mix( c, d,f.x),f.y);
 | 
					 | 
				
			||||||
}*/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
float rand(vec2 n) { 
 | 
					 | 
				
			||||||
    return fract(sin(dot(n, vec2(12.9898, 4.1414))) * 43758.5453);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
float noise(vec2 p){
 | 
					 | 
				
			||||||
    vec2 ip = floor(p);
 | 
					 | 
				
			||||||
    vec2 u = fract(p);
 | 
					 | 
				
			||||||
    u = u*u*(3.0-2.0*u);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    float res = mix(
 | 
					 | 
				
			||||||
        mix(rand(ip),rand(ip+vec2(1.0,0.0)),u.x),
 | 
					 | 
				
			||||||
        mix(rand(ip+vec2(0.0,1.0)),rand(ip+vec2(1.0,1.0)),u.x),u.y);
 | 
					 | 
				
			||||||
    return res*res;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const mat2 mtx = mat2( 0.80,  0.60, -0.60,  0.80 );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
float fbm( vec2 p )
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    float f = 0.0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    f += 0.500000*noise( p + iTime  ); p = mtx*p*2.02;
 | 
					 | 
				
			||||||
    f += 0.031250*noise( p ); p = mtx*p*2.01;
 | 
					 | 
				
			||||||
    f += 0.250000*noise( p ); p = mtx*p*2.03;
 | 
					 | 
				
			||||||
    f += 0.125000*noise( p ); p = mtx*p*2.01;
 | 
					 | 
				
			||||||
    f += 0.062500*noise( p ); p = mtx*p*2.04;
 | 
					 | 
				
			||||||
    f += 0.015625*noise( p + sin(iTime) );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return f/0.96875;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
float pattern( in vec2 p )
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	return fbm( p + fbm( p + fbm( p ) ) );
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void main()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    vec2 uv = fragCoord.xy/iResolution.x;
 | 
					 | 
				
			||||||
	float shade = pattern(uv);
 | 
					 | 
				
			||||||
    fragColor = vec4(colormap(shade).rgb, shade);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/** SHADERDATA
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	"title": "Base warp fBM",
 | 
					 | 
				
			||||||
	"description": "Noise but Pink",
 | 
					 | 
				
			||||||
	"model": "person"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
@ -1,13 +0,0 @@
 | 
				
			|||||||
#ifdef GL_ES
 | 
					 | 
				
			||||||
precision mediump float;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// glslsandbox uniforms
 | 
					 | 
				
			||||||
uniform float time;
 | 
					 | 
				
			||||||
uniform vec2 resolution;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// shadertoy emulation
 | 
					 | 
				
			||||||
#define iTime time
 | 
					 | 
				
			||||||
#define iResolution resolution
 | 
					 | 
				
			||||||
#define fragCoord gl_FragCoord
 | 
					 | 
				
			||||||
#define fragColor gl_FragColor
 | 
					 | 
				
			||||||
@ -1,208 +0,0 @@
 | 
				
			|||||||
#ifdef GL_ES
 | 
					 | 
				
			||||||
precision highp float;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
uniform float time;
 | 
					 | 
				
			||||||
uniform vec2 resolution;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define CHAR_SIZE vec2(6, 7)
 | 
					 | 
				
			||||||
#define CHAR_SPACING vec2(6, 9)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
vec2 start_pos = vec2(0);
 | 
					 | 
				
			||||||
vec2 print_pos = vec2(0);
 | 
					 | 
				
			||||||
vec2 print_pos_pre_move = vec2(0);
 | 
					 | 
				
			||||||
vec3 text_color = vec3(1);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
Top left pixel is the most significant bit.
 | 
					 | 
				
			||||||
Bottom right pixel is the least significant bit.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 ███  |
 | 
					 | 
				
			||||||
█   █ |
 | 
					 | 
				
			||||||
█   █ |  
 | 
					 | 
				
			||||||
█   █ |
 | 
					 | 
				
			||||||
█████ |
 | 
					 | 
				
			||||||
█   █ |
 | 
					 | 
				
			||||||
█   █ |
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
000000 
 | 
					 | 
				
			||||||
100010
 | 
					 | 
				
			||||||
100010  
 | 
					 | 
				
			||||||
100010
 | 
					 | 
				
			||||||
111110
 | 
					 | 
				
			||||||
100010
 | 
					 | 
				
			||||||
100010
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
011100 (upper 21 bits)
 | 
					 | 
				
			||||||
100010 -> 011100 100010 100010 100 -> 935188
 | 
					 | 
				
			||||||
100010  
 | 
					 | 
				
			||||||
100
 | 
					 | 
				
			||||||
   010 (lower 21 bits)
 | 
					 | 
				
			||||||
111110 -> 010 111110 100010 100010 -> 780450
 | 
					 | 
				
			||||||
100010
 | 
					 | 
				
			||||||
100010
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
vec2(935188.0,780450.0)
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//Text coloring
 | 
					 | 
				
			||||||
#define HEX(i) text_color = mod(vec3(i / 65536,i / 256,i),vec3(256.0))/255.0;
 | 
					 | 
				
			||||||
#define RGB(r,g,b) text_color = vec3(r,g,b);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define STRWIDTH(c) (c * CHAR_SPACING.x)
 | 
					 | 
				
			||||||
#define STRHEIGHT(c) (c * CHAR_SPACING.y)
 | 
					 | 
				
			||||||
#define BEGIN_TEXT(x,y) print_pos = floor(vec2(x,y)); start_pos = floor(vec2(x,y));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//Automatically generated from the sprite sheet here: http://uzebox.org/wiki/index.php?title=File:Font6x8.png
 | 
					 | 
				
			||||||
#define _ col+=char(vec2(0.0,0.0),uv);
 | 
					 | 
				
			||||||
#define _spc col+=char(vec2(0.0,0.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _exc col+=char(vec2(276705.0,32776.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _quo col+=char(vec2(1797408.0,0.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _hsh col+=char(vec2(10738.0,1134484.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _dol col+=char(vec2(538883.0,19976.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _pct col+=char(vec2(1664033.0,68006.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _amp col+=char(vec2(545090.0,174362.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _apo col+=char(vec2(798848.0,0.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _lbr col+=char(vec2(270466.0,66568.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _rbr col+=char(vec2(528449.0,33296.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _ast col+=char(vec2(10471.0,1688832.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _crs col+=char(vec2(4167.0,1606144.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _per col+=char(vec2(0.0,1560.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _dsh col+=char(vec2(7.0,1572864.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _com col+=char(vec2(0.0,1544.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _lsl col+=char(vec2(1057.0,67584.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _0 col+=char(vec2(935221.0,731292.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _1 col+=char(vec2(274497.0,33308.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _2 col+=char(vec2(934929.0,1116222.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _3 col+=char(vec2(934931.0,1058972.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _4 col+=char(vec2(137380.0,1302788.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _5 col+=char(vec2(2048263.0,1058972.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _6 col+=char(vec2(401671.0,1190044.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _7 col+=char(vec2(2032673.0,66576.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _8 col+=char(vec2(935187.0,1190044.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _9 col+=char(vec2(935187.0,1581336.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _col col+=char(vec2(195.0,1560.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _scl col+=char(vec2(195.0,1544.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _les col+=char(vec2(135300.0,66052.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _equ col+=char(vec2(496.0,3968.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _grt col+=char(vec2(528416.0,541200.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _que col+=char(vec2(934929.0,1081352.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _ats col+=char(vec2(935285.0,714780.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _A col+=char(vec2(935188.0,780450.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _B col+=char(vec2(1983767.0,1190076.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _C col+=char(vec2(935172.0,133276.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _D col+=char(vec2(1983764.0,665788.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _E col+=char(vec2(2048263.0,1181758.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _F col+=char(vec2(2048263.0,1181728.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _G col+=char(vec2(935173.0,1714334.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _H col+=char(vec2(1131799.0,1714338.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _I col+=char(vec2(921665.0,33308.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _J col+=char(vec2(66576.0,665756.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _K col+=char(vec2(1132870.0,166178.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _L col+=char(vec2(1065220.0,133182.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _M col+=char(vec2(1142100.0,665762.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _N col+=char(vec2(1140052.0,1714338.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _O col+=char(vec2(935188.0,665756.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _P col+=char(vec2(1983767.0,1181728.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _Q col+=char(vec2(935188.0,698650.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _R col+=char(vec2(1983767.0,1198242.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _S col+=char(vec2(935171.0,1058972.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _T col+=char(vec2(2035777.0,33288.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _U col+=char(vec2(1131796.0,665756.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _V col+=char(vec2(1131796.0,664840.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _W col+=char(vec2(1131861.0,699028.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _X col+=char(vec2(1131681.0,84130.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _Y col+=char(vec2(1131794.0,1081864.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _Z col+=char(vec2(1968194.0,133180.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _lsb col+=char(vec2(925826.0,66588.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _rsl col+=char(vec2(16513.0,16512.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _rsb col+=char(vec2(919584.0,1065244.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _pow col+=char(vec2(272656.0,0.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _usc col+=char(vec2(0.0,62.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _a col+=char(vec2(224.0,649374.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _b col+=char(vec2(1065444.0,665788.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _c col+=char(vec2(228.0,657564.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _d col+=char(vec2(66804.0,665758.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _e col+=char(vec2(228.0,772124.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _f col+=char(vec2(401543.0,1115152.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _g col+=char(vec2(244.0,665474.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _h col+=char(vec2(1065444.0,665762.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _i col+=char(vec2(262209.0,33292.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _j col+=char(vec2(131168.0,1066252.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _k col+=char(vec2(1065253.0,199204.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _l col+=char(vec2(266305.0,33292.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _m col+=char(vec2(421.0,698530.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _n col+=char(vec2(452.0,1198372.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _o col+=char(vec2(228.0,665756.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _p col+=char(vec2(484.0,667424.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _q col+=char(vec2(244.0,665474.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _r col+=char(vec2(354.0,590904.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _s col+=char(vec2(228.0,114844.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _t col+=char(vec2(8674.0,66824.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _u col+=char(vec2(292.0,1198868.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _v col+=char(vec2(276.0,664840.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _w col+=char(vec2(276.0,700308.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _x col+=char(vec2(292.0,1149220.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _y col+=char(vec2(292.0,1163824.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _z col+=char(vec2(480.0,1148988.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _lpa col+=char(vec2(401542.0,66572.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _bar col+=char(vec2(266304.0,33288.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _rpa col+=char(vec2(788512.0,1589528.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _tid col+=char(vec2(675840.0,0.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _lar col+=char(vec2(8387.0,1147904.0),uv)*text_color;
 | 
					 | 
				
			||||||
#define _nl print_pos = start_pos - vec2(0,CHAR_SPACING.y);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//Extracts bit b from the given number.
 | 
					 | 
				
			||||||
float extract_bit(float n, float b)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	b = clamp(b,-1.0,22.0);
 | 
					 | 
				
			||||||
	return floor(mod(floor(n / pow(2.0,floor(b))),2.0));   
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//Returns the pixel at uv in the given bit-packed sprite.
 | 
					 | 
				
			||||||
float sprite(vec2 spr, vec2 size, vec2 uv)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	uv = floor(uv);
 | 
					 | 
				
			||||||
	float bit = (size.x-uv.x-1.0) + uv.y * size.x;  
 | 
					 | 
				
			||||||
	bool bounds = all(greaterThanEqual(uv,vec2(0)))&& all(lessThan(uv,size)); 
 | 
					 | 
				
			||||||
	return bounds ? extract_bit(spr.x, bit - 21.0) + extract_bit(spr.y, bit) : 0.0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//Prints a character and moves the print position forward by 1 character width.
 | 
					 | 
				
			||||||
vec3 char(vec2 ch, vec2 uv)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	float px = sprite(ch, CHAR_SIZE, uv - print_pos);
 | 
					 | 
				
			||||||
	print_pos.x += CHAR_SPACING.x;
 | 
					 | 
				
			||||||
	print_pos.y += sin(4.*print_pos.x-time*10.);
 | 
					 | 
				
			||||||
	return vec3(px);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
vec3 Text(vec2 uv)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    	vec3 col = vec3(0.0);
 | 
					 | 
				
			||||||
    	
 | 
					 | 
				
			||||||
    	vec2 center_pos = vec2(resolution.x/2.0 - STRWIDTH(20.0)/2.0,resolution.y/2.0 - STRHEIGHT(1.0)/2.0);
 | 
					 | 
				
			||||||
       	
 | 
					 | 
				
			||||||
    	BEGIN_TEXT(center_pos.x,center_pos.y)
 | 
					 | 
				
			||||||
	HEX(0x00ffFF) _ _ _w _a _t _e _r _ _;
 | 
					 | 
				
			||||||
	BEGIN_TEXT(resolution.x/2.0-STRWIDTH(11.0)/2.0,resolution.y/2.0)
 | 
					 | 
				
			||||||
	print_pos += vec2(cos(time)*96.,sin(time)*96.);
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	// RGB(1,0,0) _M RGB(1,.5,0)_o RGB(1,1,0)_v RGB(0,1,0)_i RGB(0,.5,1)_n RGB(0.5,0,1)_g _ RGB(1,0,0)_T RGB(1,.5,0)_e RGB(1,1,0)_x RGB(0,1,0)_t
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    	return col;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void main( void )
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	vec2 uv = gl_FragCoord.xy;
 | 
					 | 
				
			||||||
	vec2 duv = floor(gl_FragCoord.xy);
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
	vec3 pixel = Text(duv);
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
	vec3 col = pixel*0.9+0.1;
 | 
					 | 
				
			||||||
	col *= (1.-distance(mod(uv,vec2(1.0)),vec2(0.65)))*1.2;
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	gl_FragColor = vec4(vec3(col), 1.0);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,108 +0,0 @@
 | 
				
			|||||||
#ifdef GL_ES
 | 
					 | 
				
			||||||
precision mediump float;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
uniform float time;
 | 
					 | 
				
			||||||
uniform vec2 resolution;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define iTime time * 0.05 + 50.0
 | 
					 | 
				
			||||||
#define iResolution resolution
 | 
					 | 
				
			||||||
#define fragCoord gl_FragCoord
 | 
					 | 
				
			||||||
#define fragColor gl_FragColor
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
float colormap_red(float x) {
 | 
					 | 
				
			||||||
    if (x < 0.0) {
 | 
					 | 
				
			||||||
        return 54.0 / 255.0;
 | 
					 | 
				
			||||||
    } else if (x < 20049.0 / 82979.0) {
 | 
					 | 
				
			||||||
        return (829.79 * x + 54.51) / 255.0;
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
        return 1.0;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
float colormap_green(float x) {
 | 
					 | 
				
			||||||
    if (x < 20049.0 / 82979.0) {
 | 
					 | 
				
			||||||
        return 0.0;
 | 
					 | 
				
			||||||
    } else if (x < 327013.0 / 810990.0) {
 | 
					 | 
				
			||||||
        return (8546482679670.0 / 10875673217.0 * x - 2064961390770.0 / 10875673217.0) / 255.0;
 | 
					 | 
				
			||||||
    } else if (x <= 1.0) {
 | 
					 | 
				
			||||||
        return (103806720.0 / 483977.0 * x + 19607415.0 / 483977.0) / 255.0;
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
        return 1.0;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
float colormap_blue(float x) {
 | 
					 | 
				
			||||||
    if (x < 0.0) {
 | 
					 | 
				
			||||||
        return 54.0 / 255.0;
 | 
					 | 
				
			||||||
    } else if (x < 7249.0 / 82979.0) {
 | 
					 | 
				
			||||||
        return (829.79 * x + 54.51) / 255.0;
 | 
					 | 
				
			||||||
    } else if (x < 20049.0 / 82979.0) {
 | 
					 | 
				
			||||||
        return 127.0 / 255.0;
 | 
					 | 
				
			||||||
    } else if (x < 327013.0 / 810990.0) {
 | 
					 | 
				
			||||||
        return (792.02249341361393720147485376583 * x - 64.364790735602331034989206222672) / 255.0;
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
        return 1.0;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
vec4 colormap(float x) {
 | 
					 | 
				
			||||||
    return vec4(colormap_red(x), colormap_green(x), colormap_blue(x), 1.0);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// https://iquilezles.org/articles/warp
 | 
					 | 
				
			||||||
/*float noise( in vec2 x )
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    vec2 p = floor(x);
 | 
					 | 
				
			||||||
    vec2 f = fract(x);
 | 
					 | 
				
			||||||
    f = f*f*(3.0-2.0*f);
 | 
					 | 
				
			||||||
    float a = textureLod(iChannel0,(p+vec2(0.5,0.5))/256.0,0.0).x;
 | 
					 | 
				
			||||||
	float b = textureLod(iChannel0,(p+vec2(1.5,0.5))/256.0,0.0).x;
 | 
					 | 
				
			||||||
	float c = textureLod(iChannel0,(p+vec2(0.5,1.5))/256.0,0.0).x;
 | 
					 | 
				
			||||||
	float d = textureLod(iChannel0,(p+vec2(1.5,1.5))/256.0,0.0).x;
 | 
					 | 
				
			||||||
    return mix(mix( a, b,f.x), mix( c, d,f.x),f.y);
 | 
					 | 
				
			||||||
}*/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
float rand(vec2 n) { 
 | 
					 | 
				
			||||||
    return fract(sin(dot(n, vec2(12.9898, 4.1414))) * 43758.5453);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
float noise(vec2 p){
 | 
					 | 
				
			||||||
    vec2 ip = floor(p);
 | 
					 | 
				
			||||||
    vec2 u = fract(p);
 | 
					 | 
				
			||||||
    u = u*u*(3.0-2.0*u);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    float res = mix(
 | 
					 | 
				
			||||||
        mix(rand(ip),rand(ip+vec2(1.0,0.0)),u.x),
 | 
					 | 
				
			||||||
        mix(rand(ip+vec2(0.0,1.0)),rand(ip+vec2(1.0,1.0)),u.x),u.y);
 | 
					 | 
				
			||||||
    return res*res;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const mat2 mtx = mat2( 0.80,  0.60, -0.60,  0.80 );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
float fbm( vec2 p )
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    float f = 0.0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    f += 0.500000*noise( p + iTime  ); p = mtx*p*2.02;
 | 
					 | 
				
			||||||
    f += 0.031250*noise( p ); p = mtx*p*2.01;
 | 
					 | 
				
			||||||
    f += 0.250000*noise( p ); p = mtx*p*2.03;
 | 
					 | 
				
			||||||
    f += 0.125000*noise( p ); p = mtx*p*2.01;
 | 
					 | 
				
			||||||
    f += 0.062500*noise( p ); p = mtx*p*2.04;
 | 
					 | 
				
			||||||
    f += 0.015625*noise( p + sin(iTime) );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return f/0.96875;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
float pattern( in vec2 p )
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	return fbm( p + fbm( p + fbm( p ) ) );
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void main()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    vec2 uv = fragCoord.xy/iResolution.x;
 | 
					 | 
				
			||||||
	float shade = pattern(uv);
 | 
					 | 
				
			||||||
    fragColor = vec4(colormap(shade).rgb, shade);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										95
									
								
								user-modules/desktop/custom/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										95
									
								
								user-modules/desktop/custom/default.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,95 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  lib,
 | 
				
			||||||
 | 
					  pkgs,
 | 
				
			||||||
 | 
					  config,
 | 
				
			||||||
 | 
					  ...
 | 
				
			||||||
 | 
					}:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					with lib;
 | 
				
			||||||
 | 
					let
 | 
				
			||||||
 | 
					  cfg = config.modules.desktop;
 | 
				
			||||||
 | 
					in
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  imports = [
 | 
				
			||||||
 | 
					    # Import desktop environment modules
 | 
				
			||||||
 | 
					    ./background/glpaper/default.nix
 | 
				
			||||||
 | 
					    ./bar/waybar.nix
 | 
				
			||||||
 | 
					    ./lock-screen/waylock.nix
 | 
				
			||||||
 | 
					    ./window-manager/i3.nix
 | 
				
			||||||
 | 
					    ./window-manager/river.nix
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  options.modules.desktop = {
 | 
				
			||||||
 | 
					    wayland = mkEnableOption "wayland";
 | 
				
			||||||
 | 
					    # TODO: Remove, not needed with session/display manager
 | 
				
			||||||
 | 
					    initScript = mkOption {
 | 
				
			||||||
 | 
					      type = types.lines;
 | 
				
			||||||
 | 
					      default = "${pkgs.bash}/bin/bash";
 | 
				
			||||||
 | 
					      description = "Bash script to execute after logging in.";
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    # TODO: Find a nicer way to do this as this is also executed on startup
 | 
				
			||||||
 | 
					    reloadScript = mkOption {
 | 
				
			||||||
 | 
					      type = types.lines;
 | 
				
			||||||
 | 
					      default = "";
 | 
				
			||||||
 | 
					      description = "Shell script to execute after reload/rebuild.";
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    decorations = mkOption {
 | 
				
			||||||
 | 
					      type = types.nullOr (
 | 
				
			||||||
 | 
					        types.enum [
 | 
				
			||||||
 | 
					          "csd"
 | 
				
			||||||
 | 
					          "ssd"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					      default = null;
 | 
				
			||||||
 | 
					      description = "Window decorations to use.";
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  config =
 | 
				
			||||||
 | 
					    lib.recursiveUpdate
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        # Ensure desktop related systemd services (xdg) have access to session variables.
 | 
				
			||||||
 | 
					        systemd.user.sessionVariables = config.home.sessionVariables;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        home.packages = optionals cfg.wayland (
 | 
				
			||||||
 | 
					          with pkgs;
 | 
				
			||||||
 | 
					          [
 | 
				
			||||||
 | 
					            wl-clipboard
 | 
				
			||||||
 | 
					            wtype
 | 
				
			||||||
 | 
					            grim
 | 
				
			||||||
 | 
					            slurp
 | 
				
			||||||
 | 
					          ]
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        home.activation = {
 | 
				
			||||||
 | 
					          customReloadScript = lib.hm.dag.entryAfter [ "writeBoundary" ] (
 | 
				
			||||||
 | 
					            ''
 | 
				
			||||||
 | 
					              #!${pkgs.bash}/bin/bash
 | 
				
			||||||
 | 
					            ''
 | 
				
			||||||
 | 
					            + cfg.reloadScript
 | 
				
			||||||
 | 
					          );
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        home.file.".initrc" = {
 | 
				
			||||||
 | 
					          enable = true;
 | 
				
			||||||
 | 
					          executable = true;
 | 
				
			||||||
 | 
					          text =
 | 
				
			||||||
 | 
					            ''
 | 
				
			||||||
 | 
					              #!${pkgs.bash}/bin/bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            ''
 | 
				
			||||||
 | 
					            + cfg.initScript;
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      (
 | 
				
			||||||
 | 
					        # TODO: Move to dedicated module within desktop or maybe theming?
 | 
				
			||||||
 | 
					        if cfg.decorations == null then
 | 
				
			||||||
 | 
					          { }
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            csd = { };
 | 
				
			||||||
 | 
					            ssd = { };
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					          ."${cfg.decorations}"
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										25
									
								
								user-modules/desktop/custom/lock-screen/waylock.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								user-modules/desktop/custom/lock-screen/waylock.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  lib,
 | 
				
			||||||
 | 
					  pkgs,
 | 
				
			||||||
 | 
					  config,
 | 
				
			||||||
 | 
					  ...
 | 
				
			||||||
 | 
					}:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					with lib;
 | 
				
			||||||
 | 
					let
 | 
				
			||||||
 | 
					  cfg = config.modules.waylock;
 | 
				
			||||||
 | 
					in
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  options.modules.waylock = {
 | 
				
			||||||
 | 
					    enable = mkEnableOption "waylock";
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  config = mkIf cfg.enable {
 | 
				
			||||||
 | 
					    home.packages = (with pkgs; [ waylock ]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Systemwide configuration
 | 
				
			||||||
 | 
					    systemwide = {
 | 
				
			||||||
 | 
					      security.pam.services.waylock = { };
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										45
									
								
								user-modules/desktop/custom/window-manager/i3.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								user-modules/desktop/custom/window-manager/i3.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,45 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  config,
 | 
				
			||||||
 | 
					  lib,
 | 
				
			||||||
 | 
					  pkgs,
 | 
				
			||||||
 | 
					  ...
 | 
				
			||||||
 | 
					}:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					let
 | 
				
			||||||
 | 
					  cfg = config.modules.i3;
 | 
				
			||||||
 | 
					in
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  options.modules.i3.enable = lib.mkEnableOption "i3";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  config = lib.mkIf cfg.enable {
 | 
				
			||||||
 | 
					    # Set desktop type to x11
 | 
				
			||||||
 | 
					    # modules.desktop.x11 = true;
 | 
				
			||||||
 | 
					    modules.rofi.enable = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    modules.desktop.initScript = ''
 | 
				
			||||||
 | 
					      i3
 | 
				
			||||||
 | 
					    '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    xsession.windowManager.i3 = {
 | 
				
			||||||
 | 
					      enable = true;
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Systemwide configuration
 | 
				
			||||||
 | 
					    systemwide = {
 | 
				
			||||||
 | 
					      services.xserver = {
 | 
				
			||||||
 | 
					        layout = "us";
 | 
				
			||||||
 | 
					        xkbVariant = "";
 | 
				
			||||||
 | 
					        enable = true;
 | 
				
			||||||
 | 
					        windowManager.i3.enable = true;
 | 
				
			||||||
 | 
					        desktopManager = {
 | 
				
			||||||
 | 
					          xterm.enable = true;
 | 
				
			||||||
 | 
					          xfce = {
 | 
				
			||||||
 | 
					            enable = true;
 | 
				
			||||||
 | 
					            # noDesktop = false;
 | 
				
			||||||
 | 
					            # enableXfwm = false;
 | 
				
			||||||
 | 
					          };
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -36,6 +36,11 @@ in
 | 
				
			|||||||
      river
 | 
					      river
 | 
				
			||||||
    '';
 | 
					    '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Systemwide configuration
 | 
				
			||||||
 | 
					    systemwide = {
 | 
				
			||||||
 | 
					      programs.river.enable = true;
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # TODO: Fix this
 | 
					    # TODO: Fix this
 | 
				
			||||||
    # modules.desktop.reloadScript = ''
 | 
					    # modules.desktop.reloadScript = ''
 | 
				
			||||||
    #   ${pkgs.river}/bin/riverctl background-color 0x${config.theming.colors.bg}
 | 
					    #   ${pkgs.river}/bin/riverctl background-color 0x${config.theming.colors.bg}
 | 
				
			||||||
@ -21,19 +21,33 @@ in
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  options.modules.desktop = {
 | 
					  options.modules.desktop = {
 | 
				
			||||||
    wayland = mkEnableOption "wayland";
 | 
					    wayland = mkEnableOption "wayland";
 | 
				
			||||||
 | 
					    # TODO: Remove, not needed with session/display manager
 | 
				
			||||||
    initScript = mkOption {
 | 
					    initScript = mkOption {
 | 
				
			||||||
      type = types.lines;
 | 
					      type = types.lines;
 | 
				
			||||||
      default = "${pkgs.bash}/bin/bash";
 | 
					      default = "${pkgs.bash}/bin/bash";
 | 
				
			||||||
      description = "Bash script to execute after logging in.";
 | 
					      description = "Bash script to execute after logging in.";
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					    # TODO: Find a nicer way to do this as this is also executed on startup
 | 
				
			||||||
    reloadScript = mkOption {
 | 
					    reloadScript = mkOption {
 | 
				
			||||||
      type = types.lines;
 | 
					      type = types.lines;
 | 
				
			||||||
      default = "";
 | 
					      default = "";
 | 
				
			||||||
      description = "Shell script to execute after reload/rebuild.";
 | 
					      description = "Shell script to execute after reload/rebuild.";
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					    decorations = mkOption {
 | 
				
			||||||
 | 
					      type = types.nullOr (
 | 
				
			||||||
 | 
					        types.enum [
 | 
				
			||||||
 | 
					          "csd"
 | 
				
			||||||
 | 
					          "ssd"
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					      default = null;
 | 
				
			||||||
 | 
					      description = "Window decorations to use.";
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  config = {
 | 
					  config =
 | 
				
			||||||
 | 
					    lib.recursiveUpdate
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
        # Ensure desktop related systemd services (xdg) have access to session variables.
 | 
					        # Ensure desktop related systemd services (xdg) have access to session variables.
 | 
				
			||||||
        systemd.user.sessionVariables = config.home.sessionVariables;
 | 
					        systemd.user.sessionVariables = config.home.sessionVariables;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -66,5 +80,16 @@ in
 | 
				
			|||||||
            ''
 | 
					            ''
 | 
				
			||||||
            + cfg.initScript;
 | 
					            + cfg.initScript;
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
  };
 | 
					      }
 | 
				
			||||||
 | 
					      (
 | 
				
			||||||
 | 
					        # TODO: Move to dedicated module within desktop or maybe theming?
 | 
				
			||||||
 | 
					        if cfg.decorations == null then
 | 
				
			||||||
 | 
					          { }
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            csd = { };
 | 
				
			||||||
 | 
					            ssd = { };
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					          ."${cfg.decorations}"
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,20 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  lib,
 | 
					 | 
				
			||||||
  pkgs,
 | 
					 | 
				
			||||||
  config,
 | 
					 | 
				
			||||||
  ...
 | 
					 | 
				
			||||||
}:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
with lib;
 | 
					 | 
				
			||||||
let
 | 
					 | 
				
			||||||
  cfg = config.modules.waylock;
 | 
					 | 
				
			||||||
in
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  options.modules.waylock = {
 | 
					 | 
				
			||||||
    enable = mkEnableOption "waylock";
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  config = {
 | 
					 | 
				
			||||||
    home.packages = mkIf cfg.enable (with pkgs; [ waylock ]);
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,27 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  config,
 | 
					 | 
				
			||||||
  lib,
 | 
					 | 
				
			||||||
  pkgs,
 | 
					 | 
				
			||||||
  ...
 | 
					 | 
				
			||||||
}:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
let
 | 
					 | 
				
			||||||
  cfg = config.modules.i3;
 | 
					 | 
				
			||||||
in
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  options.modules.i3.enable = lib.mkEnableOption "i3";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  config = lib.mkIf cfg.enable {
 | 
					 | 
				
			||||||
    # Set desktop type to x11
 | 
					 | 
				
			||||||
    # modules.desktop.x11 = true;
 | 
					 | 
				
			||||||
    modules.rofi.enable = true;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    modules.desktop.initScript = ''
 | 
					 | 
				
			||||||
      i3
 | 
					 | 
				
			||||||
    '';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    xsession.windowManager.i3 = {
 | 
					 | 
				
			||||||
      enable = true;
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -37,5 +37,11 @@ in
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    # Neovim configuration
 | 
					    # Neovim configuration
 | 
				
			||||||
    programs.nixvim = { };
 | 
					    programs.nixvim = { };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Systemwide configuration
 | 
				
			||||||
 | 
					    systemwide = {
 | 
				
			||||||
 | 
					      virtualisation.docker.enable = true;
 | 
				
			||||||
 | 
					      machine.sudo-groups = [ "docker" ];
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -11,5 +11,23 @@ with lib;
 | 
				
			|||||||
    enable = mkEnableOption "steam";
 | 
					    enable = mkEnableOption "steam";
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # The rest of the configuration is in a systemwide module
 | 
					  config = mkIf config.modules.steam.enable {
 | 
				
			||||||
 | 
					    # Systemwide configuration
 | 
				
			||||||
 | 
					    systemwide = {
 | 
				
			||||||
 | 
					      modules.unfree.allowedPackages = [
 | 
				
			||||||
 | 
					        "steam"
 | 
				
			||||||
 | 
					        "steam-original"
 | 
				
			||||||
 | 
					        "steam-unwrapped"
 | 
				
			||||||
 | 
					      ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      programs.steam.enable = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Make steam create desktop entries in a subfolder
 | 
				
			||||||
 | 
					      programs.steam.package = pkgs.steam.override {
 | 
				
			||||||
 | 
					        extraBwrapArgs = [
 | 
				
			||||||
 | 
					          "--bind $HOME/.local/share/applications/Steam $HOME/.local/share/applications"
 | 
				
			||||||
 | 
					        ];
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -19,5 +19,12 @@ in
 | 
				
			|||||||
    home.packages = with pkgs; [
 | 
					    home.packages = with pkgs; [
 | 
				
			||||||
      seahorse
 | 
					      seahorse
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Systemwide configuration
 | 
				
			||||||
 | 
					    systemwide = {
 | 
				
			||||||
 | 
					      services.gnome.gnome-keyring = {
 | 
				
			||||||
 | 
					        enable = true;
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,13 +1,10 @@
 | 
				
			|||||||
{ ... }:
 | 
					{ lib, ... }:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					with lib;
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  imports = [
 | 
					  options.systemwide = mkOption {
 | 
				
			||||||
    # Import systemwide configuration files.
 | 
					    type = types.attrsOf types.anything;
 | 
				
			||||||
    ./docker.nix
 | 
					    default = { };
 | 
				
			||||||
    ./i3.nix
 | 
					    description = "Systemwide configuration required for user-specific settings.";
 | 
				
			||||||
    ./keyring.nix
 | 
					  };
 | 
				
			||||||
    ./river.nix
 | 
					 | 
				
			||||||
    ./steam.nix
 | 
					 | 
				
			||||||
    ./waylock.nix
 | 
					 | 
				
			||||||
  ];
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,17 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  lib,
 | 
					 | 
				
			||||||
  config,
 | 
					 | 
				
			||||||
  pkgs,
 | 
					 | 
				
			||||||
  ...
 | 
					 | 
				
			||||||
}:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
with lib;
 | 
					 | 
				
			||||||
let
 | 
					 | 
				
			||||||
  enabled = any (user: user.modules.docker.enable) (attrValues config.home-manager.users);
 | 
					 | 
				
			||||||
in
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  config = mkIf enabled {
 | 
					 | 
				
			||||||
    virtualisation.docker.enable = true;
 | 
					 | 
				
			||||||
    machine.sudo-groups = [ "docker" ];
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,30 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  lib,
 | 
					 | 
				
			||||||
  config,
 | 
					 | 
				
			||||||
  pkgs,
 | 
					 | 
				
			||||||
  ...
 | 
					 | 
				
			||||||
}:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
with lib;
 | 
					 | 
				
			||||||
let
 | 
					 | 
				
			||||||
  enabled = any (user: user.modules.i3.enable) (attrValues config.home-manager.users);
 | 
					 | 
				
			||||||
in
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  config = mkIf enabled {
 | 
					 | 
				
			||||||
    modules.tuigreet.enable = mkForce false;
 | 
					 | 
				
			||||||
    services.xserver = {
 | 
					 | 
				
			||||||
      layout = "us";
 | 
					 | 
				
			||||||
      xkbVariant = "";
 | 
					 | 
				
			||||||
      enable = true;
 | 
					 | 
				
			||||||
      windowManager.i3.enable = true;
 | 
					 | 
				
			||||||
      desktopManager = {
 | 
					 | 
				
			||||||
        xterm.enable = true;
 | 
					 | 
				
			||||||
        xfce = {
 | 
					 | 
				
			||||||
          enable = true;
 | 
					 | 
				
			||||||
          # noDesktop = false;
 | 
					 | 
				
			||||||
          # enableXfwm = false;
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
      };
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,18 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  lib,
 | 
					 | 
				
			||||||
  config,
 | 
					 | 
				
			||||||
  pkgs,
 | 
					 | 
				
			||||||
  ...
 | 
					 | 
				
			||||||
}:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
with lib;
 | 
					 | 
				
			||||||
let
 | 
					 | 
				
			||||||
  enabled = any (user: user.modules.keyring.enable) (attrValues config.home-manager.users);
 | 
					 | 
				
			||||||
in
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  config = mkIf enabled {
 | 
					 | 
				
			||||||
    services.gnome.gnome-keyring = {
 | 
					 | 
				
			||||||
      enable = true;
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,14 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  lib,
 | 
					 | 
				
			||||||
  config,
 | 
					 | 
				
			||||||
  pkgs,
 | 
					 | 
				
			||||||
  ...
 | 
					 | 
				
			||||||
}:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
with lib;
 | 
					 | 
				
			||||||
let
 | 
					 | 
				
			||||||
  enabled = any (user: user.modules.river.enable) (attrValues config.home-manager.users);
 | 
					 | 
				
			||||||
in
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  config = mkIf enabled { programs.river.enable = true; };
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,29 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  lib,
 | 
					 | 
				
			||||||
  config,
 | 
					 | 
				
			||||||
  pkgs,
 | 
					 | 
				
			||||||
  ...
 | 
					 | 
				
			||||||
}:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
with lib;
 | 
					 | 
				
			||||||
let
 | 
					 | 
				
			||||||
  enabled = any (user: user.modules.steam.enable) (attrValues config.home-manager.users);
 | 
					 | 
				
			||||||
in
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  config = mkIf enabled {
 | 
					 | 
				
			||||||
    modules.unfree.allowedPackages = [
 | 
					 | 
				
			||||||
      "steam"
 | 
					 | 
				
			||||||
      "steam-original"
 | 
					 | 
				
			||||||
      "steam-unwrapped"
 | 
					 | 
				
			||||||
    ];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    programs.steam.enable = true;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # Make steam create desktop entries in a subfolder
 | 
					 | 
				
			||||||
    programs.steam.package = pkgs.steam.override {
 | 
					 | 
				
			||||||
      extraBwrapArgs = [
 | 
					 | 
				
			||||||
        "--bind $HOME/.local/share/applications/Steam $HOME/.local/share/applications"
 | 
					 | 
				
			||||||
      ];
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,14 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  lib,
 | 
					 | 
				
			||||||
  config,
 | 
					 | 
				
			||||||
  pkgs,
 | 
					 | 
				
			||||||
  ...
 | 
					 | 
				
			||||||
}:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
with lib;
 | 
					 | 
				
			||||||
let
 | 
					 | 
				
			||||||
  enabled = any (user: user.modules.waylock.enable) (attrValues config.home-manager.users);
 | 
					 | 
				
			||||||
in
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  config = mkIf enabled { security.pam.services.waylock = { }; };
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -119,12 +119,6 @@ in
 | 
				
			|||||||
        description = "Base 16 color scheme to use for styling. See stylix documentation for more information.";
 | 
					        description = "Base 16 color scheme to use for styling. See stylix documentation for more information.";
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      clientSideDecorations = mkOption {
 | 
					 | 
				
			||||||
        type = types.bool;
 | 
					 | 
				
			||||||
        default = false;
 | 
					 | 
				
			||||||
        description = "Whether to enable client side decorations for windows.";
 | 
					 | 
				
			||||||
      };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      schemeColors = mkOption {
 | 
					      schemeColors = mkOption {
 | 
				
			||||||
        type = types.attrsOf types.anything;
 | 
					        type = types.attrsOf types.anything;
 | 
				
			||||||
        default = config.lib.stylix.colors;
 | 
					        default = config.lib.stylix.colors;
 | 
				
			||||||
@ -279,19 +273,16 @@ in
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    # Configure gtk theme
 | 
					    # Configure gtk theme
 | 
				
			||||||
    gtk =
 | 
					    gtk =
 | 
				
			||||||
      let
 | 
					      # disableCSD = ''
 | 
				
			||||||
        disableCSD = ''
 | 
					      #   headerbar.default-decoration {
 | 
				
			||||||
          headerbar.default-decoration {
 | 
					      #     margin-bottom: 50px;
 | 
				
			||||||
            margin-bottom: 50px;
 | 
					      #     margin-top: -100px;
 | 
				
			||||||
            margin-top: -100px;
 | 
					      #   }
 | 
				
			||||||
          }
 | 
					      #   window.csd,
 | 
				
			||||||
 | 
					      #   window.csd decoration {
 | 
				
			||||||
          window.csd,
 | 
					      #     box-shadow: none;
 | 
				
			||||||
          window.csd decoration {
 | 
					      #   }
 | 
				
			||||||
            box-shadow: none;
 | 
					      # '';
 | 
				
			||||||
          }
 | 
					 | 
				
			||||||
        '';
 | 
					 | 
				
			||||||
      in
 | 
					 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        enable = true;
 | 
					        enable = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -300,8 +291,6 @@ in
 | 
				
			|||||||
          package = pkgs.gnome-themes-extra;
 | 
					          package = pkgs.gnome-themes-extra;
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        gtk3.extraCss = mkIf (!cfg.clientSideDecorations) disableCSD;
 | 
					 | 
				
			||||||
        gtk4.extraCss = mkIf (!cfg.clientSideDecorations) disableCSD;
 | 
					 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # TODO: This should just straight up not be here
 | 
					    # TODO: This should just straight up not be here
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user