let's hope this doesn't break everything :3
This commit is contained in:
parent
608f093290
commit
2f85fb1b3b
21 changed files with 176 additions and 224 deletions
25
modules/applications/default.nix
Normal file
25
modules/applications/default.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
let
|
||||
cfg = config.modules.apps;
|
||||
in
|
||||
{
|
||||
options.modules.apps = {
|
||||
enable = lib.mkEnableOption "enable desktop applications";
|
||||
};
|
||||
|
||||
imports = [
|
||||
./firefox.nix
|
||||
./git.nix
|
||||
./kitty.nix
|
||||
./zsh.nix
|
||||
];
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
modules.apps = {
|
||||
firefox.enable = true;
|
||||
git.enable = true;
|
||||
kitty.enable = true;
|
||||
zsh.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
17
modules/applications/firefox.nix
Normal file
17
modules/applications/firefox.nix
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
let
|
||||
cfg = config.modules.apps.firefox;
|
||||
in
|
||||
{
|
||||
options.modules.apps.firefox = {
|
||||
enable = lib.mkEnableOption "enable firefox";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.firefox = {
|
||||
enable = true;
|
||||
# TODO: add some default firefox settings
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
34
modules/applications/git.nix
Normal file
34
modules/applications/git.nix
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
let
|
||||
cfg = config.modules.apps.git;
|
||||
in
|
||||
{
|
||||
options.modules.apps.git = {
|
||||
enable = lib.mkEnableOption "enable git";
|
||||
name = lib.mkOption {
|
||||
example = "Jill Doe";
|
||||
description = "the git user Name";
|
||||
type = lib.types.str;
|
||||
};
|
||||
email = lib.mkOption {
|
||||
example = "jilldoe@test.local";
|
||||
description = "the git user Name";
|
||||
type = lib.types.str;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userName = cfg.name;
|
||||
userEmail = cfg.email;
|
||||
extraConfig = {
|
||||
init = { defaultBranch = "main"; };
|
||||
safe.directory = "/etc/nixos";
|
||||
pull.rebase = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
19
modules/applications/kitty.nix
Normal file
19
modules/applications/kitty.nix
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
let
|
||||
cfg = config.modules.apps.kitty;
|
||||
in
|
||||
{
|
||||
options.modules.apps.kitty = {
|
||||
enable = lib.mkEnableOption "enable the kitty terminal emulator";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
settings = {
|
||||
confirm_os_window_close = 0;
|
||||
};
|
||||
shellIntegration.enableZshIntegration = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
36
modules/applications/zsh.nix
Normal file
36
modules/applications/zsh.nix
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
{ lib, config, pkgs, ... }:
|
||||
let
|
||||
cfg = config.modules.apps.zsh;
|
||||
in
|
||||
{
|
||||
options.modules.apps.zsh = {
|
||||
enable = lib.mkEnableOption "enable zsh with oh-my-zsh";
|
||||
enableAliases = lib.mkEnableOption "whether to enable shellAliases";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.direnv = {
|
||||
enable=true;
|
||||
enableZshIntegration=true;
|
||||
nix-direnv.enable=true;
|
||||
};
|
||||
programs.zsh = {
|
||||
enable=true;
|
||||
shellAliases = lib.mkIf cfg.enableAliases {
|
||||
ll = "lsd -l";
|
||||
lt = "lsd -l --tree";
|
||||
update = "nix flake update --commit-lock-file $HOME/nixos && sudo nixos-rebuild switch --flake $HOME/nixos";
|
||||
};
|
||||
history = {
|
||||
path = "${config.xdg.dataHome}/zsh/history";
|
||||
size = 10000;
|
||||
};
|
||||
oh-my-zsh = {
|
||||
enable = true;
|
||||
plugins = [ "git" ];
|
||||
theme = "frisk";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
25
modules/automapaper/automapaper.nix
Normal file
25
modules/automapaper/automapaper.nix
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{ lib, config, pkgs, inputs, ... }:
|
||||
let
|
||||
cfg = config.modules.automapaper;
|
||||
in
|
||||
{
|
||||
options.modules.automapaper = {
|
||||
enable = lib.mkEnableOption "enable automapaper";
|
||||
};
|
||||
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = [
|
||||
inputs.automapaper.packages.${pkgs.system}.default
|
||||
];
|
||||
|
||||
home.file = {
|
||||
"${config.xdg.configHome}/automapaper/config.toml".source = ./config.toml;
|
||||
"${config.xdg.configHome}/automapaper/config2nd.toml".source = ./config2nd.toml;
|
||||
"${config.xdg.configHome}/automapaper/state.frag".source = ./state.frag;
|
||||
"${config.xdg.configHome}/automapaper/init.frag".source = ./init.frag;
|
||||
"${config.xdg.configHome}/automapaper/display.frag".source = ./display.frag;
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
24
modules/automapaper/config.toml
Normal file
24
modules/automapaper/config.toml
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
# this is the config for Automapaper
|
||||
# you need one for each display you want the wallpaper on
|
||||
[display]
|
||||
# name of the display in wayland
|
||||
name="DP-3"
|
||||
# the horizontal cell amount to simulate
|
||||
horizontal=256
|
||||
# the vertical cell amount to simulate
|
||||
vertical=144
|
||||
# target simulation ticks per second
|
||||
tps=30
|
||||
# automaton shader
|
||||
# this has access to the previous state, which is a (horizontal, vertical) sized texture2D that uses rgba float values
|
||||
state_frag="/home/noa/.config/automapaper/state.frag"
|
||||
# initial state / reset shader
|
||||
# this has access to the resolution, and the time since the program was started
|
||||
init_frag="/home/noa/.config/automapaper/init.frag"
|
||||
# scaling/display shader
|
||||
# this has access to the current and previous state to display
|
||||
display_frag="/home/noa/.config/automapaper/display.frag"
|
||||
# the amount of cycles before the init_frag shader reruns
|
||||
cycles=2500
|
||||
# the amount of frames to display per state tick
|
||||
frames_per_tick=1
|
||||
23
modules/automapaper/config2nd.toml
Normal file
23
modules/automapaper/config2nd.toml
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
# this is the config for Automapaper
|
||||
[display]
|
||||
# name of the display in wayland
|
||||
name = "DP-2"
|
||||
# the horizontal cell amount to simulate
|
||||
horizontal = 256
|
||||
# the vertical cell amount to simulate
|
||||
vertical = 144
|
||||
# target simulation ticks per second
|
||||
tps = 30
|
||||
# automaton shader
|
||||
# this has access to the previous state, which is a (horizontal, vertical) sized texture2D that uses the rgba values
|
||||
state_frag="/home/noa/.config/automapaper/state.frag"
|
||||
# initial state / reset shader
|
||||
# this has access to the resolution, and the time since the program was started
|
||||
init_frag="/home/noa/.config/automapaper/init.frag"
|
||||
# scaling/display shader
|
||||
# this has access to the current and previous state to display
|
||||
display_frag="/home/noa/.config/automapaper/display.frag"
|
||||
# the amount of cycles before the init_frag shader reruns
|
||||
cycles = 2500
|
||||
# the amount of frames to display per state tick
|
||||
frames_per_tick = 1
|
||||
29
modules/automapaper/display.frag
Normal file
29
modules/automapaper/display.frag
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
#version 310 es
|
||||
precision highp float;
|
||||
|
||||
uniform sampler2D tex2D;
|
||||
uniform sampler2D old2D;
|
||||
uniform ivec2 resolution;
|
||||
uniform float frame_part;
|
||||
|
||||
in highp vec2 texCoords;
|
||||
out vec4 stateColor;
|
||||
|
||||
const vec4 bgColor = vec4(38.0/255.0, 5.0/255.0, 46.0/255.0, 1.0); // #26052e
|
||||
const vec4 fgColor = vec4(148.0/255.0, 15.0/255.0, 173.0/255.0, 1.0); // #950fad
|
||||
|
||||
void main() {
|
||||
vec2 canvasSize = vec2(textureSize(tex2D, 0));
|
||||
vec4 state = texture(tex2D, texCoords);
|
||||
vec4 ostate = texture(old2D, texCoords);
|
||||
|
||||
vec2 localCoords = fract(gl_FragCoord.xy / vec2(resolution) * canvasSize);
|
||||
localCoords = localCoords - 0.5;
|
||||
float dist = sqrt(dot(localCoords, localCoords));
|
||||
|
||||
float size = smoothstep(0.0, 1.0, pow(mix(ostate.g,state.g, frame_part), 3.0)) * 0.35;
|
||||
float mask = 1.0 - step(size, dist);
|
||||
|
||||
float brightness = mix(ostate.r,state.r, frame_part) + 0.2 * pow(mix(ostate.g,state.g, frame_part), 3.0);
|
||||
stateColor = mix(bgColor, fgColor, brightness * mask);
|
||||
}
|
||||
23
modules/automapaper/init.frag
Normal file
23
modules/automapaper/init.frag
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
#version 310 es
|
||||
precision highp float;
|
||||
|
||||
uniform float time;
|
||||
uniform vec2 resolution;
|
||||
|
||||
out vec4 stateColor;
|
||||
|
||||
float PHI = 1.61803398874989484820459; // Φ = Golden Ratio
|
||||
|
||||
float gold_noise(in vec2 xy, in float seed){
|
||||
return fract(tan(distance(xy*PHI, xy)*seed)*xy.x);
|
||||
}
|
||||
|
||||
void main( void ) {
|
||||
|
||||
vec2 position = gl_FragCoord.xy;
|
||||
float color = gold_noise(position.xy, fract(time));
|
||||
|
||||
|
||||
stateColor = vec4(step(0.3, color), 0,0,step(0.3, color));
|
||||
}
|
||||
|
||||
35
modules/automapaper/state.frag
Normal file
35
modules/automapaper/state.frag
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
#version 310 es
|
||||
precision highp float;
|
||||
|
||||
uniform sampler2D state;
|
||||
uniform vec2 scale;
|
||||
|
||||
out vec4 stateColor;
|
||||
|
||||
vec4 get(int x, int y) {
|
||||
return texture(state, (gl_FragCoord.xy + vec2(x, y)) / scale);
|
||||
}
|
||||
|
||||
void main() {
|
||||
int sum = int(get(-1, -1).r +
|
||||
get(-1, 0).r +
|
||||
get(-1, 1).r +
|
||||
get( 0, -1).r +
|
||||
get( 0, 1).r +
|
||||
get( 1, -1).r +
|
||||
get( 1, 0).r +
|
||||
get( 1, 1).r);
|
||||
vec4 current = get(0,0);
|
||||
if (sum == 3) {
|
||||
stateColor.r = 1.0;
|
||||
stateColor.g = 1.0;
|
||||
} else if (sum == 2) {
|
||||
stateColor = current;
|
||||
if (current.r == 0.0) {
|
||||
stateColor.g = max(current.g - 0.01, 0.0);
|
||||
}
|
||||
} else {
|
||||
stateColor = vec4(0.0, max(current.g - 0.01, 0.0), 0.0, 1.0);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -15,15 +15,23 @@ in
|
|||
default = pkgs.kitty;
|
||||
description = "What terminal emulator should be used in hyprland";
|
||||
};
|
||||
wallpapers.automapaper = {
|
||||
enable = lib.mkEnableOption "enable automapaper";
|
||||
};
|
||||
};
|
||||
|
||||
imports = [
|
||||
./waybar/default.nix
|
||||
./wofi.nix
|
||||
./dunst.nix
|
||||
./automapaper/automapaper.nix
|
||||
];
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
modules = {
|
||||
automapaper = {
|
||||
enable = true;
|
||||
};
|
||||
waybar = {
|
||||
modules = {
|
||||
left = [ "hyprland/workspaces" "tray" "hyprland/window" ];
|
||||
|
|
@ -70,8 +78,8 @@ in
|
|||
exec-once = [
|
||||
"waybar"
|
||||
"dunst"
|
||||
"automapaper -C ${config.xdg.configHome}/automapaper/config.toml"
|
||||
"automapaper -C ${config.xdg.configHome}/automapaper/config2nd.toml"
|
||||
(lib.mkIf cfg.wallpapers.automapaper.enable "automapaper -C ${config.xdg.configHome}/automapaper/config.toml")
|
||||
(lib.mkIf cfg.wallpapers.automapaper.enable "automapaper -C ${config.xdg.configHome}/automapaper/config2nd.toml")
|
||||
"hyprctl dispatcher focusmonitor 1"
|
||||
"hypridle"
|
||||
];
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue