18 Commits

Author SHA1 Message Date
GarandPLG 0ed84d8068 Add Obsidian support and update Helium to 0.13.4.1
Introduce a new home module for Obsidian with enable option and BoM
vault.
Expose Obsidian configuration in host‑specific home‑modules files.
Add Stylix theming support for Obsidian (colors, fonts, polarity,
vaults).
Upgrade Helium AppImage to version 0.13.4.1 and update its hash.
2026-06-18 20:28:34 +02:00
GarandPLG 4eba766188 Add MangoHud module and enable it on hosts
Introduce a new `mangohud.nix` module with sensible defaults, import it
in
`modules/home/default.nix`, and add a `mangohud.enable` flag to the host
configurations (enabled for desktop and laptop, disabled for the default
host).

Comment out the default Gamescope arguments in `modules/core/steam.nix`
and
add a reference command line that includes the MangoHud flag.
2026-06-14 16:53:27 +02:00
GarandPLG b4f1d2381a Update flake.lock to newer revisions 2026-06-13 14:38:26 +02:00
GarandPLG 3f38b0b474 Update helium to 0.13.3.1 and refresh hash 2026-06-13 13:38:12 +02:00
GarandPLG 8c5c071897 Add Logseq AppImage package, keep it disabled
Introduce a new Nix expression for Logseq AppImage and comment out its
enable flag and package entries so it is not enabled by default.
2026-06-11 21:02:25 +02:00
GarandPLG 823302f7e5 Update dependencies and improve configuration 2026-06-08 12:54:39 +02:00
GarandPLG f5b429f704 Update flake.lock and refine module settings
Bump revisions, hashes and timestamps in flake.lock for several inputs.

Simplify greetd configuration by using a direct default_session
assignment.
Restructure core stylix targets, adding a kmscon placeholder and
reorganizing limine options.
Remove empty GTK4 theme block, keeping only the dark‑theme flag in extra
config.
Extend home stylix: enable librewolf with extra options and add a GTK
target with colors, fonts, and flatpak support.
2026-06-04 13:56:14 +02:00
GarandPLG 965a0a714b Add deputy package and LSP configuration for Zed 2026-06-04 00:08:36 +02:00
GarandPLG 870b3941c0 Pin Helium to version 0.12.4.1 2026-06-02 19:04:24 +02:00
GarandPLG 717ade35db Enable Exec substitution in losslesscut .desktop 2026-06-02 18:11:08 +02:00
GarandPLG 1d41bf6bf1 Add Tailscale plugin and enable on desktop/laptop
- Enable Tailscale plugin in home modules for Garand-Desktop and
  Garand-Laptop; keep it disabled in the default host.
- Introduce `tailscale.enable` option in noctalia plugins and add
  it to the noctalia-shell configuration with source URL handling.
- Provide default Tailscale settings (refresh interval, UI options,
  Taildrop configuration, login server, etc.).
- Add Tailscale widget to the right side of the bar widget list.
- Bump Helium AppImage to version 0.12.5.1 and update its sha256.
2026-06-02 18:10:19 +02:00
GarandPLG 01e84a3561 Add Noctalia plugins config and disable defaults
Introduce `nooctalia-plugins` options to control nightly‑shell plugins
and make
their activation conditional.  Update host home‑modules to enable a
subset
of plugins (keybind‑cheatsheet, kde‑connect, screenshot, ntfy) on
desktop and
laptop configurations.  Disable numerous default applications and system
services (e.g., Zed, browsers, Docker, Flatpak, calendar, GameMode,
Steam,
media tools, communication apps) in the default host configuration.
2026-05-27 13:51:04 +02:00
GarandPLG 2c13658e89 Add Losslesscut AppImage and update host configs
Enable the Losslesscut AppImage on the Garand‑Desktop host
while keeping it disabled on the laptop and default hosts.

Add opencode to the laptop home configuration
and explicitly disable ollama.

Add a new losslesscut AppImage package definition
and register it in the AppImage collection.

Extend the substituter list with noctalia.cachix.org
and add its trusted public key.
2026-05-27 01:13:23 +02:00
GarandPLG 551e9b2cb4 Add Opencode and Ollama modules; update configs
Enable Opencode and Ollama in home modules and import their Nix files.
Disable the deprecated system‑module opencode entries and remove it from
the
core packages list.
Add a new GitHub CLI module and a convenient `upf-gh` alias for flake
updates using a GitHub token.
Update the `stylix` configuration to include Opencode styling.
Refresh several flake.lock entries with newer revisions and hashes.
2026-05-26 00:06:07 +02:00
GarandPLG 8f9b707c2d Switch to Headscale and disable Ungoogled Chromium
Disable ungoogled‑chromium and rename all tailscale aliases to
headscale,
updating the SSH host entry and its IP address.
2026-05-25 13:25:36 +02:00
GarandPLG 83aa051d92 Make program integrations conditional on shell 2026-05-24 16:54:02 +02:00
GarandPLG 98069fa8d9 Refactor to pass host vars as arguments
Remove per‑host imports across flake, modules, and profiles, exposing
needed
variables (system, printer settings, consoleKeyMap, etc.) as arguments.
Drop unused printEnable flags from host variable files.
2026-05-24 15:43:18 +02:00
GarandPLG 077d8f07e7 Add fish shell support and related configs
Introduce a `shell` variable in host variables and enable the Fish
package.
Make Bash configuration conditional on the selected shell and add Fish
integration for programs such as fzf, starship, kitty, zoxide, and eza.
Provide a full Fish module with aliases, functions, and plugin
placeholders.
Update Stylix to configure Fish, Starship, Fzf, Bat, Anki, Btop, Kitty,
and
Vesktop themes. Remove the large Emoji module and simplify a few Dconf
settings. All changes collectively enable and style the Fish shell
across
the system.
2026-05-24 14:51:43 +02:00
67 changed files with 1271 additions and 2170 deletions
Generated
+59 -59
View File
@@ -17,11 +17,11 @@
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1779522232,
"narHash": "sha256-43PUS3kPWEWVArFV9h1m4mrWIdHeeVXv7kdteYhobOs=",
"lastModified": 1781331278,
"narHash": "sha256-8IM7jJnnkhbKDbq39q4BS+DbE5CrsT4UhFtmcUDvVjE=",
"owner": "mrshmllow",
"repo": "affinity-nix",
"rev": "328f8f66e375c64255dc3cb3453271aab4d4c273",
"rev": "f112cdef13bbd13e1067e72804c18c7622357547",
"type": "github"
},
"original": {
@@ -116,11 +116,11 @@
},
"crane": {
"locked": {
"lastModified": 1779130139,
"narHash": "sha256-BLrtr42azquO7MdGFU5a7KiMl3YpFlTeIXqy1fT5GlQ=",
"lastModified": 1780532242,
"narHash": "sha256-D+BsdpxmtUwtqGoY0IXPhHgTlmqgcZKCEo1oMyn7ep0=",
"owner": "ipetkov",
"repo": "crane",
"rev": "edb38893982a3338972bb4a2ec7ce7c29ba10fd9",
"rev": "59a82a1222dd3b2080b5cc52a1a2e8d5f1b77f37",
"type": "github"
},
"original": {
@@ -138,11 +138,11 @@
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
"lastModified": 1779270500,
"narHash": "sha256-r60KTphdevmdIDz1iJ529HvcpOq082ZZ1OnN3jDnrqk=",
"lastModified": 1781086641,
"narHash": "sha256-2oBncBeL671Tf6TnYqk36ebkfPHNYPKwz5at8NcrpvI=",
"owner": "nix-community",
"repo": "fenix",
"rev": "848395a91def85c11694587636151d89555f1ddb",
"rev": "640606300f74b4891bfa1a51f5756450f9fdc7f1",
"type": "github"
},
"original": {
@@ -181,11 +181,11 @@
},
"locked": {
"dir": "pkgs/firefox-addons",
"lastModified": 1779508957,
"narHash": "sha256-gNwsa7Hwp+pUNe9pvv2aFphcFnm8BoCUUQRm0HXJHD0=",
"lastModified": 1781323358,
"narHash": "sha256-W8SFmaIEW4tP4jQ48EJSSVnO8s4gZ1j1D4K22tW9pd8=",
"owner": "rycee",
"repo": "nur-expressions",
"rev": "3bd76938b820b6f7cf537fffa206bb6a73094b4f",
"rev": "89503b569dd29491d5c58bf41c244253fcd3d2b3",
"type": "gitlab"
},
"original": {
@@ -198,11 +198,11 @@
"firefox-gnome-theme": {
"flake": false,
"locked": {
"lastModified": 1776136500,
"narHash": "sha256-r0gN2brVWA351zwMV0Flmlcd6SGMvYqFbvC3DfKFM8Y=",
"lastModified": 1779670703,
"narHash": "sha256-UdfMivNMwCCqQsYDg5pSz8X2IOaOrIZLIIy+Bg3CO2o=",
"owner": "rafaelmardojai",
"repo": "firefox-gnome-theme",
"rev": "0f8ba203d475587f477e7ae12661bd8459e225b7",
"rev": "942159e73e40bf785816f7f1f5feed9ef3d7c8f9",
"type": "github"
},
"original": {
@@ -265,11 +265,11 @@
]
},
"locked": {
"lastModified": 1775087534,
"narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=",
"lastModified": 1778716662,
"narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b",
"rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb",
"type": "github"
},
"original": {
@@ -383,11 +383,11 @@
]
},
"locked": {
"lastModified": 1779507042,
"narHash": "sha256-7wOwi8B6D0BYsieZCnHZZj2sNUzgJhLoIVSfkwB7lxQ=",
"lastModified": 1781305496,
"narHash": "sha256-g8Vv4Qfc7n+lgov97REu3X6BeJtvYY0hlSUZR1GrGQQ=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "509ed3c603349a9d43de9e2ae6613baea6bd5b34",
"rev": "c87a39aa979acc4848016d2220c6238390d84779",
"type": "github"
},
"original": {
@@ -456,11 +456,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1779508470,
"narHash": "sha256-Ap9KJX+5xHIn3bPIpfNgT6MEXdAECECwo4/rmlQD74M=",
"lastModified": 1781074563,
"narHash": "sha256-md8WlXOlfnIeHeOScMTTHFyf2d6iaTwPl2apR5EQ3P4=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "29916453413845e54a65b8a1cf996842300cd299",
"rev": "9ae611a455b90cf061d8f332b977e387bda8e1ca",
"type": "github"
},
"original": {
@@ -509,11 +509,11 @@
"noctalia-qs": "noctalia-qs"
},
"locked": {
"lastModified": 1779504029,
"narHash": "sha256-f8u9DV9Qk8KJh7DVvk4UgUFTN0NDJeFxgrffTSwPkpA=",
"lastModified": 1780889763,
"narHash": "sha256-18kh968u0hhtDyECo0FBnlEnJLDxs0uB5H5QbWA9P3I=",
"owner": "noctalia-dev",
"repo": "noctalia-shell",
"rev": "b99b7a7f06ff749df9ac43181ff7889ff90c5599",
"rev": "57be32b0a81471ef6c5dceff6faad23b534ec7f8",
"type": "github"
},
"original": {
@@ -532,11 +532,11 @@
"treefmt-nix": "treefmt-nix_2"
},
"locked": {
"lastModified": 1778983195,
"narHash": "sha256-hE3EFK5GoSdbO5WHZ8bZDUVYkofbDLQN/KK25z7IOOI=",
"lastModified": 1780799499,
"narHash": "sha256-YloRtLqJabzYUWvdLyh67zH4DZrR3kQj+dlQJwLPmPM=",
"owner": "noctalia-dev",
"repo": "noctalia-qs",
"rev": "4116b41cdc89e186be7cb8b24a9b6022af95d742",
"rev": "f308426239665e3bc3d624014e9295b2ae2f58ff",
"type": "github"
},
"original": {
@@ -556,11 +556,11 @@
]
},
"locked": {
"lastModified": 1777598946,
"narHash": "sha256-X239dAGaU1+gfDj8jKH8GzlqKMcxaVfXOio+uzBOkeE=",
"lastModified": 1780281641,
"narHash": "sha256-M/+hUKoKbHXpV0xGVfELbN1Ds1aoe3pL5p5/t46YhVo=",
"owner": "nix-community",
"repo": "NUR",
"rev": "5d55af01c0f86be583931fe99207fc56c14134b3",
"rev": "30f9ae2f04174de63ba8bcf3580ca90843b28a01",
"type": "github"
},
"original": {
@@ -639,11 +639,11 @@
"rust-analyzer-src": {
"flake": false,
"locked": {
"lastModified": 1779221047,
"narHash": "sha256-HkOWI9C4kxA6xkS9GXhe4hAAme7ekOWje3b1U7rLSIo=",
"lastModified": 1781005730,
"narHash": "sha256-3Bn47a+Vs2/ltQfTU2ApWqy5kYNmF+RaTEJs0A/H2pA=",
"owner": "rust-lang",
"repo": "rust-analyzer",
"rev": "f4bd646a7867c7814770168e0d4b9bd3418c1066",
"rev": "587ce15e272b94d4f0a69d695e3718a02c24667e",
"type": "github"
},
"original": {
@@ -690,11 +690,11 @@
"tinted-zed": "tinted-zed"
},
"locked": {
"lastModified": 1779378391,
"narHash": "sha256-IsDb9erotvx9npI94UDosvMeYQK17p7/vmU2v9batrY=",
"lastModified": 1781018772,
"narHash": "sha256-C+cGIUaC6dqfwTbI+BwCd572PbESGA3WYxR1sLTqxkY=",
"owner": "danth",
"repo": "stylix",
"rev": "c1456cc4ba3c9485e7b4158c909eeca5a752cd59",
"rev": "a378e4c09031fb15a4d65da88aa628f71fc52f6b",
"type": "github"
},
"original": {
@@ -720,16 +720,16 @@
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"repo": "default-linux",
"type": "github"
}
},
@@ -752,11 +752,11 @@
"tinted-schemes": {
"flake": false,
"locked": {
"lastModified": 1777041405,
"narHash": "sha256-BAGZ7ObFV/9Z61OJZun7ifPyhkuHqNuW1QIhQ8LuzCo=",
"lastModified": 1777806186,
"narHash": "sha256-PDF0/wObw4nIsSBeXVYLsloXOiphXCgIdsrNcVXguKs=",
"owner": "tinted-theming",
"repo": "schemes",
"rev": "5f868b3a338b6904c47f3833b9c411be641983a8",
"rev": "0c94645546f4f3ddac77a1a5fce54eb95bf50795",
"type": "github"
},
"original": {
@@ -768,11 +768,11 @@
"tinted-tmux": {
"flake": false,
"locked": {
"lastModified": 1777169200,
"narHash": "sha256-h7dDbIzP5hDr9v97w9PL6jdAgXawmj6krcH+959rqpU=",
"lastModified": 1778379944,
"narHash": "sha256-wPDFzMGSlARlw0Sfsn48Q2+jPSfk6N0Ng6BC/d+7Q24=",
"owner": "tinted-theming",
"repo": "tinted-tmux",
"rev": "f798c2dce44ef815bb6b8f05a82135c7942d35ac",
"rev": "fe0203a198690e71a5ff11e08812a4673de3678d",
"type": "github"
},
"original": {
@@ -784,11 +784,11 @@
"tinted-zed": {
"flake": false,
"locked": {
"lastModified": 1777463218,
"narHash": "sha256-Bhkozqtq3BKLqWTlmKm8uAptfX4aRGI8QX3eEL54Vpc=",
"lastModified": 1778378178,
"narHash": "sha256-OXPXRIQgGwV77HjYRryOHguh4ALX96jkg+tseLkGgHA=",
"owner": "tinted-theming",
"repo": "base16-zed",
"rev": "5768d08ed2e7944a26a958868cdb073cb8856dae",
"rev": "9cd816033ff969415b190722cddf134e78a5665f",
"type": "github"
},
"original": {
@@ -804,11 +804,11 @@
]
},
"locked": {
"lastModified": 1775636079,
"narHash": "sha256-pc20NRoMdiar8oPQceQT47UUZMBTiMdUuWrYu2obUP0=",
"lastModified": 1780220602,
"narHash": "sha256-eynAfOmbmxJnkp7YewvCEbShNnnYJ9gLLqkzsYtBPeM=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "790751ff7fd3801feeaf96d7dc416a8d581265ba",
"rev": "db947814a175b7ca6ded66e21383d938df01c227",
"type": "github"
},
"original": {
@@ -826,11 +826,11 @@
]
},
"locked": {
"lastModified": 1775636079,
"narHash": "sha256-pc20NRoMdiar8oPQceQT47UUZMBTiMdUuWrYu2obUP0=",
"lastModified": 1780220602,
"narHash": "sha256-eynAfOmbmxJnkp7YewvCEbShNnnYJ9gLLqkzsYtBPeM=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "790751ff7fd3801feeaf96d7dc416a8d581265ba",
"rev": "db947814a175b7ca6ded66e21383d938df01c227",
"type": "github"
},
"original": {
+5 -16
View File
@@ -65,25 +65,14 @@
hostDirs = builtins.attrNames (builtins.readDir ./hosts);
mkHost = hostName: let
inherit
(import ./hosts/${hostName}/variables.nix)
host
username
profile
system
;
hostVars = import ./hosts/${hostName}/variables.nix;
hostPrinterVars = import ./hosts/${hostName}/printers.nix;
in
nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = {
inherit inputs;
inherit username;
inherit host;
inherit profile;
inherit system;
};
inherit (hostVars) system;
specialArgs = hostVars // hostPrinterVars // {inherit inputs;};
modules = [
./profiles/${profile}
./profiles/${hostVars.profile}
nix-flatpak.nixosModules.nix-flatpak
garandos-tui.nixosModules.garandos-tui
];
+28 -1
View File
@@ -7,12 +7,14 @@ _: {
enable = true; # Zed Editor: a modern, highperformance code editor
remote-server.enable = false; # Remote Server: enable remote editing capabilities
};
opencode.enable = false; # OpenCode: terminal coding agent
ollama.enable = false; # Ollama: Local Llms
/*
Web browsers
*/
librewolf.enable = true; # Librewolf: a privacy-focused Firefox fork
ungoogled-chromium.enable = true; # Ungoogled Chromium: a privacy-focused Chromium fork
ungoogled-chromium.enable = false; # Ungoogled Chromium: a privacy-focused Chromium fork
/*
System utilities
@@ -33,6 +35,7 @@ _: {
Gaming
*/
lutris.enable = false; # Lutris: an open gaming platform
mangohud.enable = true; # MangoHud: Vulkan and OpenGL overlay for monitoring FPS, temperatures, CPU/GPU load and more
/*
Media recording and streaming
@@ -49,6 +52,16 @@ _: {
*/
anki.enable = true; # Anki: spacedrepetition flashcard program
/*
Productivity / Knowledge Management
*/
obsidian = {
enable = true; # Obsidian: Powerful knowledge base that works on top of a local folder of plain text Markdown files
vaults = {
"BoM".enable = true; # Blood of Mages: ttrpg session
};
};
/*
XDG desktop entries (PWA)
*/
@@ -64,4 +77,18 @@ _: {
jellyfinClient.enable = true; # Jellyfin: My Jellyfin
};
};
/*
Noctalia-shell plugins
*/
nooctalia-plugins = {
mini-docker.enable = false; # Mini Docker: Manage Docker containers, images, volumes & networks
timer.enable = false; # Timer: A timer and stopwatch plugin for the bar & control center.
keybind-cheatsheet.enable = true; # Keybind Cheatsheet: Universal keyboard shortcuts keymap that automatically detects and displays keybindings for Hyprland, Niri, or MangoWC compositors.
kde-connect.enable = true; # KDE Connect: A Plugin integrating your mobile devices into a panel using KDEConnect
screen-recorder.enable = true; # Screen Recorder: Hardware-accelerated screen recording using gpu-screen-recorder with customizable video and audio settings
screenshot.enable = true; # Screenshot: Quick screenshot button in bar for Hyprland, Sway, and Niri
ntfy-notifications.enable = true; # ntfy Notifications: Subscribe to ntfy topics and receive push notifications directly in your bar, with full theming support
tailscale.enable = true; # Tailscale: Show Tailscale status in the menu bar and send/receive files via Taildrop.
};
}
+3 -3
View File
@@ -68,7 +68,6 @@ _: {
*/
exercism.enable = false; # Exercism: coding practice platform
lazygit.enable = false; # Lazygit: simple TUI for Git
opencode.enable = false; # OpenCode: tools for coding and development
jan.enable = true; # Jan: AI chat UI
logisim-evolution.enable = false; # Logisim-Evolution: Digital logic designer and simulator
@@ -89,7 +88,7 @@ _: {
*/
bitwarden.enable = false; # Bitwarden: password manager (desktop)
iotas.enable = true; # Iotas: lightweight notes manager
logseq.enable = false; # Logseq: knowledge base and outliner
# appImages.logseq.enable = false; # Logseq: knowledge base and outliner
/*
Media & Graphics
@@ -100,8 +99,9 @@ _: {
gimp.enable = false; # GIMP: GNU Image Manipulation Program
kdenlive.enable = true; # Kdenlive: video editing software
pixieditor.enable = true; # Pixieditor: Universal editor for all your 2D needs
plex.enable = true; # Plex: media player and server client
plex.enable = false; # Plex: media player and server client
jellyfin.enable = true; # Jellyfin: foss media player
appImages.losslesscut.enable = true; # Losslesscut: Swiss army knife of lossless video/audio editing
/*
Utilities / Misc
+4 -3
View File
@@ -15,6 +15,10 @@
gitUsername = "GarandPLG";
gitEmail = "garandplg@garandplg.com";
# User shell
# Availabe options: "fish", "bash"
shell = "fish";
# Hyprland Settings
# Examples:
# extraMonitorSettings = "monitor = Virtual-1,1920x1080@60,auto,1";
@@ -35,9 +39,6 @@
# Enable NFS
enableNFS = false;
# Enable Printing Support
printEnable = true;
# Set Stylix Image
# This will set your color palette
# Default background
+27
View File
@@ -7,6 +7,8 @@ _: {
enable = true; # Zed Editor: a modern, highperformance code editor
remote-server.enable = false; # Remote Server: enable remote editing capabilities
};
opencode.enable = false; # OpenCode: terminal coding agent
ollama.enable = false; # Ollama: Local Llms
/*
Web browsers
@@ -33,6 +35,7 @@ _: {
Gaming
*/
lutris.enable = false; # Lutris: an open gaming platform
mangohud.enable = true; # MangoHud: Vulkan and OpenGL overlay for monitoring FPS, temperatures, CPU/GPU load and more
/*
Media recording and streaming
@@ -49,6 +52,16 @@ _: {
*/
anki.enable = true; # Anki: spacedrepetition flashcard program
/*
Productivity / Knowledge Management
*/
obsidian = {
enable = true; # Obsidian: Powerful knowledge base that works on top of a local folder of plain text Markdown files
vaults = {
"BoM".enable = true; # Blood of Mages: ttrpg session
};
};
/*
XDG desktop entries (PWA)
*/
@@ -64,4 +77,18 @@ _: {
jellyfinClient.enable = true; # Jellyfin: My Jellyfin
};
};
/*
Noctalia-shell plugins
*/
nooctalia-plugins = {
mini-docker.enable = false; # Mini Docker: Manage Docker containers, images, volumes & networks
timer.enable = false; # Timer: A timer and stopwatch plugin for the bar & control center.
keybind-cheatsheet.enable = true; # Keybind Cheatsheet: Universal keyboard shortcuts keymap that automatically detects and displays keybindings for Hyprland, Niri, or MangoWC compositors.
kde-connect.enable = true; # KDE Connect: A Plugin integrating your mobile devices into a panel using KDEConnect
screen-recorder.enable = false; # Screen Recorder: Hardware-accelerated screen recording using gpu-screen-recorder with customizable video and audio settings
screenshot.enable = true; # Screenshot: Quick screenshot button in bar for Hyprland, Sway, and Niri
ntfy-notifications.enable = true; # ntfy Notifications: Subscribe to ntfy topics and receive push notifications directly in your bar, with full theming support
tailscale.enable = true; # Tailscale: Show Tailscale status in the menu bar and send/receive files via Taildrop.
};
}
+3 -3
View File
@@ -68,7 +68,6 @@ _: {
*/
exercism.enable = false; # Exercism: coding practice platform
lazygit.enable = false; # Lazygit: simple TUI for Git
opencode.enable = false; # OpenCode: tools for coding and development
jan.enable = true; # Jan: AI chat UI
logisim-evolution.enable = false; # Logisim-Evolution: Digital logic designer and simulator
@@ -89,7 +88,7 @@ _: {
*/
bitwarden.enable = false; # Bitwarden: password manager (desktop)
iotas.enable = true; # Iotas: lightweight notes manager
logseq.enable = false; # Logseq: knowledge base and outliner
# appImages.logseq.enable = false; # Logseq: knowledge base and outliner
/*
Media & Graphics
@@ -100,8 +99,9 @@ _: {
gimp.enable = false; # GIMP: GNU Image Manipulation Program
kdenlive.enable = false; # Kdenlive: video editing software
pixieditor.enable = true; # Pixieditor: Universal editor for all your 2D needs
plex.enable = true; # Plex: media player and server client
plex.enable = false; # Plex: media player and server client
jellyfin.enable = true; # Jellyfin: foss media player
appImages.losslesscut.enable = false; # Losslesscut: Swiss army knife of lossless video/audio editing
/*
Utilities / Misc
+4
View File
@@ -15,6 +15,10 @@
gitUsername = "GarandPLG";
gitEmail = "garandplg@garandplg.com";
# User shell
# Availabe options: "fish", "bash"
shell = "fish";
# Hyprland Settings
# Examples:
# extraMonitorSettings = "monitor = Virtual-1,1920x1080@60,auto,1";
+44 -17
View File
@@ -4,21 +4,23 @@ _: {
*/
vscodium.enable = false; # VSCodium: a free and open-source "demicrosofted" VSCode
zed-editor = {
enable = true; # Zed Editor: a modern, highperformance code editor
remote-server.enable = true; # Remote Server: enable remote editing capabilities
enable = false; # Zed Editor: a modern, highperformance code editor
remote-server.enable = false; # Remote Server: enable remote editing capabilities
};
opencode.enable = false; # OpenCode: terminal coding agent
ollama.enable = false; # Ollama: Local Llms
/*
Web browsers
*/
librewolf.enable = true; # Librewolf: a privacy-focused Firefox fork
ungoogled-chromium.enable = true; # Ungoogled Chromium: a privacy-focused Chromium fork
librewolf.enable = false; # Librewolf: a privacy-focused Firefox fork
ungoogled-chromium.enable = false; # Ungoogled Chromium: a privacy-focused Chromium fork
/*
System utilities
*/
btop.enable = true; # Btop: a resource monitor for the terminal
easyeffects.enable = true; # EasyEffects: Audio effects for PipeWire applications
easyeffects.enable = false; # EasyEffects: Audio effects for PipeWire applications
cava.enable = false; # Cava: terminal audio visualizer
fastfetch.enable = true; # Fastfetch: a fast system information tool
@@ -26,13 +28,14 @@ _: {
Communication and synchronization
*/
kdeconnect.enable = false; # KDE Connect: integrate your phone and desktop
nextcloud-client.enable = true; # Nextcloud Client: sync files with a Nextcloud server
vesktop.enable = true; # Vesktop: a communitydriven Discord client
nextcloud-client.enable = false; # Nextcloud Client: sync files with a Nextcloud server
vesktop.enable = false; # Vesktop: a communitydriven Discord client
/*
Gaming
*/
lutris.enable = false; # Lutris: an open gaming platform
mangohud.enable = false; # MangoHud: Vulkan and OpenGL overlay for monitoring FPS, temperatures, CPU/GPU load and more
/*
Media recording and streaming
@@ -42,26 +45,50 @@ _: {
/*
Office suite
*/
onlyoffice.enable = true; # OnlyOffice: an office suite compatible with Microsoft formats
onlyoffice.enable = false; # OnlyOffice: an office suite compatible with Microsoft formats
/*
Learning tools
*/
anki.enable = true; # Anki: spacedrepetition flashcard program
anki.enable = false; # Anki: spacedrepetition flashcard program
/*
Productivity / Knowledge Management
*/
obsidian = {
enable = false; # Obsidian: Powerful knowledge base that works on top of a local folder of plain text Markdown files
vaults = {
"BoM".enable = false; # Blood of Mages: ttrpg session
};
};
/*
XDG desktop entries (PWA)
*/
xdgDesktopEntries = {
enable = true; # Enable XDG desktop entries
enable = false; # Enable XDG desktop entries
entries = {
messenger.enable = true; # Messenger: Facebook Messenger
mastodon.enable = true; # Mastodon: a decentralized social network
garandcloud.enable = true; # GarandCloud: my Nextcloud instance
chatgpt.enable = true; # ChatGPT: a large language model
claude.enable = true; # Claude: a large language model
glance.enable = true; # Glance: my home server dashboard
jellyfinClient.enable = true; # Jellyfin: My Jellyfin
messenger.enable = false; # Messenger: Facebook Messenger
mastodon.enable = false; # Mastodon: a decentralized social network
garandcloud.enable = false; # GarandCloud: my Nextcloud instance
chatgpt.enable = false; # ChatGPT: a large language model
claude.enable = false; # Claude: a large language model
glance.enable = false; # Glance: my home server dashboard
jellyfinClient.enable = false; # Jellyfin: My Jellyfin
};
};
/*
Noctalia-shell plugins
*/
nooctalia-plugins = {
mini-docker.enable = false; # Mini Docker: Manage Docker containers, images, volumes & networks
timer.enable = false; # Timer: A timer and stopwatch plugin for the bar & control center.
keybind-cheatsheet.enable = false; # Keybind Cheatsheet: Universal keyboard shortcuts keymap that automatically detects and displays keybindings for Hyprland, Niri, or MangoWC compositors.
kde-connect.enable = false; # KDE Connect: A Plugin integrating your mobile devices into a panel using KDEConnect
screen-recorder.enable = false; # Screen Recorder: Hardware-accelerated screen recording using gpu-screen-recorder with customizable video and audio settings
screenshot.enable = false; # Screenshot: Quick screenshot button in bar for Hyprland, Sway, and Niri
ntfy-notifications.enable = false; # ntfy Notifications: Subscribe to ntfy topics and receive push notifications directly in your bar, with full theming support
tailscale.enable = false; # Tailscale: Show Tailscale status in the menu bar and send/receive files via Taildrop.
};
}
+23 -23
View File
@@ -2,14 +2,14 @@ _: {
/*
Container & Packaging
*/
docker.enable = true; # Docker: container runtime and management
docker.enable = false; # Docker: container runtime and management
virtualbox.enable = false; # VirtualBox: PC emulator
flatpak = {
enable = true; # Flatpak: universal packaging system for Linux
enable = false; # Flatpak: universal packaging system for Linux
packages = {
sober.enable = false; # Roblox client
warehouse.enable = true; # Flatpak manager
flatseal.enable = true; # Flatpak permissions manager
warehouse.enable = false; # Flatpak manager
flatseal.enable = false; # Flatpak permissions manager
upscaler.enable = false; # Upscaler: Upscale and enhance images
};
};
@@ -22,14 +22,14 @@ _: {
/*
Calendar & Contacts
*/
calendar.enable = true; # GNOME Calendar: calendar and contacts application
calendar.enable = false; # GNOME Calendar: calendar and contacts application
/*
Gaming
*/
gamemode.enable = true; # GameMode: optimizes system performance for gaming
gamemode.enable = false; # GameMode: optimizes system performance for gaming
gamescope.enable = false; # Gamescope: microcompositor for games
steam.enable = true; # Steam: platform for buying and playing games
steam.enable = false; # Steam: platform for buying and playing games
/*
Media & Graphics
@@ -59,27 +59,26 @@ _: {
Gaming
*/
prismlauncher.enable = false; # Prism Launcher: Minecraft modded launcher
spaceCadetPinball.enable = true; # SpaceCadet Pinball: classic pinball game
ttySolitaire.enable = true; # TTY Solitaire: terminalbased solitaire game
spaceCadetPinball.enable = false; # SpaceCadet Pinball: classic pinball game
ttySolitaire.enable = false; # TTY Solitaire: terminalbased solitaire game
heroic.enable = false; # Native GOG, Epic, and Amazon Games Launcher for Linux, Windows and Mac
/*
Development Tools
*/
exercism.enable = true; # Exercism: coding practice platform
exercism.enable = false; # Exercism: coding practice platform
lazygit.enable = false; # Lazygit: simple TUI for Git
opencode.enable = false; # OpenCode: tools for coding and development
jan.enable = true; # Jan: AI chat UI
jan.enable = false; # Jan: AI chat UI
logisim-evolution.enable = false; # Logisim-Evolution: Digital logic designer and simulator
/*
Communication & Collaboration
*/
mattermost.enable = true; # Mattermost: opensource Slack alternative
mattermost.enable = false; # Mattermost: opensource Slack alternative
slack.enable = false; # Slack: team communication and collaboration tool
tutanota.enable = true; # Tutanota: secure email client
signal.enable = true; # Signal: secure messaging app
teams.enable = true; # Teams-for-linux: Unofficial Microsoft Teams client for Linux
tutanota.enable = false; # Tutanota: secure email client
signal.enable = false; # Signal: secure messaging app
teams.enable = false; # Teams-for-linux: Unofficial Microsoft Teams client for Linux
ferdium.enable = false; # Ferdium: All your services in one place built by the community
notify.enable = false; # notify-client: Ntfy client application to receive everyday's notifications
appImages.fluxer.enable = false; # Fluxer: Discord alternative
@@ -88,26 +87,27 @@ _: {
Productivity / Knowledge Management
*/
bitwarden.enable = false; # Bitwarden: password manager (desktop)
iotas.enable = true; # Iotas: lightweight notes manager
logseq.enable = false; # Logseq: knowledge base and outliner
iotas.enable = false; # Iotas: lightweight notes manager
# appImages.logseq.enable = false; # Logseq: knowledge base and outliner
/*
Media & Graphics
*/
eyeOfGnome.enable = true; # Eye of GNOME: image viewer
eyeOfGnome.enable = false; # Eye of GNOME: image viewer
switcheroo.enable = false; # Switcheroo: file conversion tool
freetube.enable = false; # FreeTube: privacyfriendly YouTube client
gimp.enable = false; # GIMP: GNU Image Manipulation Program
kdenlive.enable = false; # Kdenlive: video editing software
pixieditor.enable = false; # Pixieditor: Universal editor for all your 2D needs
plex.enable = true; # Plex: media player and server client
jellyfin.enable = true; # Jellyfin: foss media player
plex.enable = false; # Plex: media player and server client
jellyfin.enable = false; # Jellyfin: foss media player
appImages.losslesscut.enable = false; # Losslesscut: Swiss army knife of lossless video/audio editing
/*
Utilities / Misc
*/
eddieAirVPN.enable = true; # Eddie AirVPN: VPN client
gnomeCalculator.enable = true; # gnomeCalculator: simple calculator
eddieAirVPN.enable = false; # Eddie AirVPN: VPN client
gnomeCalculator.enable = false; # gnomeCalculator: simple calculator
gedit.enable = false; # Gedit: GNOME text editor
winboat.enable = false; # Winboat: Windows remote desktop via RDP
adb.enable = false; # ADB: Android SDK platform tools
+4 -3
View File
@@ -15,6 +15,10 @@
gitUsername = "GarandPLG";
gitEmail = "my@email.com";
# User shell
# Availabe options: "fish", "bash"
shell = "fish";
# Hyprland Settings
# Examples:
# extraMonitorSettings = "monitor = Virtual-1,1920x1080@60,auto,1";
@@ -37,9 +41,6 @@
# Enable NFS
enableNFS = false;
# Enable Printing Support
printEnable = false;
# Themes, waybar and animation.
# Only uncomment your selection
# The others much be commented out.
+2 -4
View File
@@ -2,11 +2,9 @@
pkgs,
lib,
config,
host,
profile,
...
}: let
inherit (import ../../hosts/${host}/variables.nix) profile;
in {
}: {
options.docker.enable = lib.mkEnableOption "Docker";
config.virtualisation.docker = lib.mkIf config.docker.enable {
+3 -5
View File
@@ -6,11 +6,9 @@
services.greetd = {
enable = true;
#vt = 3;
settings = {
default_session = {
user = username;
command = "${pkgs.tuigreet}/bin/tuigreet --time --cmd Hyprland"; # start Hyprland with a TUI login manager
};
settings.default_session = {
user = username;
command = "${pkgs.tuigreet}/bin/tuigreet --time --cmd Hyprland"; # start Hyprland with a TUI login manager
};
};
}
+2 -3
View File
@@ -1,10 +1,9 @@
{
host,
hostId,
options,
...
}: let
inherit (import ../../hosts/${host}/variables.nix) hostId;
in {
}: {
# Defensive assertion for hostname validity (clearer message at eval time)
assertions = [
{
+1 -3
View File
@@ -1,6 +1,4 @@
{host, ...}: let
inherit (import ../../hosts/${host}/variables.nix) enableNFS;
in {
{enableNFS, ...}: {
services = {
rpcbind.enable = enableNFS;
nfs.server.enable = enableNFS;
@@ -14,6 +14,8 @@
appImagePackages = {
fluxer = pkgs.callPackage ./fluxer.nix {};
helium = pkgs.callPackage ./helium.nix {};
# logseq = pkgs.callPackage ./logseq.nix {};
losslesscut = pkgs.callPackage ./losslesscut.nix {};
};
in {
imports = builtins.attrValues (builtins.mapAttrs mkAppImagePackage appImagePackages);
+2 -1
View File
@@ -5,10 +5,11 @@
}: let
pname = "fluxer";
version = "canary";
hash = "sha256-GdoBK+Z/d2quEIY8INM4IQy5tzzIBBM+3CgJXQn0qAw=";
src = fetchurl {
url = "https://api.fluxer.app/dl/desktop/stable/linux/x64/latest/appimage";
sha256 = "sha256-GdoBK+Z/d2quEIY8INM4IQy5tzzIBBM+3CgJXQn0qAw=";
sha256 = hash;
};
appimageContents = appimageTools.extract {inherit pname version src;};
+3 -2
View File
@@ -4,11 +4,12 @@
fetchurl,
}: let
pname = "helium";
version = "0.12.4.1";
version = "0.13.4.1";
hash = "sha256-z23up+T6bj6F+cQslmI92bEksIAw1OQHRIrmQSaaxY8=";
src = fetchurl {
url = "https://github.com/imputnet/helium-linux/releases/download/${version}/helium-${version}-x86_64.AppImage";
sha256 = "sha256-OgS8HkLBseFrEhNFJxMwp1bg0gzPdfY1VaySAAp7vq0=";
sha256 = hash;
};
appimageContents = appimageTools.extract {inherit pname version src;};
@@ -0,0 +1,40 @@
{
lib,
appimageTools,
fetchurl,
}: let
pname = "logseq";
version = "0.10.15";
hash = "sha256-i5EQUvSW1ix+8NT8nCs6mGH2B9xF7G4mB7vBhDJ7JdE=";
src = fetchurl {
url = "https://github.com/logseq/logseq/releases/download/${version}/Logseq-linux-x64-${version}.AppImage";
sha256 = hash;
};
appimageContents = appimageTools.extract {inherit pname version src;};
iconSize = "512x512";
in
appimageTools.wrapType2 {
inherit pname version src;
extraInstallCommands = ''
# mv $out/bin/${pname}-${version} $out/bin/${pname}
install -m 444 -D ${appimageContents}/${pname}.desktop $out/share/applications/${pname}.desktop
install -m 444 -D ${appimageContents}/usr/share/icons/hicolor/${iconSize}/apps/${pname}.png \
$out/share/icons/hicolor/${iconSize}/apps/${pname}.png
substituteInPlace $out/share/applications/${pname}.desktop \
--replace-fail 'Exec=AppRun' 'Exec=${pname}'
'';
meta = with lib; {
description = "Logseq";
homepage = "https://github.com/logseq/logseq";
license = licenses.gpl3;
platforms = ["x86_64-linux"];
sourceProvenance = with lib.sourceTypes; [binaryNativeCode];
maintainers = with lib.maintainers; [garand_plg];
};
}
# https://github.com/logseq/logseq/releases/download/0.10.15/Logseq-linux-x64-0.10.15.AppImage
@@ -0,0 +1,40 @@
{
lib,
appimageTools,
fetchurl,
}: let
pname = "losslesscut";
version = "3.69.0";
hash = "sha256-F56q4nv/viWmVJpKcUR0EmtXwojO/DBwRvycYxOhJnY=";
src = fetchurl {
url = "https://github.com/mifi/lossless-cut/releases/download/v${version}/LosslessCut-linux-x86_64.AppImage";
sha256 = hash;
};
appimageContents = appimageTools.extract {inherit pname version src;};
iconSize = "512x512";
in
appimageTools.wrapType2 {
inherit pname version src;
extraInstallCommands = ''
# mv $out/bin/${pname}-${version} $out/bin/${pname}
install -m 444 -D ${appimageContents}/${pname}.desktop $out/share/applications/${pname}.desktop
install -m 444 -D ${appimageContents}/usr/share/icons/hicolor/${iconSize}/apps/${pname}.png \
$out/share/icons/hicolor/${iconSize}/apps/${pname}.png
substituteInPlace $out/share/applications/${pname}.desktop \
--replace-fail 'Exec=AppRun' 'Exec=${pname}'
'';
meta = with lib; {
description = "Lossless cut";
homepage = "https://github.com/mifi/lossless-cut";
license = licenses.gpl2Only;
platforms = ["x86_64-linux"];
sourceProvenance = with lib.sourceTypes; [binaryNativeCode];
maintainers = with lib.maintainers; [garand_plg];
};
}
# https://github.com/mifi/lossless-cut/releases/download/v3.68.0/LosslessCut-linux-x86_64.AppImage
+11 -10
View File
@@ -19,12 +19,11 @@
gnomeCalculator = gnome-calculator;
gedit = gedit;
iotas = iotas;
logseq = logseq;
# logseq = logseq;
mattermost = mattermost-desktop;
slack = slack;
tutanota = tutanota-desktop;
exercism = exercism;
opencode = opencode;
jan = jan;
lazygit = lazygit;
prismlauncher = inputs.prismlauncher-cracked.packages.${system}.default;
@@ -32,14 +31,16 @@
ttySolitaire = tty-solitaire;
gimp = gimp;
eyeOfGnome = eog;
kdenlive = kdePackages.kdenlive.overrideAttrs (old: {
postInstall =
(old.postInstall or "")
+ ''
wrapProgram $out/bin/kdenlive \
--set QT_SCALE_FACTOR 0.8
'';
});
kdenlive =
kdePackages.kdenlive.overrideAttrs
(old: {
postInstall =
(old.postInstall or "")
+ ''
wrapProgram $out/bin/kdenlive \
--set QT_SCALE_FACTOR 0.8
'';
});
plex = [
(
plex-desktop.override {
+13 -1
View File
@@ -1,18 +1,30 @@
_: {
{shell, ...}: {
programs = {
nano.enable = true;
hyprland = {
enable = true;
withUWSM = false;
};
fish.enable =
if shell == "fish"
then true
else false;
dconf.enable = true;
seahorse.enable = true;
fuse.userAllowOther = true;
mtr.enable = true;
gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
nix-ld = {
enable = true;
# libraries = with pkgs; [
+4 -4
View File
@@ -1,11 +1,11 @@
{
pkgs,
lib,
host,
printEnable,
ensureDefaultPrinter,
ensurePrinters,
...
}: let
inherit (import ../../hosts/${host}/printers.nix) printEnable ensureDefaultPrinter ensurePrinters;
in {
}: {
services = lib.mkIf printEnable {
printing = {
enable = true;
+10 -8
View File
@@ -18,10 +18,10 @@
dedicatedServer.openFirewall = true;
gamescopeSession = lib.mkIf config.gamescope.enable {
enable = true;
args = [
"--rt"
"--expose-wayland"
];
# args = [
# "--rt"
# "--expose-wayland"
# ];
};
extraCompatPackages = [pkgs.proton-ge-bin];
};
@@ -29,10 +29,10 @@
gamescope = lib.mkIf config.gamescope.enable {
enable = true;
capSysNice = true;
args = [
"--rt"
"--expose-wayland"
];
# args = [
# # "--rt"
# # "--expose-wayland"
# ];
};
gamemode = lib.mkIf config.gamemode.enable {
@@ -41,3 +41,5 @@
};
};
}
# gamescope -W 1920 -H 1080 -r 144 --force-grab-cursor -f --mangoapp --rt --expose-wayland --
+15 -10
View File
@@ -1,10 +1,8 @@
{
pkgs,
host,
stylixImage,
...
}: let
inherit (import ../../hosts/${host}/variables.nix) stylixImage;
in {
}: {
# Styling Options
stylix = {
enable = true;
@@ -36,13 +34,20 @@ in {
popups = 12;
};
};
targets.limine = {
enable = true;
colors.enable = true;
image.enable = true;
imageScalingMode = {
targets = {
limine = {
enable = true;
override = "tile";
colors.enable = true;
image.enable = true;
imageScalingMode = {
enable = true;
override = "tile";
};
};
kmscon = {
enable = false;
colors.enable = true;
fonts.enable = true;
};
};
};
+10 -6
View File
@@ -1,10 +1,8 @@
{
host,
consoleKeyMap,
inputs,
...
}: let
inherit (import ../../hosts/${host}/variables.nix) consoleKeyMap;
in {
}: {
nix = {
nixPath = ["nixpkgs=${inputs.nixpkgs}"];
settings = {
@@ -14,8 +12,14 @@ in {
"nix-command"
"flakes"
];
substituters = ["https://hyprland.cachix.org"];
trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="];
substituters = [
"https://hyprland.cachix.org"
"https://noctalia.cachix.org"
];
trusted-public-keys = [
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
"noctalia.cachix.org-1:pCOR47nnMEo5thcxNDtzWpOxNFQsBRglJzxWPp3dkU4="
];
};
};
time.timeZone = "Europe/Warsaw";
+22 -4
View File
@@ -5,10 +5,14 @@
host,
profile,
system,
gitUsername,
shell,
extraMonitorSettings,
keyboardLayout,
gitEmail,
location,
...
}: let
inherit (import ../../hosts/${host}/variables.nix) gitUsername;
in {
}: {
imports = [inputs.home-manager.nixosModules.home-manager];
home-manager = {
useUserPackages = true;
@@ -21,6 +25,12 @@ in {
host
profile
system
extraMonitorSettings
shell
keyboardLayout
gitEmail
gitUsername
location
;
};
users.${username} = {
@@ -33,6 +43,10 @@ in {
username = "${username}";
homeDirectory = "/home/${username}";
stateVersion = "25.11";
shell.enableFishIntegration =
if shell == "fish"
then true
else false;
};
};
};
@@ -53,7 +67,11 @@ in {
"gamemode"
"lpadmin"
];
shell = pkgs.bash;
shell = with pkgs; (
if shell == "fish"
then fish
else bash
);
ignoreShellProgramCheck = true;
linger = true;
};
+1 -3
View File
@@ -1,6 +1,4 @@
{host, ...}: let
inherit (import ../../hosts/${host}/variables.nix) keyboardLayout;
in {
{keyboardLayout, ...}: {
services.xserver = {
enable = true;
xkb = {
+8 -1
View File
@@ -12,6 +12,13 @@
package = pkgs.anki;
language = "pl_PL";
style = "native";
profiles."${username}".sync.username = username;
profiles."${username}" = {
default = true;
sync = {
username = username;
url = "https://ass.garandplg.com/";
autoSync = true;
};
};
};
}
+3 -2
View File
@@ -9,6 +9,7 @@
upd = "nh os switch -H ${host} -d always";
upg = "nh os switch -H ${host} --update -d always";
upf = "sudo nix flake update --flake /home/${username}/garandos";
upf-gh = "nix flake update --option access-tokens \"github.com=$(gh auth token)\" --flake /home/${username}/garandos";
upf-undo = "git -C /home/${username}/garandos restore /home/${username}/garandos/flake.lock";
upd-bt = "nh os boot -H ${host} -d always";
upd-ts = "nh os test -H ${host} -d always";
@@ -140,8 +141,8 @@
# Network aliases
kssh-server = "kssh hp-t640-homeserver";
kssh-server-ts = "kssh hp-t640-homeserver-tailscale";
kssh-server-hs = "kssh hp-t640-homeserver-headscale";
ssh-server = "ssh hp-t640-homeserver";
ssh-server-ts = "ssh hp-t640-homeserver-tailscale";
ssh-server-hs = "ssh hp-t640-homeserver-headscale";
};
}
+5 -2
View File
@@ -1,6 +1,9 @@
_: {
{shell, ...}: {
programs.bash = {
enable = true;
enable =
if shell == "bash"
then true
else false;
enableCompletion = true;
# initExtra = ''
# fastfetch
+1
View File
@@ -16,6 +16,7 @@
batgrep
];
};
home.sessionVariables = {
MANPAGER = "sh -c 'col -bx | bat -l man -p'";
MANROFFOPT = "-c";
+6 -1
View File
@@ -3,10 +3,12 @@ _: {
./bash
./chromium
./fastfetch
./fish
./hyprland
./kitty
./librewolf
./noctalia
./obsidian
./scripts
./vscodium
./xdg
@@ -16,16 +18,19 @@ _: {
./btop.nix
./cava.nix
./easyeffects.nix
./emoji.nix
./eza.nix
./fzf.nix
./gh.nix
./git.nix
./gtk.nix
./kdeConnect.nix
./lutris.nix
./mangohud.nix
./nextcloud.nix
./obs-studio.nix
./ollama.nix
./onlyoffice.nix
./opencode.nix
./qt.nix
./ssh.nix
./starship.nix
File diff suppressed because it is too large Load Diff
+9 -3
View File
@@ -1,9 +1,15 @@
# Eza is a ls replacement
{
{shell, ...}: {
programs.eza = {
enable = true;
icons = "auto";
enableBashIntegration = true;
enableFishIntegration =
if shell == "fish"
then true
else false;
enableBashIntegration =
if shell == "bash"
then true
else false;
git = true;
extraOptions = [
+15 -19
View File
@@ -122,29 +122,25 @@ _: {
{
type = "command";
key = " IN";
text =
#bash
''
birth_install=$(stat -c %W /)
if [ "$birth_install" -gt 0 ]; then
echo "Installed $(date -d @"$birth_install" +"%Y-%m-%d")"
else
echo "Installation date unknown"
fi
'';
text = ''
birth_install=$(stat -c %W /)
if [ "$birth_install" -gt 0 ]; then
echo "Installed $(date -d @"$birth_install" +"%Y-%m-%d")"
else
echo "Installation date unknown"
fi
'';
}
{
type = "command";
key = " ";
text =
#bash
''
birth_install=$(stat -c %W /)
current=$(date +%s)
delta=$((current - birth_install))
delta_days=$((delta / 86400))
echo $delta_days days
'';
text = ''
birth_install=$(stat -c %W /)
current=$(date +%s)
delta=$((current - birth_install))
delta_days=$((delta / 86400))
echo $delta_days days
'';
}
{
type = "uptime";
+141
View File
@@ -0,0 +1,141 @@
{
username,
host,
...
}: {
programs.fish.shellAliases = {
# GarandOS aliases
pullos = "git -C /home/${username}/garandos pull";
upd = "nh os switch -H ${host} -d always";
upg = "nh os switch -H ${host} --update -d always";
upf = "sudo nix flake update --flake /home/${username}/garandos";
upf-gh = "nix flake update --option access-tokens \"github.com=$(gh auth token)\" --flake /home/${username}/garandos";
upf-undo = "git -C /home/${username}/garandos restore /home/${username}/garandos/flake.lock";
upd-bt = "nh os boot -H ${host} -d always";
upd-ts = "nh os test -H ${host} -d always";
upd-bd = "nh os build -H ${host} -d always";
tui = "garandos-tui";
ncg = "nh clean all --optimise";
# Development aliases
## Django
srvenv = "source .venv/bin/activate";
"..srvenv" = "source ../.venv/bin/activate";
uv-add = "uv add -r requirements.txt";
pm = "uv run manage.py";
pm-rs = "uv run manage.py runserver";
pm-mg = "uv run manage.py migrate";
pm-mm = "uv run manage.py makemigrations";
pm-sq = "uv run manage.py sqlmigrate";
f8 = "uv run flake8 .";
## JavaScript/TypeScript
bbr = "bun --bun run";
## Git
"ga." = "git add .";
mkgidf = "git add . --intent-to-add . && git diff > git-diff.txt";
# Development aliases for nix flake
nd = "nix develop";
nb = "nix build .";
nr = "nix run .";
nbr = "nix build . && nix run .";
nbd = "nix build .#develop";
nrd = "nix run .#develop";
nbrd = "nix build .#develop && nix run .#develop";
# Development aliases for docker
dcu = "docker compose up -d";
dcd = "docker compose down";
dcb = "docker compose build";
dcub = "docker compose up -d --build";
# System aliases
# flush-codium = "sudo killall codium && sudo rm -rf ~/.config/VSCodium/Cache && sudo rm -rf ~/.config/VSCodium/CachedData";
kys = "systemctl poweroff";
jezus = "systemctl reboot";
ookla = "speedtest";
hypr-cli = "hyprctl clients";
# Navigation aliases
".." = "cd ..";
"..." = "cd ../..";
"...." = "cd ../../..";
"....." = "cd ../../../..";
# Modifies commands
cat = "bat";
cp = "cp -i";
mv = "mv -i";
rm = "trash -v";
mkdir = "mkdir -p";
ps = "ps auxf";
ping = "ping -c 10";
less = "less -R";
cls = "clear";
multitail = "multitail --no-repeat -c";
freshclam = "sudo freshclam";
# Alias"s for multiple directory listing commands
la = "eza -alh --icons"; # show hidden files
ls = "eza -aF --icons --color=always"; # add colors and file type extensions
lx = "eza -lh --icons --sort=extension"; # sort by extension
lk = "eza -lh --icons --sort=size --reverse"; # sort by size
lc = "eza -lh --icons --sort=changed"; # sort by change time
lu = "eza -lh --icons --sort=accessed"; # sort by access time
lr = "eza -lh --icons --recurse"; # recursive ls
lt = "eza -lh --icons --sort=modified"; # sort by date
lm = "eza -alh --icons | more"; # pipe through "more"
lw = "eza -xh --icons"; # wide listing format
ll = "eza -lh --icons"; # long listing format
labc = "eza -lah --icons --sort=name"; # alphabetical sort
lf = "eza -lh --icons | grep -v '^d'"; # files only (przybliżenie)
ldir = "eza -lh --icons --only-dirs"; # directories only
lla = "eza -alh --icons"; # List and Hidden Files
las = "eza -a --icons"; # Hidden Files
lls = "eza -lh --icons"; # List
# chmod commands
mx = "chmod a+x";
"000" = "chmod -R 000";
"644" = "chmod -R 644";
"666" = "chmod -R 666";
"755" = "chmod -R 755";
"777" = "chmod -R 777";
# Search command line history
h = "history | grep ";
# Search running processes
p = "ps aux | grep ";
topcpu = "/bin/ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10";
# Search files in the current folder
f = "find . | grep ";
# Alias"s to show disk space and space used in a folder
diskspace = "du -S | sort -n -r |more";
folders = "du -h --max-depth=1";
folderssort = "find . -maxdepth 1 -type d -print0 | xargs -0 du -sk | sort -rn";
tree = "tree -CAhF --dirsfirst";
treed = "tree -CAFd";
mountedinfo = "df -hT";
# fix kitty ssh connection
kssh = "kitty +kitten ssh";
docker-clean = "docker container prune -f ; docker image prune -f ; docker network prune -f ; docker volume prune -f";
# Remove a directory and all files
rmd = "/bin/rm --recursive --force --verbose ";
# Fun aliases
pasjans = "ttysolitaire -p 10 --no-background-color";
fc = "fortune | cowsay";
# Network aliases
kssh-server = "kssh hp-t640-homeserver";
kssh-server-hs = "kssh hp-t640-homeserver-headscale";
ssh-server = "ssh hp-t640-homeserver";
ssh-server-hs = "ssh hp-t640-homeserver-headscale";
};
}
+39
View File
@@ -0,0 +1,39 @@
{
pkgs,
shell,
...
}: {
programs = {
fish = {
enable =
if shell == "fish"
then true
else false;
package = pkgs.fish;
generateCompletions = true;
interactiveShellInit = ''
set fish_greeting
# fastfetch
'';
};
nix-your-shell = {
enable = true;
package = pkgs.nix-your-shell;
enableFishIntegration =
if shell == "fish"
then true
else false;
nix-output-monitor = {
enable = true;
package = pkgs.nix-output-monitor;
};
};
};
imports = [
./aliases.nix
./functions.nix
./plugins.nix
];
}
+236
View File
@@ -0,0 +1,236 @@
_: {
programs.fish.functions = {
# Count files, links and directories in the current folder
countfiles = {
body = ''
for t in files links directories
# $t[1] pierwszy znak (f, l, d)
echo (find . -type $t[1] | wc -l) $t
end
'';
description = "Count files, links and directories in the current folder";
};
# Tail all text logs in /var/log
logs = {
body = ''
sudo find /var/log -type f -exec file {} \; \
| grep 'text' \
| cut -d' ' -f1 \
| sed -e 's/:$//g' \
| grep -v '[0-9]$' \
| xargs tail -f
'';
description = "Tail all text logs in /var/log";
};
# Quick directory creation and navigation
mkcd = {
body = ''
mkdir -p $argv[1]; and cd $argv[1]
'';
description = "Create a directory and cd into it";
};
# Extract various archive formats
extract = {
body = ''
for archive in $argv
if test -f $archive
switch $archive
case *.tar.bz2
tar xvjf $archive
case *.tar.gz
tar xvzf $archive
case *.bz2
bunzip2 $archive
case *.rar
unrar x $archive
case *.gz
gunzip $archive
case *.tar
tar xvf $archive
case *.tbz2
tar xvjf $archive
case *.tgz
tar xvzf $archive
case *.zip
unzip $archive
case *.Z
uncompress $archive
case *.7z
7z x $archive
case '*'
echo "don't know how to extract '$archive'..."
end
else
echo "'$archive' is not a valid file!"
end
end
'';
description = "Extract various archive formats";
};
# Find files quickly
ff = {
body = ''
if test -n "$argv[1]"
find . -type f -name "*$argv[1]*"
else
echo "Usage: ff <pattern>"
end
'';
description = "Find files matching a pattern";
};
# Find directories quickly
fd = {
body = ''
if test -n "$argv[1]"
find . -type d -name "*$argv[1]*"
else
echo "Usage: fd <pattern>"
end
'';
description = "Find directories matching a pattern";
};
# IP address lookup
whatismyip = {
body = ''
# Internal IP
if command -v ip >/dev/null
echo -n "Internal IP: "
ip addr show wlan0 | grep "inet " | awk '{print $2}' | cut -d/ -f1
else
echo -n "Internal IP: "
ifconfig wlan0 | grep "inet " | awk '{print $2}'
end
# External IP
echo -n "External IP: "
curl -4 ifconfig.me
'';
description = "Show internal and external IP addresses";
};
# Search for text in all files in the current folder
ftext = {
body = ''
if test -n "$argv[1]"
grep -iIHrn --color=always "$argv[1]" . | less -r
else
echo "Usage: ftext <search term>"
end
'';
description = "Search text in files, showing matches with highlighting";
};
# Copy file with a progress bar
cpp = {
body = ''
set -e
# Use strace to monitor cp progress
strace -q -ewrite cp -- $argv[1] $argv[2] 2>&1 |
awk '
{
count += $NF
if (count % 10 == 0) {
percent = count / total_size * 100
printf "%3d%% [", percent
for (i=0;i<=percent;i++) printf "="
printf ">"
for (i=percent;i<100;i++) printf " "
printf "]\r"
}
}
END { print "" }' total_size="$(stat -c "%s" $argv[1])" count=0
'';
description = "Copy a file with a visual progress bar";
};
# Copy and go to the directory
cpg = {
body = ''
cp $argv[1] $argv[2]
if test -d $argv[2]
cd $argv[2]
end
'';
description = "Copy a file and cd into the destination directory if it's a directory";
};
# Move and go to the directory
mvg = {
body = ''
mv $argv[1] $argv[2]
if test -d $argv[2]
cd $argv[2]
end
'';
description = "Move a file and cd into the destination directory if it's a directory";
};
# Create and go to the directory
mkdirg = {
body = ''
mkdir -p $argv[1]; and cd $argv[1]
'';
description = "Create a directory and cd into it";
};
# Go up N directories (e.g. up 4)
up = {
body = ''
set limit $argv[1]
if test -z "$limit"
set limit 1
end
set path (pwd)
for i in (seq $limit)
set path (dirname $path)
end
cd $path
'';
description = "Go up N directories";
};
# cd with automatic ls after each cd
cd = {
body = ''
builtin cd $argv
if test $status -eq 0
ls
end
'';
description = "cd with automatic ls";
};
# Return the last two components of the working directory
pwdtail = {
body = ''
pwd | awk -F/ '{nlast = NF - 1; print $nlast "/" $NF}'
'';
description = "Show the last two components of the current path";
};
# Download video via ffmpeg
ffmpeg_dl = {
body = ''
if count $argv != 3
echo "Usage: ffmpeg_dl <url> <name> <fs_path>"
return 1
end
set url $argv[1]
set name $argv[2]
set fs_path $argv[3]
mkdir -p $fs_path
set output "$fs_path/$name.mp4"
ffmpeg -i $url -c copy $output
'';
description = "Download a video using ffmpeg to a given location";
};
};
}
+25
View File
@@ -0,0 +1,25 @@
{pkgs, ...}: {
programs.fish.plugins = [
# {
# name = "z";
# src = pkgs.fetchFromGitHub {
# owner = "jethrokuan";
# repo = "z";
# rev = "ddeb28a7b6a1f0ec6dae40c636e5ca4908ad160a";
# sha256 = "0c5i7sdrsp0q3vbziqzdyqn4fmp235ax4mn4zslrswvn8g3fvdyh";
# };
# }
# # oh-my-fish plugins are stored in their own repositories, which
# # makes them simple to import into home-manager.
# {
# name = "fasd";
# src = pkgs.fetchFromGitHub {
# owner = "oh-my-fish";
# repo = "plugin-fasd";
# rev = "38a5b6b6011106092009549e52249c6d6f501fba";
# sha256 = "06v37hqy5yrv5a6ssd1p3cjd9y3hnp19d3ab7dag56fs1qmgyhbs";
# };
# }
];
}
+9 -19
View File
@@ -1,24 +1,14 @@
# Fzf is a general-purpose command-line fuzzy finder.
{
config,
lib,
...
}: let
accent = "#" + config.lib.stylix.colors.base0D;
foreground = "#" + config.lib.stylix.colors.base05;
muted = "#" + config.lib.stylix.colors.base03;
in {
{shell, ...}: {
programs.fzf = {
enable = true;
enableBashIntegration = true;
colors = lib.mkForce {
"fg+" = accent;
"bg+" = "-1";
"fg" = foreground;
"bg" = "-1";
"prompt" = muted;
"pointer" = accent;
};
enableFishIntegration =
if shell == "fish"
then true
else false;
enableBashIntegration =
if shell == "bash"
then true
else false;
defaultOptions = [
"--margin=1"
"--layout=reverse"
+21
View File
@@ -0,0 +1,21 @@
{
pkgs,
gitUsername,
...
}: {
programs.gh = {
enable = true;
package = pkgs.gh;
hosts."github.com" = {
git_protocol = "https";
users = [
"${gitUsername}"
];
user = "${gitUsername}";
};
settings = {
git_protocol = "https";
version = "1";
};
};
}
+5 -3
View File
@@ -1,6 +1,8 @@
{host, ...}: let
inherit (import ../../hosts/${host}/variables.nix) gitUsername gitEmail;
in {
{
gitUsername,
gitEmail,
...
}: {
programs.git = {
enable = true;
settings = {
+1 -6
View File
@@ -5,11 +5,6 @@
package = pkgs.papirus-icon-theme;
};
gtk3.extraConfig.gtk-application-prefer-dark-theme = 1;
gtk4 = {
theme = null;
extraConfig = {
gtk-application-prefer-dark-theme = 1;
};
};
gtk4.extraConfig.gtk-application-prefer-dark-theme = 1;
};
}
+6 -8
View File
@@ -1,11 +1,9 @@
{
host,
config,
extraMonitorSettings,
keyboardLayout,
pkgs,
...
}: let
inherit (import ../../../hosts/${host}/variables.nix) extraMonitorSettings keyboardLayout;
in {
}: {
systemd.user.targets.hyprland-session.Unit.Wants = [
"xdg-desktop-autostart.target"
];
@@ -64,8 +62,8 @@ in {
gaps_out = 8;
border_size = 2;
resize_on_border = true;
"col.active_border" = "rgb(${config.lib.stylix.colors.base08}) rgb(${config.lib.stylix.colors.base0C}) 45deg";
"col.inactive_border" = "rgb(${config.lib.stylix.colors.base01})";
# "col.active_border" = "rgb(${config.lib.stylix.colors.base08}) rgb(${config.lib.stylix.colors.base0C}) 45deg";
# "col.inactive_border" = "rgb(${config.lib.stylix.colors.base01})";
};
misc = {
@@ -107,7 +105,7 @@ in {
enabled = true;
range = 4;
render_power = 3;
color = "rgba(1a1a1aee)";
# color = "rgba(1a1a1aee)";
};
};
+9 -1
View File
@@ -1,7 +1,15 @@
{pkgs, ...}: {
{
pkgs,
shell,
...
}: {
programs.kitty = {
enable = true;
package = pkgs.kitty;
shellIntegration.enableFishIntegration =
if shell == "fish"
then true
else false;
};
imports = [
+72
View File
@@ -0,0 +1,72 @@
{
pkgs,
lib,
config,
...
}: {
options.mangohud.enable = lib.mkEnableOption "MangoHud";
config = lib.mkIf config.mangohud.enable {
programs.mangohud = {
enable = true;
package = pkgs.mangohud;
settings = lib.mkForce {
position = "top-right";
background_alpha = 0.4;
font_size = 18;
round_corners = 8;
no_display = 0;
gpu_color = "2e9ef4";
cpu_color = "39d353";
vram_color = "ad3aff";
ram_color = "c0c0c0";
engine_color = "eb5454";
frametime_color = "e8c446";
text_color = "ffffff";
background_color = "020202";
media_player_color = "ffffff";
fps_color_change = 1;
fps_color = "39d353,e8c446,eb5454";
fps_value = "60,30";
fps = 1;
fps_only = 0;
gpu_stats = 1;
gpu_load_change = 1;
gpu_load_value = "60,90";
gpu_load_color = "39d353,e8c446,eb5454";
gpu_temp = 1;
gpu_core_clock = 1;
gpu_mem_clock = 0;
gpu_power = 1;
gpu_name = 1;
vram = 1;
cpu_stats = 1;
cpu_load_change = 1;
cpu_load_value = "60,90";
cpu_load_color = "39d353,e8c446,eb5454";
cpu_temp = 1;
cpu_mhz = 1;
core_load = 0;
ram = 1;
frametime = 1;
frame_timing = 1;
histogram = 0;
engine_version = 1;
vulkan_driver = 1;
arch = 0;
fps_limit = 0;
toggle_hud = "Shift_R+F12";
toggle_fps_limit = "Shift_L+F1";
};
};
};
}
+45 -9
View File
@@ -1,7 +1,22 @@
{lib, ...}: let
{
lib,
config,
...
}: let
sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
in {
programs.noctalia-shell = lib.mkForce {
options.nooctalia-plugins = {
mini-docker.enable = lib.mkEnableOption "Mini docker plugin";
timer.enable = lib.mkEnableOption "Timer plugin";
keybind-cheatsheet.enable = lib.mkEnableOption "Keybind cheatsheet plugin";
kde-connect.enable = lib.mkEnableOption "KDE Connect plugin";
screen-recorder.enable = lib.mkEnableOption "Screen-recorder plugin";
screenshot.enable = lib.mkEnableOption "Screenshot plugin";
ntfy-notifications.enable = lib.mkEnableOption "ntfy notifications plugin";
tailscale.enable = lib.mkEnableOption "Tailscale plugin";
};
config.programs.noctalia-shell = lib.mkForce {
plugins = {
sources = [
{
@@ -11,31 +26,35 @@ in {
}
];
states = {
mini-docker = {
mini-docker = lib.mkIf config.nooctalia-plugins.mini-docker.enable {
enabled = true;
sourceUrl = sourceUrl;
};
timer = {
timer = lib.mkIf config.nooctalia-plugins.timer.enable {
enabled = true;
sourceUrl = sourceUrl;
};
keybind-cheatsheet = {
keybind-cheatsheet = lib.mkIf config.nooctalia-plugins.keybind-cheatsheet.enable {
enabled = true;
sourceUrl = sourceUrl;
};
kde-connect = {
kde-connect = lib.mkIf config.nooctalia-plugins.kde-connect.enable {
enabled = true;
sourceUrl = sourceUrl;
};
screen-recorder = {
screen-recorder = lib.mkIf config.nooctalia-plugins.screen-recorder.enable {
enabled = true;
sourceUrl = sourceUrl;
};
screenshot = {
screenshot = lib.mkIf config.nooctalia-plugins.screenshot.enable {
enabled = true;
sourceUrl = sourceUrl;
};
ntfy-notifications = {
ntfy-notifications = lib.mkIf config.nooctalia-plugins.ntfy-notifications.enable {
enabled = true;
sourceUrl = sourceUrl;
};
tailscale = lib.mkIf config.nooctalia-plugins.tailscale.enable {
enabled = true;
sourceUrl = sourceUrl;
};
@@ -92,6 +111,23 @@ in {
# maxMessages = 100;
# readMessageIds = [];
# };
tailscale = {
refreshInterval = 5000;
compactMode = true;
showIpAddress = false;
showPeerCount = false;
hideDisconnected = false;
hideMullvadExitNodes = true;
showSearchBar = false;
terminalCommand = "kitty";
sshUsername = "";
pingCount = 5;
defaultPeerAction = "copy-ip";
taildropEnabled = true;
taildropDownloadDir = "~/Downloads";
taildropReceiveMode = "operator";
loginServer = "https://hs.garandplg.com";
};
};
};
}
@@ -11,6 +11,9 @@
hidePassive = false;
pinned = [];
}
{
id = "plugin:tailscale";
}
{
id = "plugin:keybind-cheatsheet";
}
+2 -4
View File
@@ -1,11 +1,9 @@
{
lib,
host,
keyboardLayout,
username,
...
}: let
inherit (import ../../../../hosts/${host}/variables.nix) keyboardLayout;
in {
}: {
programs.noctalia-shell.settings.general = lib.mkForce {
avatarImage = "/home/${username}/.face.icon";
dimmerOpacity = 0.2;
+2 -4
View File
@@ -1,10 +1,8 @@
{
lib,
host,
location,
...
}: let
inherit (import ../../../../hosts/${host}/variables.nix) location;
in {
}: {
programs.noctalia-shell.settings.location = lib.mkForce {
name = "${location}";
weatherEnabled = true;
@@ -0,0 +1 @@
_: {}
+19
View File
@@ -0,0 +1,19 @@
{
pkgs,
lib,
config,
...
}: {
options.obsidian.enable = lib.mkEnableOption "Obsidian";
config.programs.obsidian = lib.mkIf config.obsidian.enable {
enable = true;
package = pkgs.obsidian;
cli.enable = true;
};
imports = [
# ./default-settings
./vaults
];
}
+12
View File
@@ -0,0 +1,12 @@
{
lib,
config,
...
}: {
options.obsidian.vaults."BoM".enable = lib.mkEnableOption "Obsidian BoM vault";
config.programs.obsidian.vaults."BoM" = lib.mkIf config.obsidian.vaults."BoM".enable {
enable = true;
target = "Obsidian/BoM";
};
}
+5
View File
@@ -0,0 +1,5 @@
_: {
imports = [
./BoM.nix
];
}
+20
View File
@@ -0,0 +1,20 @@
{
pkgs,
lib,
config,
profile,
...
}: {
options.ollama.enable = lib.mkEnableOption "Ollama";
config.services.ollama = lib.mkIf config.ollama.enable {
enable = true;
package = pkgs.ollama;
acceleration =
if profile == "nvidia"
then "cuda"
else if profile == "amd"
then "rocm"
else null;
};
}
+13
View File
@@ -0,0 +1,13 @@
{
pkgs,
lib,
config,
...
}: {
options.opencode.enable = lib.mkEnableOption "Opencode";
config.programs.opencode = lib.mkIf config.opencode.enable {
enable = true;
package = pkgs.opencode;
};
}
+2 -2
View File
@@ -9,8 +9,8 @@
port = 22;
identityFile = "~/.ssh/hp-t640-homeserver";
};
"hp-t640-homeserver-tailscale" = {
hostname = "100.106.225.106";
"hp-t640-homeserver-headscale" = {
hostname = "100.64.0.2";
user = "${username}";
port = 22;
identityFile = "~/.ssh/hp-t640-homeserver";
+8 -6
View File
@@ -1,12 +1,14 @@
{
config,
lib,
shell,
...
}: let
accent = "#${config.lib.stylix.colors.base0D}";
in {
}: {
programs.starship = {
enable = true;
enableFishIntegration =
if shell == "fish"
then true
else false;
settings = {
add_newline = true;
format = lib.concatStrings [
@@ -44,8 +46,8 @@ in {
};
character = {
success_symbol = "[](${accent})";
error_symbol = "[](red)";
success_symbol = "";
error_symbol = "";
};
nix_shell = {
+95 -4
View File
@@ -1,14 +1,105 @@
{host, ...}: {
{
host,
shell,
...
}: {
stylix.targets = {
librewolf.profileNames = ["${host}"];
hyprland.enable = false;
librewolf = {
profileNames = ["${host}"];
enable = true;
firefoxGnomeTheme.enable = true;
fonts.enable = true;
inputs.enable = true;
};
hyprland = {
enable = true;
colors.enable = true;
hyprpaper.enable = true;
image.enable = true;
};
vscode.enable = false;
zed.enable = false;
vesktop.enable = false;
vesktop = {
enable = true;
colors.enable = true;
fonts.enable = true;
};
noctalia-shell.enable = true;
gtk = {
enable = true;
colors.enable = true;
flatpakSupport.enable = true;
fonts.enable = true;
};
qt = {
enable = true;
platform = "qtct";
};
fish = {
enable =
if shell == "fish"
then true
else false;
colors.enable = true;
inputs.enable = true;
};
starship = {
enable = true;
colors.enable = true;
};
fzf = {
enable = true;
colors.enable = true;
};
bat = {
enable = true;
colors.enable = true;
};
anki = {
enable = true;
colors.enable = true;
};
btop = {
enable = true;
colors.enable = true;
opacity.enable = true;
};
kitty = {
enable = true;
colors.enable = true;
fonts.enable = true;
inputs.enable = true;
opacity.enable = true;
variant256Colors = true;
};
opencode = {
enable = true;
colors.enable = true;
};
obsidian = {
enable = true;
colors.enable = true;
fonts.enable = true;
polarity.enable = true;
vaultNames = [
"BoM"
];
};
};
}
+12 -14
View File
@@ -1,16 +1,14 @@
{username, ...}: {
home.file = {
".config/swappy/config".text = ''
[Default]
save_dir=/home/${username}/Pictures/Screenshots
save_filename_format=swappy-%Y%m%d-%H%M%S.png
show_panel=false
line_size=5
text_size=20
text_font=Ubuntu
paint_mode=brush
early_exit=true
fill_shape=false
'';
};
home.file.".config/swappy/config".text = ''
[Default]
save_dir=/home/${username}/Pictures/Screenshots
save_filename_format=swappy-%Y%m%d-%H%M%S.png
show_panel=false
line_size=5
text_size=20
text_font=Ubuntu
paint_mode=brush
early_exit=true
fill_shape=false
'';
}
+3 -5
View File
@@ -1,8 +1,6 @@
_: {
dconf.settings = {
"org/virt-manager/virt-manager/connections" = {
autoconnect = ["qemu:///system"];
uris = ["qemu:///system"];
};
dconf.settings."org/virt-manager/virt-manager/connections" = {
autoconnect = ["qemu:///system"];
uris = ["qemu:///system"];
};
}
+2
View File
@@ -19,5 +19,7 @@ _: {
"deputy"
"biome"
"opencode"
"fish"
"tera"
];
}
+1
View File
@@ -8,5 +8,6 @@
uv
python314
ruff
deputy
];
}
+10
View File
@@ -15,6 +15,16 @@
# ];
# };
# };
deputy = {
binary = {
path = lib.getExe pkgs.deputy;
arguments = [
"serve"
"--github-token"
"$(gh auth token)"
];
};
};
rust-analyzer = {
binary = {
path = lib.getExe pkgs.bash;
+14 -9
View File
@@ -1,11 +1,16 @@
_: {
programs = {
zoxide = {
enable = true;
enableBashIntegration = true;
options = [
"--cmd cd"
];
};
{shell, ...}: {
programs.zoxide = {
enable = true;
enableFishIntegration =
if shell == "fish"
then true
else false;
enableBashIntegration =
if shell == "bash"
then true
else false;
options = [
"--cmd cd"
];
};
}
+6 -3
View File
@@ -1,6 +1,9 @@
{host, ...}: let
inherit (import ../../hosts/${host}/variables.nix) intelID nvidiaID;
in {
{
host,
intelID,
nvidiaID,
...
}: {
imports = [
../../hosts/${host}
../../modules/drivers