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" "treefmt-nix": "treefmt-nix"
}, },
"locked": { "locked": {
"lastModified": 1779522232, "lastModified": 1781331278,
"narHash": "sha256-43PUS3kPWEWVArFV9h1m4mrWIdHeeVXv7kdteYhobOs=", "narHash": "sha256-8IM7jJnnkhbKDbq39q4BS+DbE5CrsT4UhFtmcUDvVjE=",
"owner": "mrshmllow", "owner": "mrshmllow",
"repo": "affinity-nix", "repo": "affinity-nix",
"rev": "328f8f66e375c64255dc3cb3453271aab4d4c273", "rev": "f112cdef13bbd13e1067e72804c18c7622357547",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -116,11 +116,11 @@
}, },
"crane": { "crane": {
"locked": { "locked": {
"lastModified": 1779130139, "lastModified": 1780532242,
"narHash": "sha256-BLrtr42azquO7MdGFU5a7KiMl3YpFlTeIXqy1fT5GlQ=", "narHash": "sha256-D+BsdpxmtUwtqGoY0IXPhHgTlmqgcZKCEo1oMyn7ep0=",
"owner": "ipetkov", "owner": "ipetkov",
"repo": "crane", "repo": "crane",
"rev": "edb38893982a3338972bb4a2ec7ce7c29ba10fd9", "rev": "59a82a1222dd3b2080b5cc52a1a2e8d5f1b77f37",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -138,11 +138,11 @@
"rust-analyzer-src": "rust-analyzer-src" "rust-analyzer-src": "rust-analyzer-src"
}, },
"locked": { "locked": {
"lastModified": 1779270500, "lastModified": 1781086641,
"narHash": "sha256-r60KTphdevmdIDz1iJ529HvcpOq082ZZ1OnN3jDnrqk=", "narHash": "sha256-2oBncBeL671Tf6TnYqk36ebkfPHNYPKwz5at8NcrpvI=",
"owner": "nix-community", "owner": "nix-community",
"repo": "fenix", "repo": "fenix",
"rev": "848395a91def85c11694587636151d89555f1ddb", "rev": "640606300f74b4891bfa1a51f5756450f9fdc7f1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -181,11 +181,11 @@
}, },
"locked": { "locked": {
"dir": "pkgs/firefox-addons", "dir": "pkgs/firefox-addons",
"lastModified": 1779508957, "lastModified": 1781323358,
"narHash": "sha256-gNwsa7Hwp+pUNe9pvv2aFphcFnm8BoCUUQRm0HXJHD0=", "narHash": "sha256-W8SFmaIEW4tP4jQ48EJSSVnO8s4gZ1j1D4K22tW9pd8=",
"owner": "rycee", "owner": "rycee",
"repo": "nur-expressions", "repo": "nur-expressions",
"rev": "3bd76938b820b6f7cf537fffa206bb6a73094b4f", "rev": "89503b569dd29491d5c58bf41c244253fcd3d2b3",
"type": "gitlab" "type": "gitlab"
}, },
"original": { "original": {
@@ -198,11 +198,11 @@
"firefox-gnome-theme": { "firefox-gnome-theme": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1776136500, "lastModified": 1779670703,
"narHash": "sha256-r0gN2brVWA351zwMV0Flmlcd6SGMvYqFbvC3DfKFM8Y=", "narHash": "sha256-UdfMivNMwCCqQsYDg5pSz8X2IOaOrIZLIIy+Bg3CO2o=",
"owner": "rafaelmardojai", "owner": "rafaelmardojai",
"repo": "firefox-gnome-theme", "repo": "firefox-gnome-theme",
"rev": "0f8ba203d475587f477e7ae12661bd8459e225b7", "rev": "942159e73e40bf785816f7f1f5feed9ef3d7c8f9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -265,11 +265,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1775087534, "lastModified": 1778716662,
"narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=", "narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b", "rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -383,11 +383,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1779507042, "lastModified": 1781305496,
"narHash": "sha256-7wOwi8B6D0BYsieZCnHZZj2sNUzgJhLoIVSfkwB7lxQ=", "narHash": "sha256-g8Vv4Qfc7n+lgov97REu3X6BeJtvYY0hlSUZR1GrGQQ=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "509ed3c603349a9d43de9e2ae6613baea6bd5b34", "rev": "c87a39aa979acc4848016d2220c6238390d84779",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -456,11 +456,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1779508470, "lastModified": 1781074563,
"narHash": "sha256-Ap9KJX+5xHIn3bPIpfNgT6MEXdAECECwo4/rmlQD74M=", "narHash": "sha256-md8WlXOlfnIeHeOScMTTHFyf2d6iaTwPl2apR5EQ3P4=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "29916453413845e54a65b8a1cf996842300cd299", "rev": "9ae611a455b90cf061d8f332b977e387bda8e1ca",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -509,11 +509,11 @@
"noctalia-qs": "noctalia-qs" "noctalia-qs": "noctalia-qs"
}, },
"locked": { "locked": {
"lastModified": 1779504029, "lastModified": 1780889763,
"narHash": "sha256-f8u9DV9Qk8KJh7DVvk4UgUFTN0NDJeFxgrffTSwPkpA=", "narHash": "sha256-18kh968u0hhtDyECo0FBnlEnJLDxs0uB5H5QbWA9P3I=",
"owner": "noctalia-dev", "owner": "noctalia-dev",
"repo": "noctalia-shell", "repo": "noctalia-shell",
"rev": "b99b7a7f06ff749df9ac43181ff7889ff90c5599", "rev": "57be32b0a81471ef6c5dceff6faad23b534ec7f8",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -532,11 +532,11 @@
"treefmt-nix": "treefmt-nix_2" "treefmt-nix": "treefmt-nix_2"
}, },
"locked": { "locked": {
"lastModified": 1778983195, "lastModified": 1780799499,
"narHash": "sha256-hE3EFK5GoSdbO5WHZ8bZDUVYkofbDLQN/KK25z7IOOI=", "narHash": "sha256-YloRtLqJabzYUWvdLyh67zH4DZrR3kQj+dlQJwLPmPM=",
"owner": "noctalia-dev", "owner": "noctalia-dev",
"repo": "noctalia-qs", "repo": "noctalia-qs",
"rev": "4116b41cdc89e186be7cb8b24a9b6022af95d742", "rev": "f308426239665e3bc3d624014e9295b2ae2f58ff",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -556,11 +556,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1777598946, "lastModified": 1780281641,
"narHash": "sha256-X239dAGaU1+gfDj8jKH8GzlqKMcxaVfXOio+uzBOkeE=", "narHash": "sha256-M/+hUKoKbHXpV0xGVfELbN1Ds1aoe3pL5p5/t46YhVo=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "5d55af01c0f86be583931fe99207fc56c14134b3", "rev": "30f9ae2f04174de63ba8bcf3580ca90843b28a01",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -639,11 +639,11 @@
"rust-analyzer-src": { "rust-analyzer-src": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1779221047, "lastModified": 1781005730,
"narHash": "sha256-HkOWI9C4kxA6xkS9GXhe4hAAme7ekOWje3b1U7rLSIo=", "narHash": "sha256-3Bn47a+Vs2/ltQfTU2ApWqy5kYNmF+RaTEJs0A/H2pA=",
"owner": "rust-lang", "owner": "rust-lang",
"repo": "rust-analyzer", "repo": "rust-analyzer",
"rev": "f4bd646a7867c7814770168e0d4b9bd3418c1066", "rev": "587ce15e272b94d4f0a69d695e3718a02c24667e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -690,11 +690,11 @@
"tinted-zed": "tinted-zed" "tinted-zed": "tinted-zed"
}, },
"locked": { "locked": {
"lastModified": 1779378391, "lastModified": 1781018772,
"narHash": "sha256-IsDb9erotvx9npI94UDosvMeYQK17p7/vmU2v9batrY=", "narHash": "sha256-C+cGIUaC6dqfwTbI+BwCd572PbESGA3WYxR1sLTqxkY=",
"owner": "danth", "owner": "danth",
"repo": "stylix", "repo": "stylix",
"rev": "c1456cc4ba3c9485e7b4158c909eeca5a752cd59", "rev": "a378e4c09031fb15a4d65da88aa628f71fc52f6b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -720,16 +720,16 @@
}, },
"systems_2": { "systems_2": {
"locked": { "locked": {
"lastModified": 1681028828, "lastModified": 1689347949,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems", "owner": "nix-systems",
"repo": "default", "repo": "default-linux",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-systems", "owner": "nix-systems",
"repo": "default", "repo": "default-linux",
"type": "github" "type": "github"
} }
}, },
@@ -752,11 +752,11 @@
"tinted-schemes": { "tinted-schemes": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1777041405, "lastModified": 1777806186,
"narHash": "sha256-BAGZ7ObFV/9Z61OJZun7ifPyhkuHqNuW1QIhQ8LuzCo=", "narHash": "sha256-PDF0/wObw4nIsSBeXVYLsloXOiphXCgIdsrNcVXguKs=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "schemes", "repo": "schemes",
"rev": "5f868b3a338b6904c47f3833b9c411be641983a8", "rev": "0c94645546f4f3ddac77a1a5fce54eb95bf50795",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -768,11 +768,11 @@
"tinted-tmux": { "tinted-tmux": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1777169200, "lastModified": 1778379944,
"narHash": "sha256-h7dDbIzP5hDr9v97w9PL6jdAgXawmj6krcH+959rqpU=", "narHash": "sha256-wPDFzMGSlARlw0Sfsn48Q2+jPSfk6N0Ng6BC/d+7Q24=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "tinted-tmux", "repo": "tinted-tmux",
"rev": "f798c2dce44ef815bb6b8f05a82135c7942d35ac", "rev": "fe0203a198690e71a5ff11e08812a4673de3678d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -784,11 +784,11 @@
"tinted-zed": { "tinted-zed": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1777463218, "lastModified": 1778378178,
"narHash": "sha256-Bhkozqtq3BKLqWTlmKm8uAptfX4aRGI8QX3eEL54Vpc=", "narHash": "sha256-OXPXRIQgGwV77HjYRryOHguh4ALX96jkg+tseLkGgHA=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "base16-zed", "repo": "base16-zed",
"rev": "5768d08ed2e7944a26a958868cdb073cb8856dae", "rev": "9cd816033ff969415b190722cddf134e78a5665f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -804,11 +804,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1775636079, "lastModified": 1780220602,
"narHash": "sha256-pc20NRoMdiar8oPQceQT47UUZMBTiMdUuWrYu2obUP0=", "narHash": "sha256-eynAfOmbmxJnkp7YewvCEbShNnnYJ9gLLqkzsYtBPeM=",
"owner": "numtide", "owner": "numtide",
"repo": "treefmt-nix", "repo": "treefmt-nix",
"rev": "790751ff7fd3801feeaf96d7dc416a8d581265ba", "rev": "db947814a175b7ca6ded66e21383d938df01c227",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -826,11 +826,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1775636079, "lastModified": 1780220602,
"narHash": "sha256-pc20NRoMdiar8oPQceQT47UUZMBTiMdUuWrYu2obUP0=", "narHash": "sha256-eynAfOmbmxJnkp7YewvCEbShNnnYJ9gLLqkzsYtBPeM=",
"owner": "numtide", "owner": "numtide",
"repo": "treefmt-nix", "repo": "treefmt-nix",
"rev": "790751ff7fd3801feeaf96d7dc416a8d581265ba", "rev": "db947814a175b7ca6ded66e21383d938df01c227",
"type": "github" "type": "github"
}, },
"original": { "original": {
+5 -16
View File
@@ -65,25 +65,14 @@
hostDirs = builtins.attrNames (builtins.readDir ./hosts); hostDirs = builtins.attrNames (builtins.readDir ./hosts);
mkHost = hostName: let mkHost = hostName: let
inherit hostVars = import ./hosts/${hostName}/variables.nix;
(import ./hosts/${hostName}/variables.nix) hostPrinterVars = import ./hosts/${hostName}/printers.nix;
host
username
profile
system
;
in in
nixpkgs.lib.nixosSystem { nixpkgs.lib.nixosSystem {
inherit system; inherit (hostVars) system;
specialArgs = { specialArgs = hostVars // hostPrinterVars // {inherit inputs;};
inherit inputs;
inherit username;
inherit host;
inherit profile;
inherit system;
};
modules = [ modules = [
./profiles/${profile} ./profiles/${hostVars.profile}
nix-flatpak.nixosModules.nix-flatpak nix-flatpak.nixosModules.nix-flatpak
garandos-tui.nixosModules.garandos-tui garandos-tui.nixosModules.garandos-tui
]; ];
+28 -1
View File
@@ -7,12 +7,14 @@ _: {
enable = true; # Zed Editor: a modern, highperformance code editor enable = true; # Zed Editor: a modern, highperformance code editor
remote-server.enable = false; # Remote Server: enable remote editing capabilities 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 Web browsers
*/ */
librewolf.enable = true; # Librewolf: a privacy-focused Firefox fork 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 System utilities
@@ -33,6 +35,7 @@ _: {
Gaming Gaming
*/ */
lutris.enable = false; # Lutris: an open gaming platform 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 Media recording and streaming
@@ -49,6 +52,16 @@ _: {
*/ */
anki.enable = true; # Anki: spacedrepetition flashcard program 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) XDG desktop entries (PWA)
*/ */
@@ -64,4 +77,18 @@ _: {
jellyfinClient.enable = true; # Jellyfin: My Jellyfin 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 exercism.enable = false; # Exercism: coding practice platform
lazygit.enable = false; # Lazygit: simple TUI for Git 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 = true; # Jan: AI chat UI
logisim-evolution.enable = false; # Logisim-Evolution: Digital logic designer and simulator logisim-evolution.enable = false; # Logisim-Evolution: Digital logic designer and simulator
@@ -89,7 +88,7 @@ _: {
*/ */
bitwarden.enable = false; # Bitwarden: password manager (desktop) bitwarden.enable = false; # Bitwarden: password manager (desktop)
iotas.enable = true; # Iotas: lightweight notes manager 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 Media & Graphics
@@ -100,8 +99,9 @@ _: {
gimp.enable = false; # GIMP: GNU Image Manipulation Program gimp.enable = false; # GIMP: GNU Image Manipulation Program
kdenlive.enable = true; # Kdenlive: video editing software kdenlive.enable = true; # Kdenlive: video editing software
pixieditor.enable = true; # Pixieditor: Universal editor for all your 2D needs 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 jellyfin.enable = true; # Jellyfin: foss media player
appImages.losslesscut.enable = true; # Losslesscut: Swiss army knife of lossless video/audio editing
/* /*
Utilities / Misc Utilities / Misc
+4 -3
View File
@@ -15,6 +15,10 @@
gitUsername = "GarandPLG"; gitUsername = "GarandPLG";
gitEmail = "garandplg@garandplg.com"; gitEmail = "garandplg@garandplg.com";
# User shell
# Availabe options: "fish", "bash"
shell = "fish";
# Hyprland Settings # Hyprland Settings
# Examples: # Examples:
# extraMonitorSettings = "monitor = Virtual-1,1920x1080@60,auto,1"; # extraMonitorSettings = "monitor = Virtual-1,1920x1080@60,auto,1";
@@ -35,9 +39,6 @@
# Enable NFS # Enable NFS
enableNFS = false; enableNFS = false;
# Enable Printing Support
printEnable = true;
# Set Stylix Image # Set Stylix Image
# This will set your color palette # This will set your color palette
# Default background # Default background
+27
View File
@@ -7,6 +7,8 @@ _: {
enable = true; # Zed Editor: a modern, highperformance code editor enable = true; # Zed Editor: a modern, highperformance code editor
remote-server.enable = false; # Remote Server: enable remote editing capabilities 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 Web browsers
@@ -33,6 +35,7 @@ _: {
Gaming Gaming
*/ */
lutris.enable = false; # Lutris: an open gaming platform 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 Media recording and streaming
@@ -49,6 +52,16 @@ _: {
*/ */
anki.enable = true; # Anki: spacedrepetition flashcard program 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) XDG desktop entries (PWA)
*/ */
@@ -64,4 +77,18 @@ _: {
jellyfinClient.enable = true; # Jellyfin: My Jellyfin 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 exercism.enable = false; # Exercism: coding practice platform
lazygit.enable = false; # Lazygit: simple TUI for Git 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 = true; # Jan: AI chat UI
logisim-evolution.enable = false; # Logisim-Evolution: Digital logic designer and simulator logisim-evolution.enable = false; # Logisim-Evolution: Digital logic designer and simulator
@@ -89,7 +88,7 @@ _: {
*/ */
bitwarden.enable = false; # Bitwarden: password manager (desktop) bitwarden.enable = false; # Bitwarden: password manager (desktop)
iotas.enable = true; # Iotas: lightweight notes manager 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 Media & Graphics
@@ -100,8 +99,9 @@ _: {
gimp.enable = false; # GIMP: GNU Image Manipulation Program gimp.enable = false; # GIMP: GNU Image Manipulation Program
kdenlive.enable = false; # Kdenlive: video editing software kdenlive.enable = false; # Kdenlive: video editing software
pixieditor.enable = true; # Pixieditor: Universal editor for all your 2D needs 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 jellyfin.enable = true; # Jellyfin: foss media player
appImages.losslesscut.enable = false; # Losslesscut: Swiss army knife of lossless video/audio editing
/* /*
Utilities / Misc Utilities / Misc
+4
View File
@@ -15,6 +15,10 @@
gitUsername = "GarandPLG"; gitUsername = "GarandPLG";
gitEmail = "garandplg@garandplg.com"; gitEmail = "garandplg@garandplg.com";
# User shell
# Availabe options: "fish", "bash"
shell = "fish";
# Hyprland Settings # Hyprland Settings
# Examples: # Examples:
# extraMonitorSettings = "monitor = Virtual-1,1920x1080@60,auto,1"; # 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 vscodium.enable = false; # VSCodium: a free and open-source "demicrosofted" VSCode
zed-editor = { zed-editor = {
enable = true; # Zed Editor: a modern, highperformance code editor enable = false; # Zed Editor: a modern, highperformance code editor
remote-server.enable = true; # Remote Server: enable remote editing capabilities 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 Web browsers
*/ */
librewolf.enable = true; # Librewolf: a privacy-focused Firefox fork librewolf.enable = false; # 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 System utilities
*/ */
btop.enable = true; # Btop: a resource monitor for the terminal 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 cava.enable = false; # Cava: terminal audio visualizer
fastfetch.enable = true; # Fastfetch: a fast system information tool fastfetch.enable = true; # Fastfetch: a fast system information tool
@@ -26,13 +28,14 @@ _: {
Communication and synchronization Communication and synchronization
*/ */
kdeconnect.enable = false; # KDE Connect: integrate your phone and desktop kdeconnect.enable = false; # KDE Connect: integrate your phone and desktop
nextcloud-client.enable = true; # Nextcloud Client: sync files with a Nextcloud server nextcloud-client.enable = false; # Nextcloud Client: sync files with a Nextcloud server
vesktop.enable = true; # Vesktop: a communitydriven Discord client vesktop.enable = false; # Vesktop: a communitydriven Discord client
/* /*
Gaming Gaming
*/ */
lutris.enable = false; # Lutris: an open gaming platform 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 Media recording and streaming
@@ -42,26 +45,50 @@ _: {
/* /*
Office suite 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 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) XDG desktop entries (PWA)
*/ */
xdgDesktopEntries = { xdgDesktopEntries = {
enable = true; # Enable XDG desktop entries enable = false; # Enable XDG desktop entries
entries = { entries = {
messenger.enable = true; # Messenger: Facebook Messenger messenger.enable = false; # Messenger: Facebook Messenger
mastodon.enable = true; # Mastodon: a decentralized social network mastodon.enable = false; # Mastodon: a decentralized social network
garandcloud.enable = true; # GarandCloud: my Nextcloud instance garandcloud.enable = false; # GarandCloud: my Nextcloud instance
chatgpt.enable = true; # ChatGPT: a large language model chatgpt.enable = false; # ChatGPT: a large language model
claude.enable = true; # Claude: a large language model claude.enable = false; # Claude: a large language model
glance.enable = true; # Glance: my home server dashboard glance.enable = false; # Glance: my home server dashboard
jellyfinClient.enable = true; # Jellyfin: My Jellyfin 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 Container & Packaging
*/ */
docker.enable = true; # Docker: container runtime and management docker.enable = false; # Docker: container runtime and management
virtualbox.enable = false; # VirtualBox: PC emulator virtualbox.enable = false; # VirtualBox: PC emulator
flatpak = { flatpak = {
enable = true; # Flatpak: universal packaging system for Linux enable = false; # Flatpak: universal packaging system for Linux
packages = { packages = {
sober.enable = false; # Roblox client sober.enable = false; # Roblox client
warehouse.enable = true; # Flatpak manager warehouse.enable = false; # Flatpak manager
flatseal.enable = true; # Flatpak permissions manager flatseal.enable = false; # Flatpak permissions manager
upscaler.enable = false; # Upscaler: Upscale and enhance images upscaler.enable = false; # Upscaler: Upscale and enhance images
}; };
}; };
@@ -22,14 +22,14 @@ _: {
/* /*
Calendar & Contacts Calendar & Contacts
*/ */
calendar.enable = true; # GNOME Calendar: calendar and contacts application calendar.enable = false; # GNOME Calendar: calendar and contacts application
/* /*
Gaming 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 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 Media & Graphics
@@ -59,27 +59,26 @@ _: {
Gaming Gaming
*/ */
prismlauncher.enable = false; # Prism Launcher: Minecraft modded launcher prismlauncher.enable = false; # Prism Launcher: Minecraft modded launcher
spaceCadetPinball.enable = true; # SpaceCadet Pinball: classic pinball game spaceCadetPinball.enable = false; # SpaceCadet Pinball: classic pinball game
ttySolitaire.enable = true; # TTY Solitaire: terminalbased solitaire game ttySolitaire.enable = false; # TTY Solitaire: terminalbased solitaire game
heroic.enable = false; # Native GOG, Epic, and Amazon Games Launcher for Linux, Windows and Mac heroic.enable = false; # Native GOG, Epic, and Amazon Games Launcher for Linux, Windows and Mac
/* /*
Development Tools Development Tools
*/ */
exercism.enable = true; # Exercism: coding practice platform exercism.enable = false; # Exercism: coding practice platform
lazygit.enable = false; # Lazygit: simple TUI for Git lazygit.enable = false; # Lazygit: simple TUI for Git
opencode.enable = false; # OpenCode: tools for coding and development jan.enable = false; # Jan: AI chat UI
jan.enable = true; # Jan: AI chat UI
logisim-evolution.enable = false; # Logisim-Evolution: Digital logic designer and simulator logisim-evolution.enable = false; # Logisim-Evolution: Digital logic designer and simulator
/* /*
Communication & Collaboration 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 slack.enable = false; # Slack: team communication and collaboration tool
tutanota.enable = true; # Tutanota: secure email client tutanota.enable = false; # Tutanota: secure email client
signal.enable = true; # Signal: secure messaging app signal.enable = false; # Signal: secure messaging app
teams.enable = true; # Teams-for-linux: Unofficial Microsoft Teams client for Linux 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 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 notify.enable = false; # notify-client: Ntfy client application to receive everyday's notifications
appImages.fluxer.enable = false; # Fluxer: Discord alternative appImages.fluxer.enable = false; # Fluxer: Discord alternative
@@ -88,26 +87,27 @@ _: {
Productivity / Knowledge Management Productivity / Knowledge Management
*/ */
bitwarden.enable = false; # Bitwarden: password manager (desktop) bitwarden.enable = false; # Bitwarden: password manager (desktop)
iotas.enable = true; # Iotas: lightweight notes manager iotas.enable = false; # Iotas: lightweight notes manager
logseq.enable = false; # Logseq: knowledge base and outliner # appImages.logseq.enable = false; # Logseq: knowledge base and outliner
/* /*
Media & Graphics 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 switcheroo.enable = false; # Switcheroo: file conversion tool
freetube.enable = false; # FreeTube: privacyfriendly YouTube client freetube.enable = false; # FreeTube: privacyfriendly YouTube client
gimp.enable = false; # GIMP: GNU Image Manipulation Program gimp.enable = false; # GIMP: GNU Image Manipulation Program
kdenlive.enable = false; # Kdenlive: video editing software kdenlive.enable = false; # Kdenlive: video editing software
pixieditor.enable = false; # Pixieditor: Universal editor for all your 2D needs pixieditor.enable = false; # 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 jellyfin.enable = false; # Jellyfin: foss media player
appImages.losslesscut.enable = false; # Losslesscut: Swiss army knife of lossless video/audio editing
/* /*
Utilities / Misc Utilities / Misc
*/ */
eddieAirVPN.enable = true; # Eddie AirVPN: VPN client eddieAirVPN.enable = false; # Eddie AirVPN: VPN client
gnomeCalculator.enable = true; # gnomeCalculator: simple calculator gnomeCalculator.enable = false; # gnomeCalculator: simple calculator
gedit.enable = false; # Gedit: GNOME text editor gedit.enable = false; # Gedit: GNOME text editor
winboat.enable = false; # Winboat: Windows remote desktop via RDP winboat.enable = false; # Winboat: Windows remote desktop via RDP
adb.enable = false; # ADB: Android SDK platform tools adb.enable = false; # ADB: Android SDK platform tools
+4 -3
View File
@@ -15,6 +15,10 @@
gitUsername = "GarandPLG"; gitUsername = "GarandPLG";
gitEmail = "my@email.com"; gitEmail = "my@email.com";
# User shell
# Availabe options: "fish", "bash"
shell = "fish";
# Hyprland Settings # Hyprland Settings
# Examples: # Examples:
# extraMonitorSettings = "monitor = Virtual-1,1920x1080@60,auto,1"; # extraMonitorSettings = "monitor = Virtual-1,1920x1080@60,auto,1";
@@ -37,9 +41,6 @@
# Enable NFS # Enable NFS
enableNFS = false; enableNFS = false;
# Enable Printing Support
printEnable = false;
# Themes, waybar and animation. # Themes, waybar and animation.
# Only uncomment your selection # Only uncomment your selection
# The others much be commented out. # The others much be commented out.
+2 -4
View File
@@ -2,11 +2,9 @@
pkgs, pkgs,
lib, lib,
config, config,
host, profile,
... ...
}: let }: {
inherit (import ../../hosts/${host}/variables.nix) profile;
in {
options.docker.enable = lib.mkEnableOption "Docker"; options.docker.enable = lib.mkEnableOption "Docker";
config.virtualisation.docker = lib.mkIf config.docker.enable { config.virtualisation.docker = lib.mkIf config.docker.enable {
+1 -3
View File
@@ -6,11 +6,9 @@
services.greetd = { services.greetd = {
enable = true; enable = true;
#vt = 3; #vt = 3;
settings = { settings.default_session = {
default_session = {
user = username; user = username;
command = "${pkgs.tuigreet}/bin/tuigreet --time --cmd Hyprland"; # start Hyprland with a TUI login manager command = "${pkgs.tuigreet}/bin/tuigreet --time --cmd Hyprland"; # start Hyprland with a TUI login manager
}; };
}; };
};
} }
+2 -3
View File
@@ -1,10 +1,9 @@
{ {
host, host,
hostId,
options, options,
... ...
}: let }: {
inherit (import ../../hosts/${host}/variables.nix) hostId;
in {
# Defensive assertion for hostname validity (clearer message at eval time) # Defensive assertion for hostname validity (clearer message at eval time)
assertions = [ assertions = [
{ {
+1 -3
View File
@@ -1,6 +1,4 @@
{host, ...}: let {enableNFS, ...}: {
inherit (import ../../hosts/${host}/variables.nix) enableNFS;
in {
services = { services = {
rpcbind.enable = enableNFS; rpcbind.enable = enableNFS;
nfs.server.enable = enableNFS; nfs.server.enable = enableNFS;
@@ -14,6 +14,8 @@
appImagePackages = { appImagePackages = {
fluxer = pkgs.callPackage ./fluxer.nix {}; fluxer = pkgs.callPackage ./fluxer.nix {};
helium = pkgs.callPackage ./helium.nix {}; helium = pkgs.callPackage ./helium.nix {};
# logseq = pkgs.callPackage ./logseq.nix {};
losslesscut = pkgs.callPackage ./losslesscut.nix {};
}; };
in { in {
imports = builtins.attrValues (builtins.mapAttrs mkAppImagePackage appImagePackages); imports = builtins.attrValues (builtins.mapAttrs mkAppImagePackage appImagePackages);
+2 -1
View File
@@ -5,10 +5,11 @@
}: let }: let
pname = "fluxer"; pname = "fluxer";
version = "canary"; version = "canary";
hash = "sha256-GdoBK+Z/d2quEIY8INM4IQy5tzzIBBM+3CgJXQn0qAw=";
src = fetchurl { src = fetchurl {
url = "https://api.fluxer.app/dl/desktop/stable/linux/x64/latest/appimage"; 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;}; appimageContents = appimageTools.extract {inherit pname version src;};
+3 -2
View File
@@ -4,11 +4,12 @@
fetchurl, fetchurl,
}: let }: let
pname = "helium"; pname = "helium";
version = "0.12.4.1"; version = "0.13.4.1";
hash = "sha256-z23up+T6bj6F+cQslmI92bEksIAw1OQHRIrmQSaaxY8=";
src = fetchurl { src = fetchurl {
url = "https://github.com/imputnet/helium-linux/releases/download/${version}/helium-${version}-x86_64.AppImage"; 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;}; 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
+4 -3
View File
@@ -19,12 +19,11 @@
gnomeCalculator = gnome-calculator; gnomeCalculator = gnome-calculator;
gedit = gedit; gedit = gedit;
iotas = iotas; iotas = iotas;
logseq = logseq; # logseq = logseq;
mattermost = mattermost-desktop; mattermost = mattermost-desktop;
slack = slack; slack = slack;
tutanota = tutanota-desktop; tutanota = tutanota-desktop;
exercism = exercism; exercism = exercism;
opencode = opencode;
jan = jan; jan = jan;
lazygit = lazygit; lazygit = lazygit;
prismlauncher = inputs.prismlauncher-cracked.packages.${system}.default; prismlauncher = inputs.prismlauncher-cracked.packages.${system}.default;
@@ -32,7 +31,9 @@
ttySolitaire = tty-solitaire; ttySolitaire = tty-solitaire;
gimp = gimp; gimp = gimp;
eyeOfGnome = eog; eyeOfGnome = eog;
kdenlive = kdePackages.kdenlive.overrideAttrs (old: { kdenlive =
kdePackages.kdenlive.overrideAttrs
(old: {
postInstall = postInstall =
(old.postInstall or "") (old.postInstall or "")
+ '' + ''
+13 -1
View File
@@ -1,18 +1,30 @@
_: { {shell, ...}: {
programs = { programs = {
nano.enable = true; nano.enable = true;
hyprland = { hyprland = {
enable = true; enable = true;
withUWSM = false; withUWSM = false;
}; };
fish.enable =
if shell == "fish"
then true
else false;
dconf.enable = true; dconf.enable = true;
seahorse.enable = true; seahorse.enable = true;
fuse.userAllowOther = true; fuse.userAllowOther = true;
mtr.enable = true; mtr.enable = true;
gnupg.agent = { gnupg.agent = {
enable = true; enable = true;
enableSSHSupport = true; enableSSHSupport = true;
}; };
nix-ld = { nix-ld = {
enable = true; enable = true;
# libraries = with pkgs; [ # libraries = with pkgs; [
+4 -4
View File
@@ -1,11 +1,11 @@
{ {
pkgs, pkgs,
lib, lib,
host, printEnable,
ensureDefaultPrinter,
ensurePrinters,
... ...
}: let }: {
inherit (import ../../hosts/${host}/printers.nix) printEnable ensureDefaultPrinter ensurePrinters;
in {
services = lib.mkIf printEnable { services = lib.mkIf printEnable {
printing = { printing = {
enable = true; enable = true;
+10 -8
View File
@@ -18,10 +18,10 @@
dedicatedServer.openFirewall = true; dedicatedServer.openFirewall = true;
gamescopeSession = lib.mkIf config.gamescope.enable { gamescopeSession = lib.mkIf config.gamescope.enable {
enable = true; enable = true;
args = [ # args = [
"--rt" # "--rt"
"--expose-wayland" # "--expose-wayland"
]; # ];
}; };
extraCompatPackages = [pkgs.proton-ge-bin]; extraCompatPackages = [pkgs.proton-ge-bin];
}; };
@@ -29,10 +29,10 @@
gamescope = lib.mkIf config.gamescope.enable { gamescope = lib.mkIf config.gamescope.enable {
enable = true; enable = true;
capSysNice = true; capSysNice = true;
args = [ # args = [
"--rt" # # "--rt"
"--expose-wayland" # # "--expose-wayland"
]; # ];
}; };
gamemode = lib.mkIf config.gamemode.enable { 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 --
+10 -5
View File
@@ -1,10 +1,8 @@
{ {
pkgs, pkgs,
host, stylixImage,
... ...
}: let }: {
inherit (import ../../hosts/${host}/variables.nix) stylixImage;
in {
# Styling Options # Styling Options
stylix = { stylix = {
enable = true; enable = true;
@@ -36,7 +34,8 @@ in {
popups = 12; popups = 12;
}; };
}; };
targets.limine = { targets = {
limine = {
enable = true; enable = true;
colors.enable = true; colors.enable = true;
image.enable = true; image.enable = true;
@@ -45,5 +44,11 @@ in {
override = "tile"; override = "tile";
}; };
}; };
kmscon = {
enable = false;
colors.enable = true;
fonts.enable = true;
};
};
}; };
} }
+10 -6
View File
@@ -1,10 +1,8 @@
{ {
host, consoleKeyMap,
inputs, inputs,
... ...
}: let }: {
inherit (import ../../hosts/${host}/variables.nix) consoleKeyMap;
in {
nix = { nix = {
nixPath = ["nixpkgs=${inputs.nixpkgs}"]; nixPath = ["nixpkgs=${inputs.nixpkgs}"];
settings = { settings = {
@@ -14,8 +12,14 @@ in {
"nix-command" "nix-command"
"flakes" "flakes"
]; ];
substituters = ["https://hyprland.cachix.org"]; substituters = [
trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="]; "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"; time.timeZone = "Europe/Warsaw";
+22 -4
View File
@@ -5,10 +5,14 @@
host, host,
profile, profile,
system, system,
gitUsername,
shell,
extraMonitorSettings,
keyboardLayout,
gitEmail,
location,
... ...
}: let }: {
inherit (import ../../hosts/${host}/variables.nix) gitUsername;
in {
imports = [inputs.home-manager.nixosModules.home-manager]; imports = [inputs.home-manager.nixosModules.home-manager];
home-manager = { home-manager = {
useUserPackages = true; useUserPackages = true;
@@ -21,6 +25,12 @@ in {
host host
profile profile
system system
extraMonitorSettings
shell
keyboardLayout
gitEmail
gitUsername
location
; ;
}; };
users.${username} = { users.${username} = {
@@ -33,6 +43,10 @@ in {
username = "${username}"; username = "${username}";
homeDirectory = "/home/${username}"; homeDirectory = "/home/${username}";
stateVersion = "25.11"; stateVersion = "25.11";
shell.enableFishIntegration =
if shell == "fish"
then true
else false;
}; };
}; };
}; };
@@ -53,7 +67,11 @@ in {
"gamemode" "gamemode"
"lpadmin" "lpadmin"
]; ];
shell = pkgs.bash; shell = with pkgs; (
if shell == "fish"
then fish
else bash
);
ignoreShellProgramCheck = true; ignoreShellProgramCheck = true;
linger = true; linger = true;
}; };
+1 -3
View File
@@ -1,6 +1,4 @@
{host, ...}: let {keyboardLayout, ...}: {
inherit (import ../../hosts/${host}/variables.nix) keyboardLayout;
in {
services.xserver = { services.xserver = {
enable = true; enable = true;
xkb = { xkb = {
+8 -1
View File
@@ -12,6 +12,13 @@
package = pkgs.anki; package = pkgs.anki;
language = "pl_PL"; language = "pl_PL";
style = "native"; 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"; upd = "nh os switch -H ${host} -d always";
upg = "nh os switch -H ${host} --update -d always"; upg = "nh os switch -H ${host} --update -d always";
upf = "sudo nix flake update --flake /home/${username}/garandos"; 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"; upf-undo = "git -C /home/${username}/garandos restore /home/${username}/garandos/flake.lock";
upd-bt = "nh os boot -H ${host} -d always"; upd-bt = "nh os boot -H ${host} -d always";
upd-ts = "nh os test -H ${host} -d always"; upd-ts = "nh os test -H ${host} -d always";
@@ -140,8 +141,8 @@
# Network aliases # Network aliases
kssh-server = "kssh hp-t640-homeserver"; 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 = "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 = { programs.bash = {
enable = true; enable =
if shell == "bash"
then true
else false;
enableCompletion = true; enableCompletion = true;
# initExtra = '' # initExtra = ''
# fastfetch # fastfetch
+1
View File
@@ -16,6 +16,7 @@
batgrep batgrep
]; ];
}; };
home.sessionVariables = { home.sessionVariables = {
MANPAGER = "sh -c 'col -bx | bat -l man -p'"; MANPAGER = "sh -c 'col -bx | bat -l man -p'";
MANROFFOPT = "-c"; MANROFFOPT = "-c";
+6 -1
View File
@@ -3,10 +3,12 @@ _: {
./bash ./bash
./chromium ./chromium
./fastfetch ./fastfetch
./fish
./hyprland ./hyprland
./kitty ./kitty
./librewolf ./librewolf
./noctalia ./noctalia
./obsidian
./scripts ./scripts
./vscodium ./vscodium
./xdg ./xdg
@@ -16,16 +18,19 @@ _: {
./btop.nix ./btop.nix
./cava.nix ./cava.nix
./easyeffects.nix ./easyeffects.nix
./emoji.nix
./eza.nix ./eza.nix
./fzf.nix ./fzf.nix
./gh.nix
./git.nix ./git.nix
./gtk.nix ./gtk.nix
./kdeConnect.nix ./kdeConnect.nix
./lutris.nix ./lutris.nix
./mangohud.nix
./nextcloud.nix ./nextcloud.nix
./obs-studio.nix ./obs-studio.nix
./ollama.nix
./onlyoffice.nix ./onlyoffice.nix
./opencode.nix
./qt.nix ./qt.nix
./ssh.nix ./ssh.nix
./starship.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 = { programs.eza = {
enable = true; enable = true;
icons = "auto"; icons = "auto";
enableBashIntegration = true; enableFishIntegration =
if shell == "fish"
then true
else false;
enableBashIntegration =
if shell == "bash"
then true
else false;
git = true; git = true;
extraOptions = [ extraOptions = [
+2 -6
View File
@@ -122,9 +122,7 @@ _: {
{ {
type = "command"; type = "command";
key = " IN"; key = " IN";
text = text = ''
#bash
''
birth_install=$(stat -c %W /) birth_install=$(stat -c %W /)
if [ "$birth_install" -gt 0 ]; then if [ "$birth_install" -gt 0 ]; then
echo "Installed $(date -d @"$birth_install" +"%Y-%m-%d")" echo "Installed $(date -d @"$birth_install" +"%Y-%m-%d")"
@@ -136,9 +134,7 @@ _: {
{ {
type = "command"; type = "command";
key = " "; key = " ";
text = text = ''
#bash
''
birth_install=$(stat -c %W /) birth_install=$(stat -c %W /)
current=$(date +%s) current=$(date +%s)
delta=$((current - birth_install)) delta=$((current - birth_install))
+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. {shell, ...}: {
{
config,
lib,
...
}: let
accent = "#" + config.lib.stylix.colors.base0D;
foreground = "#" + config.lib.stylix.colors.base05;
muted = "#" + config.lib.stylix.colors.base03;
in {
programs.fzf = { programs.fzf = {
enable = true; enable = true;
enableBashIntegration = true; enableFishIntegration =
colors = lib.mkForce { if shell == "fish"
"fg+" = accent; then true
"bg+" = "-1"; else false;
"fg" = foreground; enableBashIntegration =
"bg" = "-1"; if shell == "bash"
"prompt" = muted; then true
"pointer" = accent; else false;
};
defaultOptions = [ defaultOptions = [
"--margin=1" "--margin=1"
"--layout=reverse" "--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; gitUsername,
in { gitEmail,
...
}: {
programs.git = { programs.git = {
enable = true; enable = true;
settings = { settings = {
+1 -6
View File
@@ -5,11 +5,6 @@
package = pkgs.papirus-icon-theme; package = pkgs.papirus-icon-theme;
}; };
gtk3.extraConfig.gtk-application-prefer-dark-theme = 1; gtk3.extraConfig.gtk-application-prefer-dark-theme = 1;
gtk4 = { gtk4.extraConfig.gtk-application-prefer-dark-theme = 1;
theme = null;
extraConfig = {
gtk-application-prefer-dark-theme = 1;
};
};
}; };
} }
+6 -8
View File
@@ -1,11 +1,9 @@
{ {
host, extraMonitorSettings,
config, keyboardLayout,
pkgs, pkgs,
... ...
}: let }: {
inherit (import ../../../hosts/${host}/variables.nix) extraMonitorSettings keyboardLayout;
in {
systemd.user.targets.hyprland-session.Unit.Wants = [ systemd.user.targets.hyprland-session.Unit.Wants = [
"xdg-desktop-autostart.target" "xdg-desktop-autostart.target"
]; ];
@@ -64,8 +62,8 @@ in {
gaps_out = 8; gaps_out = 8;
border_size = 2; border_size = 2;
resize_on_border = true; resize_on_border = true;
"col.active_border" = "rgb(${config.lib.stylix.colors.base08}) rgb(${config.lib.stylix.colors.base0C}) 45deg"; # "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.inactive_border" = "rgb(${config.lib.stylix.colors.base01})";
}; };
misc = { misc = {
@@ -107,7 +105,7 @@ in {
enabled = true; enabled = true;
range = 4; range = 4;
render_power = 3; render_power = 3;
color = "rgba(1a1a1aee)"; # color = "rgba(1a1a1aee)";
}; };
}; };
+9 -1
View File
@@ -1,7 +1,15 @@
{pkgs, ...}: { {
pkgs,
shell,
...
}: {
programs.kitty = { programs.kitty = {
enable = true; enable = true;
package = pkgs.kitty; package = pkgs.kitty;
shellIntegration.enableFishIntegration =
if shell == "fish"
then true
else false;
}; };
imports = [ 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"; sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
in { 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 = { plugins = {
sources = [ sources = [
{ {
@@ -11,31 +26,35 @@ in {
} }
]; ];
states = { states = {
mini-docker = { mini-docker = lib.mkIf config.nooctalia-plugins.mini-docker.enable {
enabled = true; enabled = true;
sourceUrl = sourceUrl; sourceUrl = sourceUrl;
}; };
timer = { timer = lib.mkIf config.nooctalia-plugins.timer.enable {
enabled = true; enabled = true;
sourceUrl = sourceUrl; sourceUrl = sourceUrl;
}; };
keybind-cheatsheet = { keybind-cheatsheet = lib.mkIf config.nooctalia-plugins.keybind-cheatsheet.enable {
enabled = true; enabled = true;
sourceUrl = sourceUrl; sourceUrl = sourceUrl;
}; };
kde-connect = { kde-connect = lib.mkIf config.nooctalia-plugins.kde-connect.enable {
enabled = true; enabled = true;
sourceUrl = sourceUrl; sourceUrl = sourceUrl;
}; };
screen-recorder = { screen-recorder = lib.mkIf config.nooctalia-plugins.screen-recorder.enable {
enabled = true; enabled = true;
sourceUrl = sourceUrl; sourceUrl = sourceUrl;
}; };
screenshot = { screenshot = lib.mkIf config.nooctalia-plugins.screenshot.enable {
enabled = true; enabled = true;
sourceUrl = sourceUrl; 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; enabled = true;
sourceUrl = sourceUrl; sourceUrl = sourceUrl;
}; };
@@ -92,6 +111,23 @@ in {
# maxMessages = 100; # maxMessages = 100;
# readMessageIds = []; # 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; hidePassive = false;
pinned = []; pinned = [];
} }
{
id = "plugin:tailscale";
}
{ {
id = "plugin:keybind-cheatsheet"; id = "plugin:keybind-cheatsheet";
} }
+2 -4
View File
@@ -1,11 +1,9 @@
{ {
lib, lib,
host, keyboardLayout,
username, username,
... ...
}: let }: {
inherit (import ../../../../hosts/${host}/variables.nix) keyboardLayout;
in {
programs.noctalia-shell.settings.general = lib.mkForce { programs.noctalia-shell.settings.general = lib.mkForce {
avatarImage = "/home/${username}/.face.icon"; avatarImage = "/home/${username}/.face.icon";
dimmerOpacity = 0.2; dimmerOpacity = 0.2;
+2 -4
View File
@@ -1,10 +1,8 @@
{ {
lib, lib,
host, location,
... ...
}: let }: {
inherit (import ../../../../hosts/${host}/variables.nix) location;
in {
programs.noctalia-shell.settings.location = lib.mkForce { programs.noctalia-shell.settings.location = lib.mkForce {
name = "${location}"; name = "${location}";
weatherEnabled = true; 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; port = 22;
identityFile = "~/.ssh/hp-t640-homeserver"; identityFile = "~/.ssh/hp-t640-homeserver";
}; };
"hp-t640-homeserver-tailscale" = { "hp-t640-homeserver-headscale" = {
hostname = "100.106.225.106"; hostname = "100.64.0.2";
user = "${username}"; user = "${username}";
port = 22; port = 22;
identityFile = "~/.ssh/hp-t640-homeserver"; identityFile = "~/.ssh/hp-t640-homeserver";
+8 -6
View File
@@ -1,12 +1,14 @@
{ {
config,
lib, lib,
shell,
... ...
}: let }: {
accent = "#${config.lib.stylix.colors.base0D}";
in {
programs.starship = { programs.starship = {
enable = true; enable = true;
enableFishIntegration =
if shell == "fish"
then true
else false;
settings = { settings = {
add_newline = true; add_newline = true;
format = lib.concatStrings [ format = lib.concatStrings [
@@ -44,8 +46,8 @@ in {
}; };
character = { character = {
success_symbol = "[](${accent})"; success_symbol = "";
error_symbol = "[](red)"; error_symbol = "";
}; };
nix_shell = { nix_shell = {
+95 -4
View File
@@ -1,14 +1,105 @@
{host, ...}: { {
host,
shell,
...
}: {
stylix.targets = { stylix.targets = {
librewolf.profileNames = ["${host}"]; librewolf = {
hyprland.enable = false; 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; vscode.enable = false;
zed.enable = false; zed.enable = false;
vesktop.enable = false;
vesktop = {
enable = true;
colors.enable = true;
fonts.enable = true;
};
noctalia-shell.enable = true; noctalia-shell.enable = true;
gtk = {
enable = true;
colors.enable = true;
flatpakSupport.enable = true;
fonts.enable = true;
};
qt = { qt = {
enable = true; enable = true;
platform = "qtct"; 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"
];
};
}; };
} }
+1 -3
View File
@@ -1,6 +1,5 @@
{username, ...}: { {username, ...}: {
home.file = { home.file.".config/swappy/config".text = ''
".config/swappy/config".text = ''
[Default] [Default]
save_dir=/home/${username}/Pictures/Screenshots save_dir=/home/${username}/Pictures/Screenshots
save_filename_format=swappy-%Y%m%d-%H%M%S.png save_filename_format=swappy-%Y%m%d-%H%M%S.png
@@ -12,5 +11,4 @@
early_exit=true early_exit=true
fill_shape=false fill_shape=false
''; '';
};
} }
+1 -3
View File
@@ -1,8 +1,6 @@
_: { _: {
dconf.settings = { dconf.settings."org/virt-manager/virt-manager/connections" = {
"org/virt-manager/virt-manager/connections" = {
autoconnect = ["qemu:///system"]; autoconnect = ["qemu:///system"];
uris = ["qemu:///system"]; uris = ["qemu:///system"];
}; };
};
} }
+2
View File
@@ -19,5 +19,7 @@ _: {
"deputy" "deputy"
"biome" "biome"
"opencode" "opencode"
"fish"
"tera"
]; ];
} }
+1
View File
@@ -8,5 +8,6 @@
uv uv
python314 python314
ruff 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 = { rust-analyzer = {
binary = { binary = {
path = lib.getExe pkgs.bash; path = lib.getExe pkgs.bash;
+10 -5
View File
@@ -1,11 +1,16 @@
_: { {shell, ...}: {
programs = { programs.zoxide = {
zoxide = {
enable = true; enable = true;
enableBashIntegration = true; enableFishIntegration =
if shell == "fish"
then true
else false;
enableBashIntegration =
if shell == "bash"
then true
else false;
options = [ options = [
"--cmd cd" "--cmd cd"
]; ];
}; };
};
} }
+6 -3
View File
@@ -1,6 +1,9 @@
{host, ...}: let {
inherit (import ../../hosts/${host}/variables.nix) intelID nvidiaID; host,
in { intelID,
nvidiaID,
...
}: {
imports = [ imports = [
../../hosts/${host} ../../hosts/${host}
../../modules/drivers ../../modules/drivers