Compare commits

..

5 commits

11 changed files with 306 additions and 69 deletions

View file

@ -1,11 +1,9 @@
on:
schedule:
- cron: 0 */6 * * *
jobs:
UpdateFlake:
runs-on: native
steps:
- name: Check out repository code
uses: actions/checkout@v4

98
flake.lock generated
View file

@ -110,11 +110,11 @@
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1761596764,
"narHash": "sha256-KTL+8Fw1qAbqubZSHRMjO4HkILJWVdWTylqHXQ4VTBE=",
"lastModified": 1761686631,
"narHash": "sha256-OzyQkqtH4kenusXEquQvTHnAr/6lGVS2DqErIPlzCUs=",
"owner": "cachix",
"repo": "devenv",
"rev": "17560d064ba5e4fc946c0ea0ee7b31ec291e706f",
"rev": "b59500b629c08829825d4f4eca68169ea3a8821f",
"type": "github"
},
"original": {
@ -131,11 +131,11 @@
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
"lastModified": 1761633962,
"narHash": "sha256-QTA706q3zDi9yN7bwsOnj2cQj8FVi9x147A/2lR495U=",
"lastModified": 1761720242,
"narHash": "sha256-Zi9nWw68oUDMVOhf/+Z97wVbNV2K7eEAGZugQKqU7xw=",
"owner": "nix-community",
"repo": "fenix",
"rev": "abecdc70faee6ef5abf8b250795042a0cbe7070f",
"rev": "8e4d32f4cc12b3f106af6e4515b36ac046a1ec91",
"type": "github"
},
"original": {
@ -147,11 +147,11 @@
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1747046372,
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
"lastModified": 1761588595,
"narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
"rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5",
"type": "github"
},
"original": {
@ -503,11 +503,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1761440613,
"narHash": "sha256-eQTH5iTkEQptZqVGyTPgpMYL7zj6QkI/uGo+1/PkAQY=",
"lastModified": 1761663476,
"narHash": "sha256-rMapt12HqMDVo91bqojbiOh+l7UuqJ738rk1iu980qs=",
"owner": "helix-editor",
"repo": "helix",
"rev": "7c4ff9c39dbd3dd7d6e2cb3e26cb34212202bb1b",
"rev": "de0518d0e631f1984dc7229b76c2bdadf2bffe5d",
"type": "github"
},
"original": {
@ -523,11 +523,11 @@
]
},
"locked": {
"lastModified": 1761584077,
"narHash": "sha256-dISPEZahlfs5K6d58zR4akRRyogfE9P4WSyPPNT7HiE=",
"lastModified": 1761666354,
"narHash": "sha256-fHr+tIYBJccNF8QWqgowfRmEAtAMSt1deZIRNKL8A7c=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "e82585308aef3d4cc2c36c7b6946051c8cdf24ef",
"rev": "ca2ab1d877a24d5a437dad62f56b8b2c02e964e9",
"type": "github"
},
"original": {
@ -683,11 +683,11 @@
"xdph": "xdph"
},
"locked": {
"lastModified": 1761601789,
"narHash": "sha256-F8HDu+xAZ2GhYRZPTMbFgXfA6VI7pN95juP3/llCKx8=",
"lastModified": 1761733109,
"narHash": "sha256-sgZlcW1W6ioNFaMz+r4O52SLNywzRJiqRwBKRenvL6c=",
"owner": "hyprwm",
"repo": "Hyprland",
"rev": "309c3c78485781a28ad9f5bef48b09ecb3b81473",
"rev": "9eb82774e53dc02e4fa204a911cb4256cd21f429",
"type": "github"
},
"original": {
@ -713,11 +713,11 @@
]
},
"locked": {
"lastModified": 1761249285,
"narHash": "sha256-70dEwL5p3CB/00ODs2RHWUKTyafB+PF4Ld7IEMuO+no=",
"lastModified": 1761653710,
"narHash": "sha256-MhHSU9m/9HSckJ61OXcom/6F92NQf3s1QfLbRUApalc=",
"owner": "hyprwm",
"repo": "hyprland-plugins",
"rev": "81f6d1426537981fcbb921f8b5e470b1280ef8f3",
"rev": "e689220b1740aa99ca67fa06055792f82fa9ed85",
"type": "github"
},
"original": {
@ -889,11 +889,11 @@
"systems": "systems_2"
},
"locked": {
"lastModified": 1760023949,
"narHash": "sha256-fu0B4duamVdbkPio/czu1XhsPLRXUJpZLDrSk3nih4U=",
"lastModified": 1761675634,
"narHash": "sha256-Et1jNDB2d3e0b4okIKuyAMktECS+5hk+vMAA7X598ao=",
"owner": "hyprwm",
"repo": "hyprlock",
"rev": "36ec73f166d9434a3f27c96c575198906f77644a",
"rev": "98b86752fe4867bd14ef96a92ea788229af93130",
"type": "github"
},
"original": {
@ -1024,11 +1024,11 @@
]
},
"locked": {
"lastModified": 1760961269,
"narHash": "sha256-Udg6DnM6scJj+imbttJR7GQpG2WWeDZ1JOtySTY99M0=",
"lastModified": 1761728397,
"narHash": "sha256-PyRcsly7w12wg6Vjzkn5eLvRQgX+nzHU80xBVnwE7Eg=",
"owner": "nix-community",
"repo": "nh",
"rev": "e27508e06f74c7f03616150c1ac1431eaef7f443",
"rev": "149022d8973798f5ebb819fb2977b0260f049816",
"type": "github"
},
"original": {
@ -1045,11 +1045,11 @@
"rust-overlay": []
},
"locked": {
"lastModified": 1761460429,
"narHash": "sha256-pJeM23DGMD5AK4gdNaDM1qsIv87NYQJgEh2E8tRd7es=",
"lastModified": 1761721311,
"narHash": "sha256-fXBALdA4CKAYslcuamjzQZLUTCNBIKWybj+/2rwe3Z0=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "e6f3c538da0c646bda43fcde7ef7dc3b771e0c8b",
"rev": "6e8fd153395036c2daa7c214695ed9baf2409a2e",
"type": "github"
},
"original": {
@ -1072,11 +1072,11 @@
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
},
"locked": {
"lastModified": 1761623016,
"narHash": "sha256-C2+TErNmeHMCtodwVrMeA/uJg1GRdQbOntRI7DFullA=",
"lastModified": 1761724527,
"narHash": "sha256-nB500dSUaNBtOsu5JI1PDNmjuFD6Kdbkh648q0FoaIY=",
"owner": "sodiboo",
"repo": "niri-flake",
"rev": "f0bfe0aaaa51378ace7492850290f8d2db6cc7f3",
"rev": "1ff74954f559bb2da63e28b3fcffd3b09ec32842",
"type": "github"
},
"original": {
@ -1088,11 +1088,11 @@
"niri-unstable": {
"flake": false,
"locked": {
"lastModified": 1761460429,
"narHash": "sha256-pJeM23DGMD5AK4gdNaDM1qsIv87NYQJgEh2E8tRd7es=",
"lastModified": 1761721311,
"narHash": "sha256-fXBALdA4CKAYslcuamjzQZLUTCNBIKWybj+/2rwe3Z0=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "e6f3c538da0c646bda43fcde7ef7dc3b771e0c8b",
"rev": "6e8fd153395036c2daa7c214695ed9baf2409a2e",
"type": "github"
},
"original": {
@ -1127,16 +1127,16 @@
]
},
"locked": {
"lastModified": 1758763079,
"narHash": "sha256-Bx1A+lShhOWwMuy3uDzZQvYiBKBFcKwy6G6NEohhv6A=",
"lastModified": 1761648602,
"narHash": "sha256-H97KSB/luq/aGobKRuHahOvT1r7C03BgB6D5HBZsbN8=",
"owner": "cachix",
"repo": "nix",
"rev": "6f0140527c2b0346df4afad7497baa08decb929f",
"rev": "3e5644da6830ef65f0a2f7ec22830c46285bfff6",
"type": "github"
},
"original": {
"owner": "cachix",
"ref": "devenv-2.30.5",
"ref": "devenv-2.30.6",
"repo": "nix",
"type": "github"
}
@ -1163,11 +1163,11 @@
},
"nixos-hardware": {
"locked": {
"lastModified": 1760958188,
"narHash": "sha256-2m1S4jl+GEDtlt2QqeHil8Ny456dcGSKJAM7q3j/BFU=",
"lastModified": 1761669189,
"narHash": "sha256-INBZnPA9JzyDn+Fnni2250PbRzKx7Eafz0T2c7NhXiQ=",
"owner": "nixos",
"repo": "nixos-hardware",
"rev": "d6645c340ef7d821602fd2cd199e8d1eed10afbc",
"rev": "9c0ee5dfa186e10efe9b53505b65d22c81860fde",
"type": "github"
},
"original": {
@ -1447,11 +1447,11 @@
"rust-analyzer-src": {
"flake": false,
"locked": {
"lastModified": 1761606039,
"narHash": "sha256-rNsxpCKWzVNJ5FR71mpZFSEPxuvZfAQzcVpgfwgajQU=",
"lastModified": 1761686505,
"narHash": "sha256-jX6UrGS/hABDaM4jdx3+xgH3KCHP2zKHeTa8CD5myEo=",
"owner": "rust-lang",
"repo": "rust-analyzer",
"rev": "7c810e9994eff5b2b7a78ab0a656948c1e8dbf18",
"rev": "d08d54f3c10dfa41033eb780c3bddb50e09d30fc",
"type": "github"
},
"original": {
@ -1680,11 +1680,11 @@
"nixpkgs": "nixpkgs_7"
},
"locked": {
"lastModified": 1761535208,
"narHash": "sha256-E1PobJMiFmVUX2YdqYk/MpKb0LXavOYvlg8DCBBzlHc=",
"lastModified": 1761712008,
"narHash": "sha256-Nf2s59dLg6KDUV0omZqIlOGNUxw/Rl/KKXEXQGFCAlo=",
"owner": "0xc000022070",
"repo": "zen-browser-flake",
"rev": "79a94872a3e6993a051c4e22a2dcb02c1d088acf",
"rev": "1383ed38745d12f3896c996848d24c451643db58",
"type": "github"
},
"original": {

View file

@ -1,10 +1,6 @@
{
description = "All encompassing flake";
nixConfig = {
allow-import-from-derivation = true;
};
outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } (inputs.import-tree ./modules);
inputs = {
@ -75,6 +71,7 @@
niri-flake = {
url = "github:sodiboo/niri-flake";
# url = "github:Daholli/niri-flake/1067d35dd18f6a55f79873c944f1427a9eb7caa7";
inputs = {
niri-stable.follows = "niri";
nixpkgs.follows = "nixpkgs";

View file

@ -6,7 +6,6 @@ topLevel: {
environment.systemPackages = with pkgs; [
git
];
};
homeManager.cholli =

View file

@ -15,6 +15,7 @@
nerd-fonts.code-new-roman
nerd-fonts.fira-code
nerd-fonts.symbols-only
nerd-fonts.jetbrains-mono
fira
];

View file

@ -44,6 +44,7 @@
++ lib.optional config.services.hydra.enable "hydra hydra-www hydra-evaluator hydra-queue-runner";
in
{
nix-path = "nixpkgs=flake:nixpkgs";
experimental-features = "nix-command flakes";
http-connections = 50;
warn-dirty = false;
@ -53,6 +54,18 @@
trusted-users = users;
allowed-users = users;
allowed-uris = "github: https://github.com/ git+https://github.com/ gitlab: https://gitlab.com/ git+https://gitlab.com/";
substituters = [
"https://cache.lix.systems"
"https://nix-community.cachix.org"
"https://nixcache.christophhollizeck.dev"
"https://hyprland.cachix.org"
];
trusted-public-keys = [
"cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"christophhollizeck.dev:7pPAvm9xqFQB8FDApVNL6Tii1Jsv+Sj/LjEIkdeGhbA="
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
];
}
// (lib.optionalAttrs config.programs.direnv.enable {
keep-outputs = true;

View file

@ -13,9 +13,17 @@
in
{
security.pam.services.gdm.enableGnomeKeyring = true;
services.displayManager.gdm = {
enable = true;
wayland = true;
};
environment = {
systemPackages = [
systemPackages = with pkgs; [
zenbrowser
sourcegit
];
sessionVariables = {

View file

@ -12,10 +12,57 @@
package = inputs.niri-flake.packages.${pkgs.system}.niri-unstable;
};
environment.systemPackages = [
pkgs.alacritty
pkgs.fuzzel
environment.systemPackages = with pkgs; [
kitty
fuzzel
inputs.niri-flake.packages.${pkgs.system}.xwayland-satellite-unstable
wl-clipboard
xsel
mako
waybar
];
xdg = {
autostart.enable = true;
portal = {
enable = true;
extraPortals = [
pkgs.xdg-desktop-portal-gnome
pkgs.xdg-desktop-portal-gtk
];
xdgOpenUsePortal = true;
config = {
common = {
default = [ "*" ];
"org.freedesktop.impl.portal.Secret" = [ "gnome-keyring" ];
};
niri = {
default = [
"gnome"
"gtk"
];
"org.freedesktop.impl.portal.FileChooser" = [ "gtk" ];
"org.freedesktop.impl.portal.OpenURI" = [ "gtk" ];
};
};
};
};
environment.sessionVariables = {
NIXOS_OZONE_WL = "1"; # Hint electron apps to use wayland
ELECTRON_OZONE_PLATFORM_HINT = "auto";
XDG_SESSION_TYPE = "wayland";
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
QT_QPA_PLATFORM = "wayland;xcb";
};
};
homeManager.cholli =
@ -28,13 +75,23 @@
...
}:
{
config = lib.mkIf (osConfig.networking.hostName == "yggdrasil" && osConfig.programs.niri.enable) {
config = lib.mkIf (osConfig.networking.hostName == "yggdrasil") {
programs.niri.settings = {
prefer-no-csd = true;
input = {
keyboard = {
xkb = {
layout = "us";
rules = "escape:nocaps";
};
numlock = true;
};
touchpad = {
enable = false;
};
};
outputs."DP-1" = {
@ -49,6 +106,9 @@
height = 1080;
};
transform.rotation = 90;
# layout = {
# default-column-width.proportion = 1.0;
# };
};
layout = {
@ -63,7 +123,6 @@
{ proportion = 1. / 3.; }
{ proportion = 1. / 2.; }
{ proportion = 2. / 3.; }
];
focus-ring = {
@ -81,8 +140,56 @@
screenshot-path = "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png";
# block 1pass from screenshots and window capture
# TODO: block 1pass from screenshots and window capture
# TODO: move windows to workspaces where I expect them
window-rules = [
{
excludes = [ ];
clip-to-geometry = true;
geometry-corner-radius = {
top-left = 15.0;
top-right = 15.0;
bottom-left = 15.0;
bottom-right = 15.0;
};
}
{
matches = [ { is-window-cast-target = true; } ];
focus-ring = {
active.color = "#f38ba8";
inactive.color = "#7d0d2d";
};
border = {
inactive.color = "#7d0d2d";
};
shadow = {
color = "#7d0d2d70";
};
tab-indicator = {
active.color = "#f38ba8";
inactive.color = "#7d0d2d";
};
}
{
matches = [
{
app-id = "discord";
}
{
app-id = "1Password";
}
{
app-id = "steam";
title = "Friends List.*";
}
];
open-on-output = "HDMI-A-1";
default-column-width.proportion = 1.0;
}
];
binds =
@ -98,11 +205,21 @@
};
}) workspaces
);
move-to-workspaces = builtins.listToAttrs (
map (num: {
name = "Mod+Ctrl+${toString num}";
value = {
action.move-window-to-workspace = num;
};
}) workspaces
);
in
lib.mkMerge [
{
"Mod+Shift+Slash".action = actions.show-hotkey-overlay;
"Mod+Shift+E".action = actions.quit;
"Ctrl+Alt+Delete".action = actions.quit;
"Mod+Return".action.spawn = "${lib.getExe pkgs.kitty}";
"Mod+D".action.spawn = "${lib.getExe pkgs.fuzzel}";
@ -118,6 +235,99 @@
repeat = false;
};
"Mod+J" = {
action = actions.focus-window-or-workspace-down;
};
"Mod+K" = {
action = actions.focus-window-or-workspace-up;
};
"Mod+Ctrl+J" = {
action = actions.move-window-down-or-to-workspace-down;
};
"Mod+Ctrl+K" = {
action = actions.move-window-up-or-to-workspace-up;
};
"Mod+Down" = {
action = actions.focus-window-or-workspace-down;
};
"Mod+Up" = {
action = actions.focus-window-or-workspace-up;
};
"Mod+Ctrl+Down" = {
action = actions.move-window-down-or-to-workspace-down;
};
"Mod+Ctrl+Up" = {
action = actions.move-window-up-or-to-workspace-up;
};
"Mod+H" = {
action = actions.focus-column-or-monitor-left;
};
"Mod+L" = {
action = actions.focus-column-or-monitor-right;
};
"Mod+Ctrl+H" = {
action = actions.move-column-left-or-to-monitor-left;
};
"Mod+Ctrl+L" = {
action = actions.move-column-right-or-to-monitor-right;
};
"Mod+Left" = {
action = actions.focus-column-or-monitor-left;
};
"Mod+Right" = {
action = actions.focus-column-or-monitor-right;
};
"Mod+Ctrl+Left" = {
action = actions.move-column-left-or-to-monitor-left;
};
"Mod+Ctrl+Right" = {
action = actions.move-column-right-or-to-monitor-right;
};
"Mod+WheelScrollDown" = {
action = actions.focus-column-right;
};
"Mod+WheelScrollUp" = {
action = actions.focus-column-left;
};
"Mod+Shift+WheelScrollDown" = {
action = actions.focus-workspace-down;
cooldown-ms = 150;
};
"Mod+Shift+WheelScrollUp" = {
action = actions.focus-workspace-up;
cooldown-ms = 150;
};
# Window Sizes
"Mod+BracketLeft".action = actions.consume-or-expel-window-left;
"Mod+BracketRight".action = actions.consume-or-expel-window-right;
"Mod+Comma".action = actions.consume-window-into-column;
"Mod+Period".action = actions.expel-window-from-column;
"Mod+R".action = actions.switch-preset-column-width;
"Mod+Shift+R".action = actions.switch-preset-window-height;
"Mod+Ctrl+R".action = actions.reset-window-height;
"Mod+F".action = actions.fullscreen-window;
"Mod+Shift+F".action = actions.maximize-column;
"Mod+Ctrl+F".action = actions.expand-column-to-available-width;
"Mod+C".action = actions.center-column;
"Mod+V".action = actions.toggle-window-floating;
# Xwayland keyboard stuff
"Mod+Shift+C".action = actions.spawn [
"sh"
"-c"
"env DISPLAY=:0 xsel -ob | wl-copy"
];
"Mod+Shift+V".action = actions.spawn [
"sh"
"-c"
"wl-paste -n | env DISPLAY=:0 xsel -ib"
];
"XF86AudioRaiseVolume" = {
action.spawn = [
"wpctl"
@ -156,8 +366,18 @@
};
}
focus-workspaces
move-to-workspaces
];
spawn-at-startup = [
{ argv = [ "waybar" ]; }
{ argv = [ "zen-beta" ]; }
{ argv = [ "steam" ]; }
{ argv = [ "obsidian" ]; }
{ argv = [ "discord" ]; }
{ argv = [ "1password" ]; }
];
};
};

View file

@ -24,6 +24,7 @@ in
diebahn
path-of-building
termscp
];
services.teamviewer.enable = true;
@ -53,7 +54,7 @@ in
amdgpu
# dektops
hyprland
# hyprland
niri
# apps
@ -99,6 +100,5 @@ in
}
];
};
};
}

View file

@ -17,6 +17,7 @@
alsa.support32Bit = true;
pulse.enable = true;
# TODO: make sure that `wpctl settings --save bluetooth.autoswitch-to-headset-profile false` is set since the things below are not working
wireplumber.configPackages = [
(pkgs.writeTextDir "share/wireplumber/wireplumber.conf.d/11-bluetooth-policy.conf" ''
wireplumber.settings = {

View file

@ -9,10 +9,10 @@
General = {
Experimental = true;
KernelExperimental = true;
Enable = "Source,Sink,Media,Socket";
Enable = "Sink,Media,Socket";
Disable = "Handsfree,Headset,Source";
};
};
};
};
}