Compare commits

...
36 Commits
Author SHA1 Message Date
jashton 777c18eb76 nixos: gen 23 @ lilac — 2026-09-02 23:05 26.05.20260814.02e0898 (Yarara) ----- s 2026-09-02 23:05:36 -06:00
jashton cc8b3ec1b0 nixos: gen 22 @ lilac — 2026-09-02 22:51 26.05.20260814.02e0898 (Yarara) ----- 2026-09-02 22:51:43 -06:00
jashton 317fe77421 nixos: gen 246 @ violet — 2026-09-02 08:39 26.05.20260814.02e0898 (Yarara) ----- 2026-09-02 12:54:39 -06:00
jashton 744583a0e8 nixos: gen 21 @ lilac — 2026-09-01 11:37 26.05.20260814.02e0898 (Yarara) ----- 2026-09-01 11:38:03 -06:00
jashton 2e7773cf4b adding eclipse java support to neovim 2026-09-01 11:00:07 -06:00
jashton 7081a75fb0 nixos: gen 20 @ lilac — 2026-08-27 14:17 26.05.20260814.02e0898 (Yarara) ----- 2026-08-27 14:18:01 -06:00
jashton 134f22b70c nixos: gen 19 @ lilac — 2026-08-26 16:19 26.05.20260814.02e0898 (Yarara) ----- adding thunderbird 2026-08-26 16:19:29 -06:00
jashton 342f2634f5 nixos: gen 18 @ lilac — 2026-08-25 12:30 26.05.20260814.02e0898 (Yarara) ----- 2026-08-25 12:30:58 -06:00
jashton a9586cca54 nixos: gen 244 @ violet — 2026-08-25 10:43 26.05.20260814.02e0898 (Yarara) ----- 2026-08-25 10:43:59 -06:00
jashton 6f3bbe89f4 nixos: gen 17 @ lilac — 2026-08-24 17:33 26.05.20260814.02e0898 (Yarara) ----- 2026-08-24 17:33:55 -06:00
jashton 3d309eef56 nixos: gen 16 @ lilac — 2026-08-23 17:04 26.05.20260814.02e0898 (Yarara) ----- 2026-08-23 17:04:09 -06:00
jashton 5b7a2368da nixos: gen 15 @ lilac — 2026-08-22 21:31 26.05.20260814.02e0898 (Yarara) ----- 2026-08-22 21:31:33 -06:00
jashton ffceb0d524 nixos: gen 22 @ lavender — 2026-08-22 21:11 26.05.20260814.02e0898 (Yarara) ----- 2026-08-22 21:11:43 -06:00
jashton ab50357d75 nixos: gen 14 @ lilac — 2026-08-22 15:25 26.05.20260814.02e0898 (Yarara) ----- 2026-08-22 15:25:42 -06:00
jashton 52a462e8e2 nixos: gen 13 @ lilac — 2026-08-22 15:02 26.05.20260814.02e0898 (Yarara) ----- 2026-08-22 15:02:33 -06:00
jashton 28e071453e nixos: gen 12 @ lilac — 2026-08-22 13:00 26.05.20260814.02e0898 (Yarara) ----- 2026-08-22 13:00:54 -06:00
jashton df37691ba0 nixos: gen 241 @ violet — 2026-08-22 12:54 26.05.20260814.02e0898 (Yarara) ----- 2026-08-22 12:55:06 -06:00
jashton 832c07352b nixos: gen 12 @ lilac — 2026-08-22 12:42 26.05.20260814.02e0898 (Yarara) ----- adding IP over Thunderbolt for lan-mouse interoperability between Framework 13 Pro and ThinkPad X12 Detachable 2026-08-22 12:42:46 -06:00
jashton 7235c662c4 nixos: gen 11 @ lilac — 2026-08-19 12:11 26.05.20260814.02e0898 (Yarara) ----- 2026-08-19 12:11:30 -06:00
jashton ad5edd23e8 nixos: gen 10 @ lilac — 2026-08-19 12:09 26.05.20260814.02e0898 (Yarara) ----- removing hot corners and adding backdrop color to niri. 2026-08-19 12:09:57 -06:00
jashton 3429f8f2b7 nixos: gen 9 @ lilac — 2026-08-18 12:05 26.05.20260814.02e0898 (Yarara) ----- installing eclipse 2026-08-18 12:11:20 -06:00
jashton cefb0357f5 nixos: gen 8 @ lilac — 2026-08-18 11:51 26.05.20260814.02e0898 (Yarara) ----- adding framework-tool to lilac 2026-08-18 11:51:31 -06:00
jashton ee22facd4c nixos: gen 7 @ lilac — 2026-08-16 17:55 26.05.20260814.02e0898 (Yarara) ----- 2026-08-16 17:55:36 -06:00
jashton 38c810382a nixos: gen 6 @ lilac — 2026-08-16 17:51 26.05.20260814.02e0898 (Yarara) ----- 2026-08-16 17:51:23 -06:00
jashton e4e7dc43af nixos: gen 18 @ lavender — 2026-08-16 17:11 26.05.20260814.02e0898 (Yarara) ----- 2026-08-16 17:11:44 -06:00
jashton 1ab5ac1478 nixos: gen 17 @ lavender — 2026-08-16 17:00 26.05.20260814.02e0898 (Yarara) ----- 2026-08-16 17:00:34 -06:00
jashton bef59301db nixos: gen 5 @ lilac — 2026-08-16 15:20 26.05.20260814.02e0898 (Yarara) ----- 2026-08-16 15:22:57 -06:00
jashton ab1bee9783 nixos: gen 4 @ lilac — 2026-08-16 15:09 26.05.20260814.02e0898 (Yarara) ----- 2026-08-16 15:09:17 -06:00
jashton f658e54ec7 nixos: gen 3 @ lilac — 2026-08-16 14:34 26.05.20260812.9f78f44 (Yarara) ----- 2026-08-16 14:34:48 -06:00
jashton 3a7f539b30 nixos: gen 238 @ violet — 2026-08-15 01:43 26.05.20260812.9f78f44 (Yarara) ----- adding deskflow ports to firewall 2026-08-15 01:43:54 -06:00
jashton f44f84324a updating secrets.yaml for Framework 13 Pro re-install with PCIe 5 NVMe SSD. 2026-08-15 00:18:20 -06:00
jashton 6884d5e1e7 adding ssh pub key age 2026-08-15 00:12:34 -06:00
jashton 3143df8364 nixos: gen 4 @ lilac — 2026-08-13 22:17 26.05.20260812.9f78f44 (Yarara) ----- Added deskflow 2026-08-13 22:17:56 -06:00
jashton bf3cde8e73 nixos: gen 3 @ lilac — 2026-08-13 21:23 26.05.20260812.9f78f44 (Yarara) ----- Enabling bluetooth on Framework 13 Pro. 2026-08-13 21:23:26 -06:00
jashton 07dbe73d82 updating secrets.yaml 2026-08-13 19:49:57 -06:00
jashton b64d4b5bd1 setting up Framework 13 Pro 2026-08-13 19:24:51 -06:00
19 changed files with 477 additions and 166 deletions
+2
View File
@@ -1,9 +1,11 @@
keys: keys:
- &lavender age1az6l56h4m38jw2hm7t7a99wp9f88s845sg29grtmdpz72lrkc5cq66kmcv - &lavender age1az6l56h4m38jw2hm7t7a99wp9f88s845sg29grtmdpz72lrkc5cq66kmcv
- &violet age1cd40qmufxzvw8dkml9340czqfq6ta3kxpjfj47jpavwn2t7ghywsxhqz79 - &violet age1cd40qmufxzvw8dkml9340czqfq6ta3kxpjfj47jpavwn2t7ghywsxhqz79
- &lilac age1dsf6z3hcr8qrtptdk6xyky9c99tdpjyrnuaawv4atme9rffhps9qpwdn6j
creation_rules: creation_rules:
- path_regex: secrets/[^/]+\.yaml$ - path_regex: secrets/[^/]+\.yaml$
key_groups: key_groups:
- age: - age:
- *lavender - *lavender
- *violet - *violet
- *lilac
Generated
+49 -27
View File
@@ -7,11 +7,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1784433272, "lastModified": 1786198506,
"narHash": "sha256-5Gz3pC/rcn8LLwzLZZhrpPMqY+PDdUzoFtXV3uWoitg=", "narHash": "sha256-u4tdLMzKCV2R0wn4eFtk4LKH0RmzzCkxeYqCYs/P3eg=",
"owner": "AvengeMedia", "owner": "AvengeMedia",
"repo": "danksearch", "repo": "danksearch",
"rev": "4b4905e2ef3454230fb648d2139f3139b742b0eb", "rev": "632c2909bb1bb534b574c22c1347de0e6521e58a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -49,11 +49,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1784857968, "lastModified": 1786847024,
"narHash": "sha256-83haLQzxrk6sCX76iQlloHWQ+TD0RKsK+LdVTMikNwk=", "narHash": "sha256-d1vE3V5zzLQPCAGy6HQd6EFh4eG30KdTMUON4ZizTPY=",
"owner": "AvengeMedia", "owner": "AvengeMedia",
"repo": "dms-plugin-registry", "repo": "dms-plugin-registry",
"rev": "78d478f34ad6790faea447c37d16bab63e1d3570", "rev": "2cde930aa2d735c3d1dac10096bb7d317a15aaa6",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -85,11 +85,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1784350909, "lastModified": 1785119570,
"narHash": "sha256-ZWyzLbS1yKUTeFJLmdVuWNnHttL333/ldJbEE+KzCrM=", "narHash": "sha256-Rgs2xKnGLFWQscxUaXX07oyZeuMDOHEbqDOsgliLFGM=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "4ce190229c73d44536caa7072f6308fb2d8feeb3", "rev": "d4fd24667c8cbef124bb70a20380cab75ec8474d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -109,11 +109,11 @@
"xwayland-satellite-unstable": "xwayland-satellite-unstable" "xwayland-satellite-unstable": "xwayland-satellite-unstable"
}, },
"locked": { "locked": {
"lastModified": 1784874881, "lastModified": 1785857305,
"narHash": "sha256-u4jhSIf/Un0qZB+Cn3hTTaHSI20XeAxYbA5o4faqdJs=", "narHash": "sha256-25q05zpF1sqOCxPPUG9DPPGd+EDW7SiAOWCzBWRS7r0=",
"owner": "sodiboo", "owner": "sodiboo",
"repo": "niri-flake", "repo": "niri-flake",
"rev": "ef7a2a3d719af46b906c22a3ebfb7d65627b2cd2", "rev": "9ee3e13b60643448228353097880521658b2fe0e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -142,11 +142,11 @@
"niri-unstable": { "niri-unstable": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1784570726, "lastModified": 1785701241,
"narHash": "sha256-9EMn69JBcFWFgUM7f0VBAX+jBby5b9H3M59U75+5yI4=", "narHash": "sha256-ircVOzPWRircI39ac/tqJajr5OoJxEVrDlBb05TULEk=",
"owner": "YaLTeR", "owner": "YaLTeR",
"repo": "niri", "repo": "niri",
"rev": "7f26c3ee804fb6ed458ef7fb0e3c794f14e0b3bc", "rev": "feb3e43f1475e0865bb89cbd1e898b34d1d2ccf6",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -155,13 +155,34 @@
"type": "github" "type": "github"
} }
}, },
"nixos-hardware": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1786867632,
"narHash": "sha256-ez+ubZlA1RtdjCB18a6zJ9M4u8qoPDy08EcnsW5M3Xw=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "ff17823245ab9ff7bcae6acf950bd89cba82c38c",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "master",
"repo": "nixos-hardware",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1784796856, "lastModified": 1785828668,
"narHash": "sha256-wWFrV5/Qbm+lyt5x20E/bSbfJiGKMo4RCxZV8cl/WZI=", "narHash": "sha256-8fsyqeO+mJqvIzeO4xIpgJe/f7MTbbVTEC6RT6WSXNs=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "e2587caef70cea85dd97d7daab492899902dbf5d", "rev": "e72e4f299401a3689d4b3d5fc6496b11db7064eb",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -189,11 +210,11 @@
}, },
"nixpkgs-unstable": { "nixpkgs-unstable": {
"locked": { "locked": {
"lastModified": 1784796856, "lastModified": 1786862985,
"narHash": "sha256-wWFrV5/Qbm+lyt5x20E/bSbfJiGKMo4RCxZV8cl/WZI=", "narHash": "sha256-FBJRXmbGXiSUDvYEbfLYRkckayyZ6SK1UEqhCrIZ2Cs=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "e2587caef70cea85dd97d7daab492899902dbf5d", "rev": "e5bdc4a41d4c072fe1e3787eaa0320a384741d44",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -205,11 +226,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1784856561, "lastModified": 1786711500,
"narHash": "sha256-J+Bx1Z6Oeoj2FgnBhRMKyUhhtDoOpTgXYaVLZpDjW4A=", "narHash": "sha256-QvnceIGTBeDvDd9oCn+GvdsnkquliuwbVgpiRH68qaQ=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "597283ad8aa0b331c788e97c4c262d58877074ef", "rev": "02e08985a27c65ffd33d434eeb2e660a2e4dc84d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -226,6 +247,7 @@
"dms-plugin-registry": "dms-plugin-registry", "dms-plugin-registry": "dms-plugin-registry",
"home-manager": "home-manager", "home-manager": "home-manager",
"niri": "niri", "niri": "niri",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_2", "nixpkgs": "nixpkgs_2",
"nixpkgs-unstable": "nixpkgs-unstable", "nixpkgs-unstable": "nixpkgs-unstable",
"sops-nix": "sops-nix", "sops-nix": "sops-nix",
@@ -239,11 +261,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1783174389, "lastModified": 1786629091,
"narHash": "sha256-aCWC8ngycU7OdJrU2+Je3qf+1a2ykuBvpPhZT/9tXMc=", "narHash": "sha256-gkig4nPi1CWc4Z50GBsjE4ygSE7hMpl/TwID2an2Cck=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "f1406619a3884cd5c47992a70b8b35c9c0fcb4c9", "rev": "a8627b21b9107c5711c96b84f32a9a4b3d45295f",
"type": "github" "type": "github"
}, },
"original": { "original": {
+33 -1
View File
@@ -36,9 +36,14 @@
url = "github:AvengeMedia/danksearch"; url = "github:AvengeMedia/danksearch";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
nixos-hardware = {
url = "github:NixOS/nixos-hardware/master";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = { nixpkgs, home-manager, sops-nix, niri, dms, dms-plugin-registry, danksearch, wvkbd-src, ... }@inputs: { outputs = { nixpkgs, home-manager, sops-nix, niri, dms, dms-plugin-registry, danksearch, wvkbd-src, nixos-hardware, ... }@inputs: {
nixosConfigurations = { nixosConfigurations = {
violet = nixpkgs.lib.nixosSystem { violet = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
@@ -67,6 +72,33 @@
]; ];
}; };
lilac = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
./hosts/lilac/default.nix
niri.nixosModules.niri
dms-plugin-registry.nixosModules.default
sops-nix.nixosModules.sops
nixos-hardware.nixosModules.framework-intel-core-ultra-series3
home-manager.nixosModules.home-manager {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = { inherit inputs; };
home-manager.users.jashton = {
imports = [
./home/jashton.nix
danksearch.homeModules.default
];
};
}
];
};
lavender = nixpkgs.lib.nixosSystem { lavender = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
specialArgs = { inherit inputs; }; specialArgs = { inherit inputs; };
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 MiB

+84 -87
View File
@@ -36,7 +36,6 @@ let
in in
{ {
xdg.portal = { xdg.portal = {
enable = true; enable = true;
# Use gtk or kde based on your preferred file picker dialog # Use gtk or kde based on your preferred file picker dialog
@@ -48,95 +47,93 @@ in
extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
}; };
programs.niri = { #programs.niri.enable = true;
settings = { xdg.configFile."niri/config.kdl".text = lib.mkForce ''
# Autostart DMS if you prefer launching it directly from Niri instead of systemd input {
spawn-at-startup = [ keyboard {
{ command = [ "dms" "run" ]; } xkb {
{ command = [ "${launch-wvkbd}/bin/launch-wvkbd" ]; } layout "us"
{ command = [ "${launch-lisgd}/bin/launch-lisgd" ]; } # Spawns the daemon model ""
]; rules ""
variant ""
hotkey-overlay = { }
skip-at-startup = true; repeat-delay 600
}; repeat-rate 25
track-layout "global"
input = {
keyboard.xkb.layout = "us";
touchpad = {
tap = true;
natural-scroll = true;
};
};
layout = {
gaps = 8;
center-focused-column = "never";
default-column-width.proportion = 1.0;
border.enable = false;
#tab-indicator.corner-radius = 18.0;
focus-ring = {
enable = false;
width = 2;
};
};
prefer-no-csd = true;
window-rules = [
{ # All windows
geometry-corner-radius = {
bottom-left = 25.0;
bottom-right = 25.0;
top-right = 25.0;
top-left = 25.0;
};
draw-border-with-background = true;
clip-to-geometry = true;
} }
]; touchpad {
tap
natural-scroll
}
}
screenshot-path "~/media/pics/screenshots/%Y-%m-%d %H-%M-%S.png"
prefer-no-csd
layout {
gaps 8
struts {
left 0
right 0
top 0
bottom 0
}
focus-ring { off; }
border { off; }
default-column-width { proportion 1.000000; }
center-focused-column "never"
}
cursor {
xcursor-theme "default"
xcursor-size 24
}
hotkey-overlay { skip-at-startup; }
binds {
Ctrl+Print { screenshot-screen; }
Mod+F { fullscreen-window; }
Mod+H { focus-column-left; }
Mod+J { focus-window-down; }
Mod+K { focus-window-up; }
Mod+L { focus-column-right; }
Mod+N { focus-workspace-down; }
Mod+P { spawn "pkill" "-RTMIN" "wvkbd-mobintl"; }
Mod+Return { spawn "alacritty"; }
Mod+Shift+E { quit; }
Mod+Shift+H { move-column-left; }
Mod+Shift+J { move-column-to-workspace-down; }
Mod+Shift+K { move-column-to-workspace-up; }
Mod+Shift+L { move-column-right; }
Mod+Shift+P { toggle-overview; }
Mod+Space { spawn "dms" "ipc" "spotlight" "toggle"; }
Mod+U { focus-workspace-up; }
Mod+X { close-window; }
Print { screenshot; }
XF86AudioLowerVolume { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05-"; }
XF86AudioMute { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; }
XF86AudioRaiseVolume { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05+"; }
XF86MonBrightnessDown { spawn "dms" "ipc" "call" "brightness" "decrement" "5" ""; }
XF86MonBrightnessUp { spawn "dms" "ipc" "call" "brightness" "increment" "5" ""; }
}
spawn-at-startup "dms" "run"
spawn-at-startup "/nix/store/b1kxyzg5r6644mcmjh8jwsb8rinqzsw8-launch-wvkbd/bin/launch-wvkbd"
spawn-at-startup "/nix/store/l9k161qcs6ypzzbicjhkn8b203r610j6-launch-lisgd/bin/launch-lisgd"
window-rule {
draw-border-with-background true
geometry-corner-radius 25.000000 25.000000 25.000000 25.000000
clip-to-geometry true
}
# Vim Keybindings & Built-in Features overview {
binds = with config.lib.niri.actions; { backdrop-color "#987CA7"
# Launchers & Session Control }
"Mod+Return".action.spawn = [ "alacritty" ];
"Mod+P".action.spawn = [ "pkill" "-RTMIN" "wvkbd-mobintl" ];
"Mod+Space".action.spawn = [ "dms" "ipc" "spotlight" "toggle" ];
"Mod+X".action.close-window = [];
"Mod+F".action.fullscreen-window = [];
"Mod+Shift+E".action.quit = [];
"Mod+Shift+P".action.toggle-overview = [];
# Vim Focus Movement gestures {
"Mod+H".action.focus-column-left = []; hot-corners {
"Mod+J".action.focus-window-down = []; off
"Mod+K".action.focus-window-up = []; }
"Mod+L".action.focus-column-right = []; }
# Workspace Navigation include "/home/jashton/.config/niri/dms/outputs.kdl"
"Mod+N".action.focus-workspace-down = []; include "/home/jashton/.config/niri/dms/binds.kdl"
"Mod+U".action.focus-workspace-up = [];
# Vim Window Reordering spawn-at-startup "steam"
"Mod+Shift+H".action.move-column-left = []; '';
"Mod+Shift+L".action.move-column-right = [];
"Mod+Shift+J".action.move-column-to-workspace-down = [];
"Mod+Shift+K".action.move-column-to-workspace-up = [];
# Volume & Brightness Media Controls
"XF86AudioRaiseVolume".action.spawn = [ "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05+" ];
"XF86AudioLowerVolume".action.spawn = [ "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05-" ];
"XF86AudioMute".action.spawn = [ "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle" ];
"XF86MonBrightnessUp".action.spawn = [ "dms" "ipc" "call" "brightness" "increment" "5" "" ];
"XF86MonBrightnessDown".action.spawn = [ "dms" "ipc" "call" "brightness" "decrement" "5" "" ];
# Screenshots
"Print".action.screenshot = [];
"Ctrl+Print".action.screenshot-screen = [];
};
};
};
} }
+24 -1
View File
@@ -43,14 +43,17 @@ in
antigravity antigravity
asciinema asciinema
discord discord
eclipses.eclipse-java
ffmpeg ffmpeg
gemini-cli gemini-cli
libreoffice libreoffice
mc
opencode opencode
pdftk pdftk
prismlauncher
scrot scrot
signal-desktop
spotify spotify
thunderbird
vlc vlc
wtype wtype
xwayland-satellite xwayland-satellite
@@ -108,6 +111,23 @@ in
''; '';
}; };
systemd.user.services.lan-mouse = {
Unit = {
Description = "Lan Mouse Daemon";
After = [ "graphical-session.target" ];
PartOf = [ "graphical-session.target" ];
};
Install = {
WantedBy = [ "graphical-session.target" ];
};
Service = {
# The --daemon flag ensures it runs silently in the background without opening the GUI
ExecStart = "${pkgs.lan-mouse}/bin/lan-mouse --daemon";
Restart = "on-failure";
RestartSec = "5";
};
};
programs.ssh = { programs.ssh = {
enable = true; enable = true;
matchBlocks = { matchBlocks = {
@@ -120,6 +140,9 @@ in
"violet" = { "violet" = {
hostname = "100.101.100.84"; hostname = "100.101.100.84";
}; };
"lilac" = {
hostname = "100.82.51.88";
};
}; };
}; };
+3 -1
View File
@@ -20,8 +20,10 @@
}; };
colors = { colors = {
draw_bold_text_with_bright_colors = true;
primary = { primary = {
background = "#08090b"; # Black background = "#1e1f21"; # Carbon Black
foreground = "#8d739c"; # Vintage Lavender 1 foreground = "#8d739c"; # Vintage Lavender 1
}; };
+99
View File
@@ -85,6 +85,96 @@
delete = { text = "_" }, delete = { text = "_" },
}, },
}) })
-- Java indentation must match Eclipse's formatter, not your 2-space default.
vim.api.nvim_create_autocmd("FileType", {
pattern = "java",
callback = function()
vim.bo.expandtab = false
vim.bo.tabstop = 4
vim.bo.shiftwidth = 4
vim.bo.softtabstop = 4
end,
})
local cmp = require("cmp")
local luasnip = require("luasnip")
cmp.setup({
snippet = { expand = function(a) luasnip.lsp_expand(a.body) end },
mapping = cmp.mapping.preset.insert({
["<C-Space>"] = cmp.mapping.complete(),
["<CR>"] = cmp.mapping.confirm({ select = false }),
["<C-n>"] = cmp.mapping.select_next_item(),
["<C-p>"] = cmp.mapping.select_prev_item(),
}),
sources = {
{ name = "nvim_lsp" },
{ name = "luasnip" },
{ name = "buffer" },
{ name = "path" },
},
})
local capabilities = require("cmp_nvim_lsp").default_capabilities()
-- .project and .classpath come first so a repo containing several
-- assignments resolves to the assignment, not the repo root.
local root_markers = { ".project", ".classpath", "pom.xml", "build.gradle", ".git" }
local function start_jdtls()
local jdtls = require("jdtls")
local root_dir = require("jdtls.setup").find_root(root_markers)
if not root_dir or root_dir == "" then return end
local project_name = vim.fn.fnamemodify(root_dir, ":p:h:t")
local workspace = vim.fn.stdpath("cache") .. "/jdtls-workspaces/" .. project_name
local java_settings = {
configuration = {
updateBuildConfiguration = "interactive",
runtimes = {
{ name = "JavaSE-21", path = os.getenv("JAVA_HOME"), default = true },
},
},
-- Keep a stray pom.xml from overriding the Eclipse project model.
-- Flip these on if a course actually requires Maven or Gradle.
import = {
maven = { enabled = false },
gradle = { enabled = false },
},
signatureHelp = { enabled = true },
eclipse = { downloadSources = true },
}
-- If the repo carries an exported Eclipse formatter profile, use it verbatim.
local formatter = root_dir .. "/.settings/eclipse-formatter.xml"
if vim.uv.fs_stat(formatter) then
java_settings.format = { settings = { url = formatter } }
end
jdtls.start_or_attach({
cmd = { "jdtls", "-data", workspace },
root_dir = root_dir,
capabilities = capabilities,
settings = { java = java_settings },
init_options = { bundles = {} },
on_attach = function(_, bufnr)
local map = function(k, f) vim.keymap.set("n", k, f, { buffer = bufnr, silent = true }) end
map("gd", vim.lsp.buf.definition)
map("gr", vim.lsp.buf.references)
map("K", vim.lsp.buf.hover)
map("<leader>rn", vim.lsp.buf.rename)
map("<leader>ca", vim.lsp.buf.code_action)
map("<leader>f", function() vim.lsp.buf.format({ async = true }) end)
map("<leader>oi", require("jdtls").organize_imports)
end,
})
end
vim.api.nvim_create_autocmd("FileType", {
pattern = "java",
callback = start_jdtls,
})
''; '';
plugins = with pkgs.vimPlugins; [ plugins = with pkgs.vimPlugins; [
@@ -95,6 +185,15 @@
{ plugin = lualine-nvim; } { plugin = lualine-nvim; }
{ plugin = neocord; } { plugin = neocord; }
{ plugin = gitsigns-nvim; } { plugin = gitsigns-nvim; }
{ plugin = nvim-jdtls; }
{ plugin = nvim-cmp; }
{ plugin = cmp-nvim-lsp; }
{ plugin = cmp-buffer; }
{ plugin = cmp-path; }
{ plugin = luasnip; }
{ plugin = cmp_luasnip; }
{ plugin = (nvim-treesitter.withPlugins (p: [ p.java p.xml p.nix p.lua ])); }
]; ];
}; };
} }
+5
View File
@@ -9,4 +9,9 @@
networking.hostName = "lavender"; networking.hostName = "lavender";
system.stateVersion = "26.05"; system.stateVersion = "26.05";
hardware.graphics = {
enable = true;
enable32Bit = true;
};
} }
+45
View File
@@ -0,0 +1,45 @@
{ config, pkgs, ... }:
{
imports = [
./hardware.nix
../../system
];
networking.hostName = "lilac";
services.fwupd.enable = true;
services.fprintd.enable = true;
services.hardware.bolt.enable = true;
system.stateVersion = "26.05";
environment.systemPackages = with pkgs; [
framework-tool
];
boot.kernelModules = [ "thunderbolt-net" ];
networking.interfaces.thunderbolt0.ipv4.addresses = [{
address = "10.0.0.1";
prefixLength = 24;
}];
networking.firewall.interfaces."thunderbolt0".allowedUDPPorts = [ 4242 ];
hardware.graphics = {
enable = true;
enable32Bit = true;
extraPackages = with pkgs; [
intel-media-driver # Hardware acceleration
intel-vaapi-driver
vpl-gpu-rt # Video processing runtime
];
extraPackages32 = with pkgs.pkgsi686Linux; [
intel-media-driver
];
};
services.power-profiles-daemon.enable = true;
services.thermald.enable = true;
}
+41
View File
@@ -0,0 +1,41 @@
# Do not modify this file! It was generated by ‘nixos-generate-config’
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/829d5d81-c2d1-466f-a490-a97ec2a29bc8";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/530C-3D2D";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
swapDevices =
[ { device = "/dev/disk/by-uuid/3e31b909-ac9d-4329-9ed5-595ea5a9b099"; }
];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware = {
cpu.intel = {
npu.enable = true;
updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
};
bluetooth.enable = true;
};
}
+31
View File
@@ -10,6 +10,37 @@
networking.hostName = "violet"; networking.hostName = "violet";
services.power-profiles-daemon.enable = false; services.power-profiles-daemon.enable = false;
services.hardware.bolt.enable = true;
system.stateVersion = "26.05"; system.stateVersion = "26.05";
boot.kernelModules = [ "thunderbolt-net" ];
networking.interfaces.thunderbolt0.ipv4.addresses = [{
address = "10.0.0.2";
prefixLength = 24;
}];
networking.firewall.interfaces."thunderbolt0".allowedUDPPorts = [ 4242 ];
services.tlp = {
enable = false;
settings = {
USB_AUTOSUSPEND = 0;
# AC
CPU_SCALING_GOVERNOR_ON_AC = "performance";
CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
SOUND_POWER_SAVE_ON_AC = 0;
PCIE_ASPM_ON_AC = "default";
CPU_BOOST_ON_BAT = 0;
# Battery
CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
CPU_ENERGY_PERF_POLICY_ON_BAT = "power";
SOUND_POWER_SAVE_ON_BAT = 1;
PCIE_ASPM_ON_BAT = "powersupersave";
CPU_BOOST_ON_AC = 1;
};
};
} }
+1 -1
View File
@@ -39,7 +39,7 @@
''; '';
services.howdy = { services.howdy = {
enable = true; enable = false;
control = "sufficient"; control = "sufficient";
settings = { settings = {
video = { video = {
+19 -10
View File
@@ -4,22 +4,31 @@ sops:
age: age:
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAyNjkvMzI5MUtPZEVua0U1 YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5THRkQUg1S1pRTEpHdjRT
TkxIREI3MnNNbytGTStXWWxwdm9XbEYwTmlZCnhMcGZGNnU2RTVtRzVUWWxzRzFw MThsR2tuSytIdzdvWndqMnM3MUNxRk5PMHdBCkRRalFpRC8zQ012RkNKYlloUGpH
NTRVT1ZSUFZOY29JNWZacjdoMjE1S3MKLS0tIFVoZk5Ea3pMUUYvYVgvUzdTN2Yx cWJ1bmZEL3VxRndrei9BbGlNYnR3amsKLS0tIFEvR295a2VsRXJsZ1IzSUZCWlhI
V3VITk1wc05DK0tvRnBNZ1ptSldWUGsKT3fSHkqsjkvtRgbPpvIz0ufGPf4pZh6G akcybUs1cmlyL2I0U2tXQmdYb3V5NVUKQ0bkyCvBwpa7BUolE/QXDib5tZ0QvIie
iibDAgCCrsHk0GViDIBlnwOHgwCM4io3j565M+jS6cjV2YKsOHz2Ng== cZZ4NDdhq7EtS++sQl6AN9ZUp209F49XMoV/3u17njg1Mdqt2kM5vw==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age1az6l56h4m38jw2hm7t7a99wp9f88s845sg29grtmdpz72lrkc5cq66kmcv recipient: age1az6l56h4m38jw2hm7t7a99wp9f88s845sg29grtmdpz72lrkc5cq66kmcv
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQelp5Y2E2WFM1TFhIb1gz YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBmY2hSRWRjRXBNMXduUTZw
eS9lWTAydUYrQlYxZkY5akt3MkI5TGlXSVhRCktTV0tFcmFwaS9VVTdwZTRlWkFF NHlyUGxoRnZyVFYzMENDVTljeGpoVlBReFZ3Ci9aREtkYjJuUklaYXljSkNod0RG
alNQYW83TTcycytWVHVZUVhmOU5ETU0KLS0tIGJmSWZRaW5tM3R6a3ZlaitSb3d3 NHhReE5Sck9DRmR2ZlJYdGZEM3pieDAKLS0tIDlYbWV2UllheFRQRUZwVmRteDJW
a0JFN3NORTBFYVpsMjJkUHdtbFh4c1EK7lRQR/qO3rpctSDC6Mvy6eAA6zj70MDD NU9wZHQyU0t3Tm5odE9UUTVmZkMwZlUKcnXTTlGDMMMwtfIbAOT8UiM/yTyuoDmA
cmUiMcIDn2FyX5d9r2jk5EZtx2rZPB4ti4pp4Lox3zuEMMCksaFXmw== +sqOslfVPW/FgCXtCdca2wc3SFs6LjPNmuJFp14tUQByqftNgLv3gA==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age1cd40qmufxzvw8dkml9340czqfq6ta3kxpjfj47jpavwn2t7ghywsxhqz79 recipient: age1cd40qmufxzvw8dkml9340czqfq6ta3kxpjfj47jpavwn2t7ghywsxhqz79
- enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBBYkRuVERsU0JXaXkwc1NM
MFlZUzlzWEpWbEVPUTZTcTdLS0hFaXJkc0dnCnh2dDdXZXMreDRCMmU2anNhUnl4
ek5zc2hQYThXWVBZM0dTN1F2MXlFV0EKLS0tIG05NmdrK3BJUDVsc0t4dWhrRzZF
VnZNV0hpRlZnbEVvc0NSa2NDTU9HeEUKD68eN/3/ReQYS1z0kQ6Txa18hVqrEVo+
Cuii27UwrwN07cE1XZx7PHG17pfuCzdnxFPr3CNhFPWCz4f/CD13SA==
-----END AGE ENCRYPTED FILE-----
recipient: age1dsf6z3hcr8qrtptdk6xyky9c99tdpjyrnuaawv4atme9rffhps9qpwdn6j
lastmodified: "2026-08-05T02:52:44Z" lastmodified: "2026-08-05T02:52:44Z"
mac: ENC[AES256_GCM,data:69aZI03tg5IakwK80lx/eVrFq84WB2dk3DFKc5X5Idc2irrz2AodqsmlBNkrDDC6bnv1kUAW8dQlOscbHxKNtOq+lzEtuVI88A2sO1JT06ILFMMfj3R2BEZPtuidl/iytovUKmZrL9JzlNKTd/74htsBvC3cLoIk7r/WfyfoU4w=,iv:r2Jzq9IqL+ssKo13tpJ4OrgnPxxNaNaYbAa0+DnLt54=,tag:GL5AEZPDudVB+IQZtbmwvg==,type:str] mac: ENC[AES256_GCM,data:69aZI03tg5IakwK80lx/eVrFq84WB2dk3DFKc5X5Idc2irrz2AodqsmlBNkrDDC6bnv1kUAW8dQlOscbHxKNtOq+lzEtuVI88A2sO1JT06ILFMMfj3R2BEZPtuidl/iytovUKmZrL9JzlNKTd/74htsBvC3cLoIk7r/WfyfoU4w=,iv:r2Jzq9IqL+ssKo13tpJ4OrgnPxxNaNaYbAa0+DnLt54=,tag:GL5AEZPDudVB+IQZtbmwvg==,type:str]
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
-27
View File
@@ -2,31 +2,4 @@
{ {
boot.kernelParams = [ "mem_sleep_default=deep" ]; boot.kernelParams = [ "mem_sleep_default=deep" ];
services.power-profiles-daemon.enable = false;
services.tlp = {
enable = true;
settings = {
USB_AUTOSUSPEND = 0;
# AC
CPU_SCALING_GOVERNOR_ON_AC = "performance";
CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
SOUND_POWER_SAVE_ON_AC = 0;
PCIE_ASPM_ON_AC = "default";
CPU_BOOST_ON_BAT = 0;
# Battery
CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
CPU_ENERGY_PERF_POLICY_ON_BAT = "power";
SOUND_POWER_SAVE_ON_BAT = 1;
PCIE_ASPM_ON_BAT = "powersupersave";
CPU_BOOST_ON_AC = 1;
# Battery Thresholds
START_CHARGE_THRESH_BAT0 = 40;
STOP_CHARGE_THRESH_BAT0 = 80;
};
};
} }
+11 -6
View File
@@ -2,17 +2,22 @@
{ {
imports = [ imports = [];
./pi-hole.nix
];
networking = { networking = {
networkmanager.enable = true; networkmanager = {
enable = true;
wifi.powersave = false;
};
firewall = { firewall = {
enable = true; enable = true;
allowedTCPPorts = []; allowedTCPPorts = [ 4242 ];
allowedUDPPorts = []; allowedUDPPorts = [ 4242 ];
}; };
}; };
boot.extraModprobeConfig = ''
options iwlwifi power_save=0
'';
} }
+9 -5
View File
@@ -10,8 +10,10 @@
bitwarden-cli bitwarden-cli
btop btop
dconf dconf
deskflow
fastfetch fastfetch
firefox firefox
gemini-cli
git git
github-cli github-cli
(google-chrome.override { (google-chrome.override {
@@ -20,18 +22,24 @@
]; ];
}) })
google-chrome google-chrome
google-java-format
gnupg gnupg
jdk
jdt-language-server
jq jq
keepassxc keepassxc
lan-mouse
libnotify libnotify
mypy mypy
networkmanagerapplet networkmanagerapplet
nitrogen nitrogen
ollama ollama
pasystray pasystray
playerctl
pulseaudioFull pulseaudioFull
rclone rclone
rnote rnote
rustdesk
sops sops
ssh-to-age ssh-to-age
tldr tldr
@@ -90,15 +98,11 @@
programs.firefox.enable = true; programs.firefox.enable = true;
programs.thunar.enable = true; programs.thunar.enable = true;
hardware.graphics = {
enable = true;
enable32Bit = true;
};
programs.steam = { programs.steam = {
enable = true; enable = true;
remotePlay.openFirewall = true; remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true; dedicatedServer.openFirewall = true;
localNetworkGameTransfers.openFirewall = true; localNetworkGameTransfers.openFirewall = true;
gamescopeSession.enable = true; # Useful for rendering Palworld at downscaled 1080p
}; };
} }
+10
View File
@@ -20,6 +20,7 @@ in
programs.dsearch.enable = true; programs.dsearch.enable = true;
programs.dank-material-shell.greeter = { programs.dank-material-shell.greeter = {
enable = true; enable = true;
compositor.name = "niri"; compositor.name = "niri";
@@ -70,6 +71,15 @@ in
enable = true; enable = true;
}; };
displayManager = {
autoLogin = {
enable = true;
user = "jashton";
};
defaultSession = "niri";
};
upower.enable = true; upower.enable = true;
printing.enable = true; printing.enable = true;
gvfs.enable = true; gvfs.enable = true;
+11
View File
@@ -2,9 +2,12 @@
{ {
virtualisation = { virtualisation = {
containers.enable = true;
podman = { podman = {
enable = true; enable = true;
dockerCompat = true; dockerCompat = true;
defaultNetwork.settings.dns_enabled = true;
}; };
waydroid.enable = true; waydroid.enable = true;
@@ -14,4 +17,12 @@
}; };
networking.firewall.trustedInterfaces = [ "waydroid0" ]; networking.firewall.trustedInterfaces = [ "waydroid0" ];
# Install podman-compose and helper tools
environment.systemPackages = with pkgs; [
podman-compose
podman-tui
slirp4netns
fuse-overlayfs
];
} }