treewide: slim down and reorganize config
This commit is contained in:
parent
778775ceb6
commit
8a5be644b8
33 changed files with 131 additions and 755 deletions
277
flake.lock
generated
277
flake.lock
generated
|
@ -1,161 +1,5 @@
|
|||
{
|
||||
"nodes": {
|
||||
"base16": {
|
||||
"inputs": {
|
||||
"fromYaml": "fromYaml"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1708890466,
|
||||
"narHash": "sha256-LlrC09LoPi8OPYOGPXegD72v+//VapgAqhbOFS3i8sc=",
|
||||
"owner": "SenchoPens",
|
||||
"repo": "base16.nix",
|
||||
"rev": "665b3c6748534eb766c777298721cece9453fdae",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "SenchoPens",
|
||||
"repo": "base16.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16-fish": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1622559957,
|
||||
"narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=",
|
||||
"owner": "tomyun",
|
||||
"repo": "base16-fish",
|
||||
"rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tomyun",
|
||||
"repo": "base16-fish",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16-helix": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1725860795,
|
||||
"narHash": "sha256-Z2o8VBPW3I+KKTSfe25kskz0EUj7MpUh8u355Z1nVsU=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-helix",
|
||||
"rev": "7f795bf75d38e0eea9fed287264067ca187b88a9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-helix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16-vim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1716150083,
|
||||
"narHash": "sha256-ZMhnNmw34ogE5rJZrjRv5MtG3WaqKd60ds2VXvT6hEc=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-vim",
|
||||
"rev": "6e955d704d046b0dc3e5c2d68a2a6eeffd2b5d3d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "base16-vim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"darwin": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1729982130,
|
||||
"narHash": "sha256-HmLLQbX07rYD0RXPxbf3kJtUo66XvEIX9Y+N5QHQ9aY=",
|
||||
"owner": "lnl7",
|
||||
"repo": "nix-darwin",
|
||||
"rev": "2eb472230a5400c81d9008014888b4bff23bcf44",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "lnl7",
|
||||
"repo": "nix-darwin",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1673956053,
|
||||
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": [
|
||||
"stylix",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1710146030,
|
||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"fromYaml": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1689549921,
|
||||
"narHash": "sha256-iX0pk/uB019TdBGlaJEWvBCfydT6sRq+eDcGPifVsCM=",
|
||||
"owner": "SenchoPens",
|
||||
"repo": "fromYaml",
|
||||
"rev": "11fbbbfb32e3289d3c631e0134a23854e7865c84",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "SenchoPens",
|
||||
"repo": "fromYaml",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gnome-shell": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1713702291,
|
||||
"narHash": "sha256-zYP1ehjtcV8fo+c+JFfkAqktZ384Y+y779fzmR9lQAU=",
|
||||
"owner": "GNOME",
|
||||
"repo": "gnome-shell",
|
||||
"rev": "0d0aadf013f78a7f7f1dc984d0d812971864b934",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "GNOME",
|
||||
"ref": "46.1",
|
||||
"repo": "gnome-shell",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
|
@ -177,27 +21,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager_2": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"stylix",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1724435763,
|
||||
"narHash": "sha256-UNky3lJNGQtUEXT2OY8gMxejakSWPTfWKvpFkpFlAfM=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "c2cd2a52e02f1dfa1c88f95abeb89298d46023be",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-index-database": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
|
@ -268,109 +91,11 @@
|
|||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"darwin": "darwin",
|
||||
"home-manager": "home-manager",
|
||||
"nix-index-database": "nix-index-database",
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixpkgs-stable": "nixpkgs-stable",
|
||||
"stylix": "stylix"
|
||||
}
|
||||
},
|
||||
"stylix": {
|
||||
"inputs": {
|
||||
"base16": "base16",
|
||||
"base16-fish": "base16-fish",
|
||||
"base16-helix": "base16-helix",
|
||||
"base16-vim": "base16-vim",
|
||||
"flake-compat": "flake-compat",
|
||||
"flake-utils": "flake-utils",
|
||||
"gnome-shell": "gnome-shell",
|
||||
"home-manager": "home-manager_2",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": "systems",
|
||||
"tinted-foot": "tinted-foot",
|
||||
"tinted-kitty": "tinted-kitty",
|
||||
"tinted-tmux": "tinted-tmux"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1729963473,
|
||||
"narHash": "sha256-uGjTjvvlGQfQ0yypVP+at0NizI2nrb6kz4wGAqzRGbY=",
|
||||
"owner": "danth",
|
||||
"repo": "stylix",
|
||||
"rev": "04afcfc0684d9bbb24bb1dc77afda7c1843ec93b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "danth",
|
||||
"repo": "stylix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"tinted-foot": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1696725948,
|
||||
"narHash": "sha256-65bz2bUL/yzZ1c8/GQASnoiGwaF8DczlxJtzik1c0AU=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-foot",
|
||||
"rev": "eedbcfa30de0a4baa03e99f5e3ceb5535c2755ce",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-foot",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"tinted-kitty": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1716423189,
|
||||
"narHash": "sha256-2xF3sH7UIwegn+2gKzMpFi3pk5DlIlM18+vj17Uf82U=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-kitty",
|
||||
"rev": "eb39e141db14baef052893285df9f266df041ff8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-kitty",
|
||||
"rev": "eb39e141db14baef052893285df9f266df041ff8",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"tinted-tmux": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1696725902,
|
||||
"narHash": "sha256-wDPg5elZPcQpu7Df0lI5O8Jv4A3T6jUQIVg63KDU+3Q=",
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-tmux",
|
||||
"rev": "c02050bebb60dbb20cb433cd4d8ce668ecc11ba7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tinted-theming",
|
||||
"repo": "tinted-tmux",
|
||||
"type": "github"
|
||||
"nixpkgs-stable": "nixpkgs-stable"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
{
|
||||
description =
|
||||
"Mine very own Nix(OS) / home-manager / nix-darwin configuration";
|
||||
description = "Mine very own Nix(OS) / home-manager configuration";
|
||||
|
||||
inputs = {
|
||||
# Nixpkgs
|
||||
|
@ -15,10 +14,6 @@
|
|||
nix-index-database.url = "github:nix-community/nix-index-database";
|
||||
nix-index-database.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
# stylix
|
||||
stylix.url = "github:danth/stylix";
|
||||
stylix.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
# nix-hardware
|
||||
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||
};
|
||||
|
|
|
@ -1,6 +1,14 @@
|
|||
# enoko is my framework 13-inch AMD laptop, running nixos
|
||||
{ pkgs, ... }: {
|
||||
imports = [ ./global.nix ./global.linux.nix ./features/desktop ];
|
||||
imports = [
|
||||
./global.nix
|
||||
./global.linux.nix
|
||||
./features/desktop
|
||||
./features/devel/js.nix
|
||||
./features/devel/java.nix
|
||||
./features/devel/rust.nix
|
||||
./features/devel/dbs.nix
|
||||
];
|
||||
|
||||
config.monitors = [{
|
||||
name = "eDP-1";
|
||||
|
@ -13,10 +21,4 @@
|
|||
}];
|
||||
|
||||
config.home.packages = with pkgs; [ easyroam-connect-desktop ];
|
||||
|
||||
# Fix HiDPI scaling
|
||||
# config.wayland.windowManager.hyprland = {
|
||||
# settings.xwayland.force_zero_scaling = true;
|
||||
# settings.env = "GDK_SCALE,2";
|
||||
# };
|
||||
}
|
||||
|
|
|
@ -9,8 +9,10 @@
|
|||
|
||||
# stuff that doesn't fit into any other files
|
||||
home.packages = with pkgs; [
|
||||
comma # nix-shell a package by prefixing it with `,`
|
||||
ripgrep # well, it's grep
|
||||
fastfetch # gotta show system information somehow!
|
||||
flyctl # cli for a hosting service i use
|
||||
httpie # good for inspecting APIs
|
||||
exercism # cli for a great learning website!
|
||||
];
|
||||
}
|
||||
|
|
|
@ -19,13 +19,12 @@
|
|||
setpath ~/.cabal/bin
|
||||
setpath ~/.local/bin
|
||||
setpath ~/.bun/bin
|
||||
setpath ~/Projects/Checkouts/arcanist/bin
|
||||
setpath ~/.config/emacs/bin
|
||||
'';
|
||||
|
||||
shellAliases = {
|
||||
# General aliases
|
||||
c = "clear";
|
||||
cl = "clear";
|
||||
ll = "ls -lahF --color=always";
|
||||
e = "$EDITOR";
|
||||
se = "sudoedit";
|
||||
|
@ -46,7 +45,7 @@
|
|||
j = "z";
|
||||
|
||||
# cargoes and rust-s
|
||||
ca = "cargo";
|
||||
c = "cargo";
|
||||
cr = "cargo run";
|
||||
cb = "cargo build";
|
||||
ct = "cargo test";
|
||||
|
|
|
@ -5,20 +5,19 @@
|
|||
./alacritty.nix
|
||||
./vscode.nix
|
||||
./1password.nix
|
||||
./obs.nix
|
||||
./irc.nix
|
||||
./emacs.nix
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
# my primary note-taking tool
|
||||
obsidian
|
||||
kdenlive
|
||||
audacity
|
||||
# a video player
|
||||
mpv
|
||||
# a music player
|
||||
spotify
|
||||
tidal-hifi
|
||||
# for watching stuff w/ friends
|
||||
syncplay
|
||||
chatterino2
|
||||
];
|
||||
|
||||
home.sessionVariables = {
|
||||
|
@ -26,6 +25,4 @@
|
|||
QT_QPA_PLATFORM = "wayland";
|
||||
LIBSEAT_BACKEND = "logind";
|
||||
};
|
||||
|
||||
xdg.mimeApps.enable = true;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
{ pkgs, ... }: {
|
||||
home.packages = with pkgs; [
|
||||
# FFXIV
|
||||
xivlauncher
|
||||
# Minecraft
|
||||
(prismlauncher.override {
|
||||
jdks = [ temurin-bin-21 temurin-bin-17 temurin-bin-8 ];
|
||||
})
|
||||
|
|
|
@ -1,183 +0,0 @@
|
|||
{ lib, config, pkgs, ... }: {
|
||||
imports = [ ../default.nix ../wlr ./swaylock.nix ./swayidle.nix ];
|
||||
|
||||
home.packages = with pkgs; [ grimblast pamixer playerctl ];
|
||||
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
systemd = { enable = true; };
|
||||
|
||||
settings = {
|
||||
general = {
|
||||
gaps_in = 15;
|
||||
gaps_out = 20;
|
||||
border_size = 1;
|
||||
};
|
||||
cursor.inactive_timeout = 4;
|
||||
|
||||
device = [{
|
||||
name = "royuan-akko-keyboard";
|
||||
kb_layout = "us_intl";
|
||||
}];
|
||||
|
||||
dwindle = {
|
||||
split_width_multiplier = 1.35;
|
||||
pseudotile = true;
|
||||
};
|
||||
|
||||
layerrule = [
|
||||
"animation fade,hyprpicker"
|
||||
"animation fade,selection"
|
||||
"blur,^(wofi)$"
|
||||
"ignorezero,^(wofi)$"
|
||||
];
|
||||
|
||||
windowrulev2 = let steam = "title:^()$,class:^(steam)$";
|
||||
in [ "stayfocused, ${steam}" "minsize 1 1, ${steam}" ];
|
||||
|
||||
decoration = {
|
||||
active_opacity = 1.0;
|
||||
inactive_opacity = 0.85;
|
||||
fullscreen_opacity = 1.0;
|
||||
rounding = 7;
|
||||
blur = {
|
||||
enabled = true;
|
||||
size = 4;
|
||||
passes = 3;
|
||||
new_optimizations = true;
|
||||
ignore_opacity = true;
|
||||
};
|
||||
drop_shadow = true;
|
||||
shadow_range = 12;
|
||||
shadow_offset = "3 3";
|
||||
};
|
||||
|
||||
animations = {
|
||||
enabled = true;
|
||||
bezier = [
|
||||
"easein,0.1, 0, 0.5, 0"
|
||||
"easeinback,0.35, 0, 0.95, -0.3"
|
||||
|
||||
"easeout,0.5, 1, 0.9, 1"
|
||||
"easeoutback,0.35, 1.35, 0.65, 1"
|
||||
|
||||
"easeinout,0.45, 0, 0.55, 1"
|
||||
];
|
||||
|
||||
animation = [
|
||||
"fadeIn,1,3,easeout"
|
||||
"fadeLayersIn,1,3,easeoutback"
|
||||
"layersIn,1,3,easeoutback,slide"
|
||||
"windowsIn,1,3,easeoutback,slide"
|
||||
|
||||
"fadeLayersOut,1,3,easeinback"
|
||||
"fadeOut,1,3,easein"
|
||||
"layersOut,1,3,easeinback,slide"
|
||||
"windowsOut,1,3,easeinback,slide"
|
||||
|
||||
"border,1,3,easeout"
|
||||
"fadeDim,1,3,easeinout"
|
||||
"fadeShadow,1,3,easeinout"
|
||||
"fadeSwitch,1,3,easeinout"
|
||||
"windowsMove,1,3,easeoutback"
|
||||
"workspaces,1,2.6,easeoutback,slide"
|
||||
];
|
||||
};
|
||||
|
||||
bindm = [ "SUPER,mouse:272,movewindow" "SUPER,mouse:273,resizewindow" ];
|
||||
|
||||
bind = let
|
||||
terminal = "${pkgs.alacritty}/bin/alacritty";
|
||||
grimblast = lib.getExe pkgs.grimblast;
|
||||
workspaces = [ "1" "2" "3" "4" "5" ];
|
||||
directions = rec {
|
||||
left = "l";
|
||||
right = "r";
|
||||
up = "u";
|
||||
down = "d";
|
||||
h = left;
|
||||
l = right;
|
||||
k = up;
|
||||
j = down;
|
||||
};
|
||||
in [
|
||||
"SUPER,Return,exec,${terminal}"
|
||||
"SUPERSHIFT,q,killactive" # exit program
|
||||
"SUPERSHIFT,e,exit" # exit hyprland
|
||||
"SUPERSHIFT,r,exec,hyprctl reload" # reload currently running hyprland
|
||||
|
||||
"SUPER,s,togglesplit" # horizontal split
|
||||
"SUPER,f,fullscreen,1" # borderless window
|
||||
"SUPERSHIFT,f,fullscreen,0" # proper fullscreen
|
||||
"ALTSHIFT,space,togglefloating" # floating window
|
||||
|
||||
"SUPER,minus,splitratio,-0.25" # split gets slightly smaller
|
||||
"SUPERSHIFT,minus,splitratio,-0.3333333" # split gets smaller
|
||||
"SUPER,equal,splitratio,0.25" # split gets slightly larger
|
||||
"SUPERSHIFT,equal,splitratio,0.3333333" # split gets larger
|
||||
|
||||
"SUPER,g,togglegroup" # make a window group
|
||||
"SUPER,t,lockactivegroup,toggle" # lock/unlock the current group
|
||||
"SUPER,tab,changegroupactive,f" # switch to next window in group
|
||||
"SUPERSHIFT,tab,changegroupactive,p" # switch to prev window in group
|
||||
|
||||
"SUPER,dead_grave,workspace,previous" # prev workspace
|
||||
"SUPER,dead_grave,workspace,next" # next workspace
|
||||
|
||||
"SUPER,u,togglespecialworkspace" # toggle special workspace
|
||||
"SUPERSHIFT,u,movetoworkspacesilent,special" # move to special workspace
|
||||
|
||||
",Print,exec,${grimblast} --notify --freeze copy area" # screenshot area
|
||||
"SHIFT,Print,exec,${grimblast} --notify --freeze copy output" # screenshot all
|
||||
|
||||
",XF86AudioRaiseVolume,exec,pamixer -i 5" # raise volume
|
||||
",XF86AudioLowerVolume,exec,pamixer -d 5" # lower volume
|
||||
",XF86AudioPlay,exec,playerctl play-pause" # play/pause
|
||||
",XF86AudioNext,exec,playerctl next" # next song
|
||||
",XF86AudioPrev,exec,playerctl previous" # previous song
|
||||
] ++
|
||||
# change workspace
|
||||
(map (n: "SUPER,${n},workspace,name:${n}") workspaces) ++
|
||||
# move window to workspace
|
||||
(map (n: "SUPERSHIFT,${n},movetoworkspacesilent,name:${n}") workspaces) ++
|
||||
# move focus
|
||||
(lib.mapAttrsToList
|
||||
(key: direction: "SUPER,${key},movefocus,${direction}") directions) ++
|
||||
# swap windows
|
||||
(lib.mapAttrsToList
|
||||
(key: direction: "SUPERSHIFT,${key},swapwindow,${direction}")
|
||||
directions) ++
|
||||
# move windows
|
||||
(lib.mapAttrsToList
|
||||
(key: direction: "SUPERCONTROL,${key},movewindoworgroup,${direction}")
|
||||
directions) ++
|
||||
# move monitor focus
|
||||
(lib.mapAttrsToList
|
||||
(key: direction: "SUPERALT,${key},focusmonitor,${direction}")
|
||||
directions) ++
|
||||
# move workspace to other monitor
|
||||
(lib.mapAttrsToList (key: direction:
|
||||
"SUPERALTSHIFT,${key},movecurrentworkspacetomonitor,${direction}")
|
||||
directions) ++
|
||||
# launcher
|
||||
(let wofi = lib.getExe pkgs.wofi;
|
||||
in lib.optionals config.programs.wofi.enable [
|
||||
"SUPER,Space,exec,${wofi} -S drun -W 20% -H 15%"
|
||||
"SHIFTSUPER,Space,exec,${wofi} -S run -W 20% -H 15%"
|
||||
]);
|
||||
|
||||
monitor = map (m:
|
||||
"${m.name},${
|
||||
if m.enabled then
|
||||
"${toString m.width}x${toString m.height}@${
|
||||
toString m.refreshRate
|
||||
},${m.position},${m.scale}"
|
||||
else
|
||||
"disable"
|
||||
}") config.monitors;
|
||||
|
||||
workspace = map (m: "name:${m.workspace},monitor:${m.name}")
|
||||
(lib.filter (m: m.enabled && m.workspace != null) config.monitors);
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{ config, ... }:
|
||||
let swaylock = "${config.programs.swaylock.package}/bin/swaylock";
|
||||
in {
|
||||
services.swayidle = {
|
||||
enable = true;
|
||||
systemdTarget = "graphical-session.target";
|
||||
events = [{
|
||||
event = "before-sleep";
|
||||
command = "${swaylock} --daemonize";
|
||||
}];
|
||||
# timeouts = [
|
||||
# {
|
||||
# timeout = 4 * 60;
|
||||
# command = "${swaylock} --daemonize --grace 15";
|
||||
# }
|
||||
# ];
|
||||
};
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
{ pkgs, ... }: {
|
||||
programs.swaylock = {
|
||||
enable = true;
|
||||
package = pkgs.swaylock-effects;
|
||||
settings = { effect-blur = "20x3"; };
|
||||
};
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
{ pkgs, ... }: {
|
||||
imports = [ ./mako.nix ./wofi.nix ./waybar.nix ];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
wf-recorder
|
||||
wl-clipboard
|
||||
xdg-utils
|
||||
nautilus
|
||||
adwaita-icon-theme
|
||||
];
|
||||
|
||||
programs.imv.enable = true;
|
||||
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
extraPortals = [ pkgs.xdg-desktop-portal-wlr ];
|
||||
config = { common = { default = [ "wlr" ]; }; };
|
||||
};
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
{ config, lib, ... }: {
|
||||
services.mako = {
|
||||
enable = true;
|
||||
font = lib.mkForce "${config.fontProfiles.regular.family} 12";
|
||||
padding = "10,20";
|
||||
anchor = "top-center";
|
||||
width = 400;
|
||||
height = 150;
|
||||
borderSize = 1;
|
||||
defaultTimeout = 12000;
|
||||
layer = "overlay";
|
||||
};
|
||||
}
|
|
@ -1,108 +0,0 @@
|
|||
{ config, pkgs, ... }: {
|
||||
# additional deps for cava support
|
||||
home.packages = with pkgs; [ iniparser fftw ];
|
||||
|
||||
systemd.user.services.waybar = {
|
||||
Unit.StartLimitBurst = 30;
|
||||
# this fixes fonts for some reason
|
||||
Service.Environment = "PATH=${config.home.profileDirectory}/bin";
|
||||
};
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
systemd.enable = true;
|
||||
settings = {
|
||||
primary = {
|
||||
height = 30;
|
||||
position = "top";
|
||||
margin-top = 10;
|
||||
margin-left = 20;
|
||||
margin-right = 20;
|
||||
modules-left = [ "hyprland/workspaces" "hyprland/language" ];
|
||||
|
||||
modules-center = [ "cpu" "clock" "memory" ];
|
||||
|
||||
modules-right = [ "mpris" "network" "pulseaudio" "battery" "tray" ];
|
||||
|
||||
cpu = { format = "CPU {usage}%"; };
|
||||
|
||||
memory = { format = "MEM {}%"; };
|
||||
|
||||
tray = { spacing = 10; };
|
||||
|
||||
pulseaudio = { format = "AUD {volume}%"; };
|
||||
|
||||
network = {
|
||||
format = "NET {ipaddr}";
|
||||
format-disconnected = "NET X";
|
||||
};
|
||||
|
||||
mpris = {
|
||||
format = "{dynamic}";
|
||||
interval = 1;
|
||||
};
|
||||
|
||||
"hyprland/language" = {
|
||||
format = "KBD {}";
|
||||
format-en = "EN";
|
||||
format-de = "DE";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
style = let inherit (config.lib.stylix.colors) withHashtag;
|
||||
in ''
|
||||
* {
|
||||
font-family: ${config.fontProfiles.bitmap.family}, ${config.fontProfiles.monospace.family};
|
||||
font-size: 11pt;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
padding: 0;
|
||||
border-radius: 0.5em;
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
transition: background-color .5s, color .5s;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 0 6px;
|
||||
}
|
||||
|
||||
#workspaces button.active,
|
||||
#workspaces button.focused {
|
||||
background-color: ${withHashtag.base05};
|
||||
color: ${withHashtag.base00};
|
||||
}
|
||||
|
||||
#cpu,
|
||||
#memory {
|
||||
color: ${withHashtag.base04};
|
||||
}
|
||||
|
||||
#mpris {
|
||||
font-size: 10pt;
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
||||
#tray {
|
||||
padding: 0 5px;
|
||||
background-color: ${withHashtag.base02};
|
||||
}
|
||||
|
||||
#pulseaudio {
|
||||
color: ${withHashtag.base0D};
|
||||
}
|
||||
|
||||
#network {
|
||||
color: ${withHashtag.base0C};
|
||||
}
|
||||
|
||||
#language {
|
||||
color: ${withHashtag.base02};
|
||||
margin-left: 10px;
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
{ config, lib, ... }: {
|
||||
programs.wofi = {
|
||||
enable = true;
|
||||
settings = {
|
||||
insensitive = true;
|
||||
allow_markup = true;
|
||||
run-always_parse_args = true;
|
||||
run-cache_file = "/dev/null";
|
||||
run-exec_search = true;
|
||||
matching = "multi-contains";
|
||||
};
|
||||
style = ''
|
||||
#window {
|
||||
border: 1px solid ${config.lib.stylix.colors.withHashtag.base05};
|
||||
font-family: ${config.fontProfiles.bitmap.family};
|
||||
}
|
||||
|
||||
#input {
|
||||
border-radius: 0;
|
||||
border: 1px solid ${config.lib.stylix.colors.withHashtag.base05};
|
||||
border-bottom: 0;
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
16
home/features/devel/base.nix
Normal file
16
home/features/devel/base.nix
Normal file
|
@ -0,0 +1,16 @@
|
|||
# Basic development utilities for every system. Equivalent to something
|
||||
# like `build-essential` on other systems, ideally.
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
gcc
|
||||
gnumake
|
||||
unzip
|
||||
openssl
|
||||
autoconf
|
||||
pkg-config
|
||||
cmake
|
||||
inotify-tools
|
||||
];
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
{ pkgs, ... }: { home.packages = with pkgs; [ clojure clojure-lsp leiningen ]; }
|
6
home/features/devel/dbs.nix
Normal file
6
home/features/devel/dbs.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
# DB management interfaces
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [ beekeeper-studio ];
|
||||
}
|
|
@ -1,44 +1 @@
|
|||
{ pkgs, ... }: {
|
||||
imports = [ ./php.nix ./clojure.nix ./langs.nix ];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
gcc
|
||||
gnumake
|
||||
unzip
|
||||
openssl
|
||||
autoconf
|
||||
pkg-config
|
||||
bun
|
||||
rustup
|
||||
cmake
|
||||
|
||||
# haskell stuff
|
||||
haskell.compiler.ghc910
|
||||
cabal-install
|
||||
stack
|
||||
|
||||
# nix stuff
|
||||
nixpkgs-fmt
|
||||
nixfmt-classic
|
||||
nix-tree
|
||||
nil
|
||||
nixd
|
||||
|
||||
# elixir stuff
|
||||
elixir
|
||||
elixir-ls
|
||||
inotify-tools
|
||||
|
||||
# python
|
||||
python3
|
||||
uv
|
||||
basedpyright
|
||||
|
||||
# misc
|
||||
flyctl
|
||||
httpie
|
||||
beekeeper-studio
|
||||
exercism
|
||||
neil
|
||||
];
|
||||
}
|
||||
{ ... }: { imports = [ ./base.nix ]; }
|
||||
|
|
6
home/features/devel/elixir.nix
Normal file
6
home/features/devel/elixir.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
# It's Elixir, a BEAM language.
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [ elixir elixir-ls ];
|
||||
}
|
6
home/features/devel/haskell.nix
Normal file
6
home/features/devel/haskell.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
# The _smartest_ programming language.
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [ haskell.compiler.ghc910 cabal-install stack ];
|
||||
}
|
14
home/features/devel/java.nix
Normal file
14
home/features/devel/java.nix
Normal file
|
@ -0,0 +1,14 @@
|
|||
# Java and it's sub-Javas (Clojure, etc)
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
# java
|
||||
jdk
|
||||
|
||||
# clojure
|
||||
clojure
|
||||
clojure-lsp
|
||||
neil
|
||||
];
|
||||
}
|
6
home/features/devel/js.nix
Normal file
6
home/features/devel/js.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
# NodeJS, JavaScript, and more!
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [ bun nodejs_22 ];
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
{ pkgs, ... }: { home.packages = with pkgs; [ nodejs_22 ruby_3_3 jdk ]; }
|
14
home/features/devel/python.nix
Normal file
14
home/features/devel/python.nix
Normal file
|
@ -0,0 +1,14 @@
|
|||
# Everyone needs a Python setup, right?
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
python3
|
||||
# catch-all replacement for _most_ other python stuff
|
||||
uv
|
||||
# linter
|
||||
ruff
|
||||
# lsp(?)
|
||||
basedpyright
|
||||
];
|
||||
}
|
8
home/features/devel/rust.nix
Normal file
8
home/features/devel/rust.nix
Normal file
|
@ -0,0 +1,8 @@
|
|||
# Rust and other adjacent tools.
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
# I use rustup to manage my Rust toolchains, but I may override it
|
||||
# per-project in a local flake.
|
||||
home.packages = with pkgs; [ rustup cargo-watch ];
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
{ ... }: {
|
||||
systemd.user.startServices = "sd-switch";
|
||||
xdg.mime.enable = true;
|
||||
}
|
|
@ -1,11 +1,13 @@
|
|||
{ inputs, lib, pkgs, config, outputs, ... }: {
|
||||
imports = [
|
||||
# home-manager
|
||||
inputs.nix-index-database.hmModules.nix-index
|
||||
inputs.stylix.homeManagerModules.stylix
|
||||
# Basic CLI tools and environment
|
||||
./features/cli
|
||||
./features/devel
|
||||
] ++ (builtins.attrValues outputs.homeManagerModules);
|
||||
|
||||
# Configure nixpkgs
|
||||
nixpkgs = {
|
||||
overlays = builtins.attrValues outputs.overlays;
|
||||
config = {
|
||||
|
@ -14,6 +16,7 @@
|
|||
};
|
||||
};
|
||||
|
||||
# Configure nix
|
||||
nix = {
|
||||
package = lib.mkDefault pkgs.nixVersions.nix_2_22;
|
||||
settings = {
|
||||
|
@ -22,6 +25,20 @@
|
|||
};
|
||||
};
|
||||
|
||||
# Add some additional packages for Nix-centric development
|
||||
home.packages = with pkgs; [
|
||||
# formatting
|
||||
nixpkgs-fmt
|
||||
nixfmt-classic
|
||||
# inspecting derivations
|
||||
nix-tree
|
||||
# lsps
|
||||
nil
|
||||
nixd
|
||||
# once-off command execution
|
||||
comma
|
||||
];
|
||||
|
||||
programs = { home-manager.enable = true; };
|
||||
|
||||
programs.git = {
|
||||
|
@ -51,22 +68,6 @@
|
|||
sessionVariables = { FLAKE = "$HOME/nix-config"; };
|
||||
};
|
||||
|
||||
stylix = {
|
||||
enable = true;
|
||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml";
|
||||
image = pkgs.fetchurl {
|
||||
url =
|
||||
"https://lds-img.finalfantasyxiv.com/h/d/gGA_a8kMXpsxZEOfW_MadG07_E.jpg";
|
||||
sha256 = "0d8b4031dnlrcd3wx63p19w5h5zc8z5fk2yqz0wv20m7gr62h8r0";
|
||||
};
|
||||
fonts = {
|
||||
monospace = {
|
||||
name = config.fontProfiles.monospace.family;
|
||||
package = config.fontProfiles.monospace.package;
|
||||
};
|
||||
};
|
||||
targets.wofi.enable = false;
|
||||
targets.kde.enable = false;
|
||||
targets.gtk.enable = false;
|
||||
};
|
||||
systemd.user.startServices = "sd-switch";
|
||||
xdg.mime.enable = true;
|
||||
}
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
{ ... }: { imports = [ ./global.nix ./features/desktop/font.nix ]; }
|
|
@ -2,13 +2,20 @@
|
|||
{ pkgs, ... }: {
|
||||
imports = [
|
||||
./global.nix
|
||||
./global.linux.nix
|
||||
./features/desktop
|
||||
./features/desktop/games
|
||||
./features/desktop/obs.nix
|
||||
./features/devel/js.nix
|
||||
./features/devel/java.nix
|
||||
./features/devel/rust.nix
|
||||
./features/devel/python.nix
|
||||
./features/devel/dbs.nix
|
||||
];
|
||||
|
||||
# Install Solaar, a management application for Logitech dongle devices
|
||||
home.packages = with pkgs; [ solaar ];
|
||||
# Install:
|
||||
# - Solaar, a management application for Logitech dongle devices
|
||||
# - Chatterino, for checking chat when live streaming
|
||||
home.packages = with pkgs; [ solaar chatterino2 ];
|
||||
|
||||
# ---------- ------
|
||||
# | HDMI-A-5 | | DP-5 |
|
||||
|
|
|
@ -35,7 +35,6 @@
|
|||
|
||||
# set up a keyring
|
||||
services.gnome.gnome-keyring.enable = true;
|
||||
security.pam.services.hyprland.enableGnomeKeyring = true;
|
||||
|
||||
# set up ausweisapp for online german government login
|
||||
programs.ausweisapp = {
|
||||
|
|
|
@ -1 +1 @@
|
|||
{ ... }: { imports = [ ./steam.nix ./flatpak.nix ]; }
|
||||
{ ... }: { imports = [ ./flatpak.nix ]; }
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
{ ... }: {
|
||||
security.pam.services.swaylock = { };
|
||||
services.blueman.enable = true;
|
||||
}
|
|
@ -5,6 +5,7 @@
|
|||
../services/postgres.nix
|
||||
../desktop
|
||||
../desktop/plasma.nix
|
||||
../desktop/steam.nix
|
||||
];
|
||||
|
||||
nixpkgs = { config = { allowUnfree = true; }; };
|
||||
|
@ -70,9 +71,6 @@
|
|||
};
|
||||
};
|
||||
|
||||
# hyprland stuff
|
||||
programs.hyprland = { enable = true; };
|
||||
|
||||
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
|
||||
system.stateVersion = "23.11";
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue