61 Commits

Author SHA1 Message Date
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
GarandPLG 2eb24167e5 Update flake.lock and add Kdenlive & recorder binds
- Remove stale `elemental-wine-source` entry from flake.lock.
- Refresh hashes, revisions, and timestamps for several inputs.
- Add "SUPER ALT K" binding to launch Kdenlive.
- Add "SUPER CONTROL R" binding to toggle screen recorder.
2026-05-24 02:03:19 +02:00
GarandPLG ce94f3e813 Add boxes and switcheroo modules; enable kdenlive
Register GNOME Boxes and Switcheroo in core packages and enable flags
Turn on kdenlive for Garand‑Desktop and adjust its wrapper for QT
scaling
Extend Docker module with host‑specific profile support and conditional
Nvidia integration
Reformat package definitions (plex, distrobox, winboat) and tidy
nvidia‑driver list
2026-05-23 20:47:49 +02:00
GarandPLG 0a3cff7b74 Update flake.lock, bump helium, and fix SSH config
Refresh locked revisions in flake.lock to newer commits, update the
helium
AppImage to version 0.12.4.1, and replace the SSH module's matchBlocks
attribute with the new settings attribute.
2026-05-23 15:39:38 +02:00
GarandPLG c0d2e8cd47 Update dependencies and add Helium appimage
- Refresh many lock entries in flake.lock with new revisions and hashes.
- Enable the Helium appimage in default, desktop, and laptop host
  configs; add
  comment sections for web browsers and disable Fluxer by default.
- Rename the affinity option description from “Steam” to “Affinity”.
- Refactor appimage handling: introduce a generic mkAppImagePackage
  helper,
  import individual packages, and expose per‑package enable options.
- Update fluxer.nix to use a configurable icon size and adjust install
  paths.
- Bump Helium to version 0.12.3.1, update its hash, and make its icon
  size
  configurable.
- Adjust Hyprland settings: comment out the split‑layout bind, set
  configType = "hyprlang", enable Xwayland early, move vfr to the debug
  section, and comment out dwindle pseudotile.
2026-05-16 22:57:30 +02:00
GarandPLG b6915ab988 Set default wallpaper to Attack-on-Titan-2
- Updated host variables files to select Attack-on-Titan-2.jpg and added
  rating comments.
- Simplified boot.nix by removing host‑specific imports and configuring
  limine via package, resolution, and branding color.
- Added limine target support in stylix with color, image, and tile
  scaling options.
- Removed the unused noctalia colors module and its import.
- Adjusted noctalia wallpaper settings to use config.stylix.image
  instead of a host import.
2026-05-14 19:15:41 +02:00
GarandPLG e4b359c5ca Add screenshot and ntfy plugins; update keybinds
Disable the notify-client module on all hosts. Install hyprshot, enable
screenshot and ntfy‑notifications plugins, set screenshot mode to
region,
and add keybindings for these features. Introduce a restart‑noctalia
script and include it in the home scripts.
2026-05-14 18:14:05 +02:00
GarandPLG b9b932e990 Add Ventoy support and refactor wallpaper handling
Introduce a `ventoy.enable` option (default false) and import the new
`modules/core/ventoy.nix` in the core module list. All host
`system-modules.nix` files now disable Ventoy explicitly.

Make the boot wallpaper configurable by importing `stylixImage` from the
host’s `variables.nix` and using it in `modules/core/boot.nix`.

Update each host’s `variables.nix` to set a default wallpaper and keep
many alternatives commented out.

Remove the obsolete `restart.noctalia` and `screenshootin` scripts,
their Nix wrappers, and the related Hyprland keybinding.

Add a collection of new wallpaper files and delete the old, unused
images.
2026-05-14 01:57:29 +02:00
GarandPLG 616adf696b Refresh wallpapers and update configs
- Set default stylix wallpaper to “The‑Southern‑Raiders.jpg” and comment
  out the old image.
- Bump helium AppImage to version 0.12.1.1 with updated URL and
  checksum.
- Switch NVIDIA driver package from beta to stable.
- Change “kys” alias to use systemctl poweroff and add “jezus” alias for
  reboot.
2026-05-13 00:27:50 +02:00
GarandPLG 092e6cfd88 Update lockfile, adjust modules, add utilities
Refresh flake.lock with latest revisions for several dependencies.
Disable Prism Launcher on both desktop and laptop configurations.
Enable the Upscaler tool on the laptop system module.
Add smartmontools to the core essentials package list.
Enhance the “ncg” alias to run `nh clean all --optimise`.
2026-05-12 23:01:13 +02:00
GarandPLG 2c2d54a4a7 Add host printer configs and refactor printing
Add printers.nix for Garand‑Desktop, Garand‑Laptop, and default hosts
with
printer definitions and a printEnable flag. Disable NFS by default in
the
host variables. Rewrite modules/core/printing.nix to import printer
settings, enable services only when printing is enabled, and add more
CUPS/Avahi options plus hardware.printers configuration. Add the lpadmin
group to the main user. Update the Messenger desktop entry URL to the
Facebook Messages page.
2026-05-07 15:05:11 +02:00
GarandPLG 79769e4dc5 Update flake.lock revisions and fix Jellyfin bind
- Refresh locked versions for affinity-nix, nur-expressions,
  home-manager,
  nixpkgs, and noctalia-shell.
- Change Jellyfin keybind to launch via `dex` instead of direct
  execution.
2026-05-06 15:34:14 +02:00
GarandPLG 12b69102d9 Add Helium AppImage and replace Chromium webapps
- Add Helium browser as an AppImage and include it in system packages.
- Rename fluxer package into the appimages module and update imports.
- Add `SUPER+H` keybinding to launch Helium and `SUPER+CONTROL+T` for
  tsukimi.
- Change web‑app desktop entries to use Helium instead of Chromium.
- Disable ungoogled‑chromium and ChatGPT modules on the laptop host.
- Fix a minor typo in a comment within hardware.nix.
2026-05-06 10:40:20 +02:00
GarandPLG eb2c93805a Update flake.lock, disable affinity, add SSH host
Refresh flake.lock with newer revisions for several packages, turn off
the
Affinity suite in the desktop configuration, and add a new SSH host
entry
for gitssh.garandplg.com with its own identity and port settings.
2026-05-05 21:42:28 +02:00
GarandPLG b82c18145e Enable Jellyfin client and update its package
- Enable `jellyfinClient` in home modules for Garand‑Desktop,
  Garand‑Laptop, and the default host
- Add a desktop entry for the Jellyfin client
- Replace `jellyfin-desktop` with `tsukimi` in the core packages list
- Disable the Affinity graphics suite on Garand‑Laptop
2026-05-01 20:28:03 +02:00
GarandPLG cf2227a8c5 Switch Jellyfin client from delfin to jellyfin-desktop 2026-04-30 00:22:41 +02:00
GarandPLG 1ec541004a Update flake.lock revs and tweak Hyprland binds
Refresh several Nix package revisions (firefox-addons, home-manager,
nixpkgs, noctalia-shell, noctalia-qs) with new narHash values.
Comment out the quickshell module in core defaults.
Fix delfin/finamp keybindings.
2026-04-29 22:54:43 +02:00
GarandPLG 79ff636fa4 Add Upscaler flatpak and host config options 2026-04-29 19:55:59 +02:00
GarandPLG d0986a97f3 dodanie jellyfin 2026-04-29 19:53:12 +02:00
GarandPLG 6644a6aff7 Add EasyEffects module and enable it across hosts
Add new home module for EasyEffects and include it in the default home
modules
list. Enable EasyEffects in Desktop, Laptop, and default host
configurations.
Update flake.lock entries to newer revisions. Adjust Garand‑Laptop
hardware.nix to nest hardware settings.
2026-04-26 19:42:28 +02:00
GarandPLG 44488a7959 Add screen-recorder plugin; refactor Affinity
Introduce a new screen‑recorder plugin with default settings, key
bindings,
and a bar widget entry. Add a dedicated Affinity module, import it in
the
core defaults, and remove the previous package entry. Enable Affinity on
the Garand‑Desktop and Garand‑Laptop hosts while keeping it disabled on
the
default host. Update flake.lock to newer revisions and reorder the
hyprland exec‑once commands.
2026-04-24 14:30:51 +02:00
GarandPLG b31142964c Add ffmpeg to core essentials package list 2026-04-21 02:51:06 +02:00
GarandPLG 5ddc8f7686 Adjust enabled modules and add ffmpeg_dl
Disable Zed remote server, VirtualBox and Exercism modules.
Enable Pixieditor and Gedit editors.
Add ffmpeg_dl Bash function to download streams via ffmpeg.
2026-04-21 01:19:59 +02:00
GarandPLG f912025218 Refresh flake.lock and disable unused services
Add new inputs `crane` and `fenix` to the flake and update lock hashes
for many
dependencies. Disable remote‑server for Zed, ChatGPT, VirtualBox,
Exercism, and Logisim‑Evolution in host configurations. Add
`noctalia-shell`
to Hyprland exec‑once and remove systemd enable in the noctalia module.
2026-04-21 01:02:38 +02:00
GarandPLG ef63afecbe Update flake.lock dependencies and bash aliases
Add corefonts as a new input and lock entry.
Rename plugin-loader to plugin-loader-src.
Switch from a file URL to a GitHub source for the loader.
Update revisions, narHashes and timestamps for multiple dependencies.
Adjust bash aliases (nb, nr, nbr) to use nix build . and nix run .
2026-04-17 13:38:53 +02:00
GarandPLG 312c6321ed Update flake.lock revisions and hashes 2026-04-09 23:11:45 +02:00
GarandPLG 6755410f74 Switch DNS over HTTPS provider to Quad9 2026-04-08 23:41:41 +02:00
GarandPLG db7a9afae7 Enable notify client and replace swww with awww
- Add `notify.enable = true` to Garand-Desktop, Garand-Laptop, and
  default hosts
- Replace `swww` with `awww` in `essentials.nix`
- Expose `notify-client` in the core packages mapping
2026-04-04 23:30:57 +02:00
GarandPLG 34d4d0f707 Update flake.lock dependencies, remove tinted-foot
Bump revisions, narHash values and timestamps for several dependencies,
switch gnome-shell source from GitLab to GitHub, and drop the
tinted-foot
entry from the lock file.
2026-04-04 17:16:42 +02:00
GarandPLG 86a677095a update 2026-03-31 00:20:56 +02:00
GarandPLG 33213e6507 Refresh flake.lock and toggle system options
Upgrade several flake inputs to newer commits and hashes, remove the
unused
`nixpkgs_2` entry, and adjust its dependent inputs. Enable VirtualBox
support
while disabling the Winboat remote‑desktop module. Update `nh` command
aliases
to use the short `-H` flag and always‑run the dry‑run mode.
2026-03-26 20:25:35 +01:00
GarandPLG 5edd43b802 Enable VirtualBox & Affinity, adjust Hyprland binds
Turn on VirtualBox support and the Affinity graphics suite in the
system modules configuration.

Add a bind for XF86AudioMicMute to mute the microphone input.

Replace separate pause and play binds with a single
XF86AudioPlay → media playPause action.
2026-03-24 17:26:27 +01:00
GarandPLG a435b7d0cc Enable KDE Connect and refresh dependencies
- Turn on KDE Connect for desktop and laptop configurations
- Add allowed TCP and UDP port ranges (1714‑1764) for KDE Connect
- Update flake.lock with newer revisions, hashes, and add secondary
  inputs
- Set nh program package explicitly
- Adjust GTK settings for dark theme handling
- Disable KDE Connect indicator in service config
- Refactor noctalia plugins to use a shared source URL, add kde‑connect
  plugin, bump version
- Add KDE Connect widget to the right bar
- Remove always_allow_tool_actions from Zed agent settings
2026-03-22 22:08:09 +01:00
GarandPLG 38f618f8c7 Update flake.lock
- Bump rev, narHash and lastModified for several locked inputs:
  firefox-addons, home-manager, nixpkgs, noctalia-shell, noctalia-qs
- Rename the "systems" reference to "systems_2" in the input map
- Add a new locked entry for the "systems" repository
2026-03-11 23:42:50 +01:00
GarandPLG 7f01bed179 Enable Affinity graphics suite on Garand-Desktop 2026-03-04 00:39:30 +01:00
GarandPLG 3e6c55ebcb Update flake.lock dependencies
- Bump revisions and nar hashes for multiple inputs and add the new
  `noctalia-qs` input.
- Change Anki configuration to use a profile‑specific sync username.
- Set Battery widget displayMode to `graphic` instead of `alwaysShow`.
2026-03-03 13:14:16 +01:00
GarandPLG 4ef866927d Update flake.lock and disable Slack on all hosts
Refresh locked revisions and hashes for several inputs in flake.lock.
Disable Slack in Garand-Desktop, Garand-Laptop, and default hosts.
2026-02-23 21:55:45 +01:00
GarandPLG 7da6280a1e Update flake.lock to latest revisions 2026-02-18 00:00:55 +01:00
GarandPLG 60d1363f58 Add Fluxer desktop app package
Expose Fluxer as a system package by adding a new fluxer module and
importing it
in the core packages list.
2026-02-16 22:41:30 +01:00
GarandPLG f2628ed320 Add new Django bash aliases 2026-02-15 20:51:35 +01:00
GarandPLG c3517a0f7f Add ZRAM module and enable it in core defaults 2026-02-14 13:43:14 +01:00
GarandPLG 380b774ee3 Update flake.lock revisions and hashes 2026-02-14 01:22:56 +01:00
GarandPLG cfc4e49f16 Disable Python format on save 2026-02-12 23:01:49 +01:00
GarandPLG e5bfd117b4 Increase disk warning and critical thresholds
The warning threshold is now 90% and the critical threshold is 95%,
up from 80% and 90%.
2026-02-12 22:43:07 +01:00
GarandPLG 68ed6d035e Add Cerebras PAUG provider and split models
Update default model provider to “Cerebras PAUG”. Reorganize the
Cerebras language‑model configuration into two groups – “Cerebras FREE”
and “Cerebras PAUG” – each with its own model list and adjusted token
limits.
2026-02-12 18:45:10 +01:00
GarandPLG c41e664a6b Switch from Evolution to GNOME Calendar module
- Enable `calendar.enable` instead of `evolution.enable` in all host
  system‑modules files.
- Add `modules/core/calendar.nix` defining the calendar option and
  installing GNOME Calendar and Contacts.
- Remove the deprecated `modules/core/evolution.nix` and update
  `core/default.nix` imports accordingly.
- Include the GNOME package set via `./gnome.nix` in
  `modules/core/packages/default.nix`.
2026-02-11 23:39:20 +01:00
GarandPLG c78292ac67 Remove extraneous spaces from Starship icon definitions 2026-02-11 18:11:38 +01:00
GarandPLG 88b161347d Add FiraCode Nerd Font Mono to Zed UI and terminal
Also set buffer font family to the same FiraCode Nerd Font Mono.
2026-02-11 18:01:48 +01:00
GarandPLG a751485bf0 Add ruff LSP and Python tooling to Zed config
Add uv, python314, and ruff to extra packages.

Enable Python format‑on‑save, use ruff as formatter and language server,
and set tab size to 4.

Configure ruff LSP with a bash wrapper and detailed inlay‑hint options.
2026-02-11 16:07:36 +01:00
GarandPLG e2d9522d89 Update flake.lock and disable VirtualBox
Refresh pinned revisions and hashes in flake.lock for several
dependencies and set `virtualbox.enable` to false in the desktop
system configuration.
2026-02-11 13:31:19 +01:00
GarandPLG 53f787d6c8 Enable Evolution module and bind shortcut
Add core/evolution.nix with a toggleable option and import it in the
core
defaults. Enable the option on desktop, laptop, and default hosts.
Remove
the duplicated evolution‑data‑server enable flag from services.nix. Add
a
Hyprland keybinding (Super Shift E) to launch Evolution.
2026-02-08 13:10:11 +01:00
GarandPLG 45ed10b1ec Update flake lock revisions and package settings
- Pin newer revisions for firefox‑addons, home‑manager, nixpkgs,
  noctalia‑shell and stylix.
- Enable Evolution in programs.
- Use Plex desktop override with QT_QPA_PLATFORM and comment out
  the plain version.
- Comment out settings.settingsVersion in noctalia config.
- Reduce plugin window width to 1100 and add columnCount = 2.
2026-02-08 12:52:53 +01:00
GarandPLG 041be371e5 Update flake.lock and simplify plex package
Remove the QT_QPA_PLATFORM override for plex-desktop, using the default
package configuration.
2026-02-04 13:38:05 +01:00
GarandPLG e32b7ce0a5 fix 2026-02-04 10:17:43 +01:00
GarandPLG 62160ebcf0 fix 2026-02-03 06:38:57 +01:00
GarandPLG 276d64816b fix 2026-02-03 06:31:00 +01:00
GarandPLG 743bec0bae fix 2026-02-03 06:02:52 +01:00
GarandPLG 881faf7aac fix 2026-02-02 21:37:34 +01:00
GarandPLG cb8eacf322 minor fixes 2026-02-02 21:32:46 +01:00
GarandPLG 1a756d60e8 Merge pull request 'noctilia-experiment' (#1) from noctilia-experiment into main
Reviewed-on: #1
2026-02-02 20:25:04 +00:00
122 changed files with 1827 additions and 2467 deletions
Generated
+207 -108
View File
@@ -2,7 +2,9 @@
"nodes": {
"affinity-nix": {
"inputs": {
"elemental-wine-source": "elemental-wine-source",
"corefonts": "corefonts",
"crane": "crane",
"fenix": "fenix",
"flake-compat": "flake-compat",
"flake-parts": "flake-parts",
"git-hooks": "git-hooks",
@@ -11,15 +13,15 @@
],
"nixpkgs-wine": "nixpkgs-wine",
"on-linux": "on-linux",
"plugin-loader": "plugin-loader",
"plugin-loader-src": "plugin-loader-src",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1767916874,
"narHash": "sha256-IcvLwoF1CIOd7yELc0Xwqskilw2FxHHRm5ZnmNdBuKc=",
"lastModified": 1779522232,
"narHash": "sha256-43PUS3kPWEWVArFV9h1m4mrWIdHeeVXv7kdteYhobOs=",
"owner": "mrshmllow",
"repo": "affinity-nix",
"rev": "0c110a15fb5605490f7de451073db1c775745fee",
"rev": "328f8f66e375c64255dc3cb3453271aab4d4c273",
"type": "github"
},
"original": {
@@ -66,11 +68,11 @@
"base16-helix": {
"flake": false,
"locked": {
"lastModified": 1760703920,
"narHash": "sha256-m82fGUYns4uHd+ZTdoLX2vlHikzwzdu2s2rYM2bNwzw=",
"lastModified": 1776754714,
"narHash": "sha256-E3OAK27smtATTmX45uoTSRsVD+Y+ZiVVfgM/tjpbtYg=",
"owner": "tinted-theming",
"repo": "base16-helix",
"rev": "d646af9b7d14bff08824538164af99d0c521b185",
"rev": "4d508123037e7851ad36ebf7d9c48b0e9e1eb581",
"type": "github"
},
"original": {
@@ -96,33 +98,67 @@
"type": "github"
}
},
"elemental-wine-source": {
"corefonts": {
"flake": false,
"locked": {
"host": "gitlab.winehq.org",
"lastModified": 1722747031,
"narHash": "sha256-XVhz9p2kgFBoJ376vg8OaFXxcMEjAe9AK1hk0I1rb1Q=",
"owner": "ElementalWarrior",
"repo": "wine",
"rev": "a7c9b19e1a26cf49c63a7c19189a3e2bbe2c6ac2",
"type": "gitlab"
"lastModified": 1431183738,
"narHash": "sha256-610Km9GCtYWxi2SH5jH/XYPXc5f58q5lB05/5XxO/qM=",
"owner": "pushcx",
"repo": "corefonts",
"rev": "8f8627b0004b5f1b952c09cf6390e4ae46475e59",
"type": "github"
},
"original": {
"host": "gitlab.winehq.org",
"owner": "ElementalWarrior",
"ref": "affinity-photo3-wine9.13-part3",
"repo": "wine",
"type": "gitlab"
"owner": "pushcx",
"repo": "corefonts",
"type": "github"
}
},
"crane": {
"locked": {
"lastModified": 1779130139,
"narHash": "sha256-BLrtr42azquO7MdGFU5a7KiMl3YpFlTeIXqy1fT5GlQ=",
"owner": "ipetkov",
"repo": "crane",
"rev": "edb38893982a3338972bb4a2ec7ce7c29ba10fd9",
"type": "github"
},
"original": {
"owner": "ipetkov",
"repo": "crane",
"type": "github"
}
},
"fenix": {
"inputs": {
"nixpkgs": [
"garandos-tui",
"affinity-nix",
"nixpkgs"
],
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
"lastModified": 1779270500,
"narHash": "sha256-r60KTphdevmdIDz1iJ529HvcpOq082ZZ1OnN3jDnrqk=",
"owner": "nix-community",
"repo": "fenix",
"rev": "848395a91def85c11694587636151d89555f1ddb",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "fenix",
"type": "github"
}
},
"fenix_2": {
"inputs": {
"nixpkgs": [
"garandos-tui",
"nixpkgs"
],
"rust-analyzer-src": "rust-analyzer-src_2"
},
"locked": {
"lastModified": 1762929886,
"narHash": "sha256-TQZ3Ugb1FoHpTSc8KLrzN4njIZU4FemAMHyS4M3mt6s=",
@@ -145,11 +181,11 @@
},
"locked": {
"dir": "pkgs/firefox-addons",
"lastModified": 1769918637,
"narHash": "sha256-3XyGk89S0UFvKRZiKpFL4ImP5qP/2AOJUaYC7ogXnJo=",
"lastModified": 1779508957,
"narHash": "sha256-gNwsa7Hwp+pUNe9pvv2aFphcFnm8BoCUUQRm0HXJHD0=",
"owner": "rycee",
"repo": "nur-expressions",
"rev": "5659e4c18d1350d1b511fcdce885fdd879effa22",
"rev": "3bd76938b820b6f7cf537fffa206bb6a73094b4f",
"type": "gitlab"
},
"original": {
@@ -162,11 +198,11 @@
"firefox-gnome-theme": {
"flake": false,
"locked": {
"lastModified": 1764873433,
"narHash": "sha256-1XPewtGMi+9wN9Ispoluxunw/RwozuTRVuuQOmxzt+A=",
"lastModified": 1776136500,
"narHash": "sha256-r0gN2brVWA351zwMV0Flmlcd6SGMvYqFbvC3DfKFM8Y=",
"owner": "rafaelmardojai",
"repo": "firefox-gnome-theme",
"rev": "f7ffd917ac0d253dbd6a3bf3da06888f57c69f92",
"rev": "0f8ba203d475587f477e7ae12661bd8459e225b7",
"type": "github"
},
"original": {
@@ -209,11 +245,11 @@
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1767609335,
"narHash": "sha256-feveD98mQpptwrAEggBQKJTYbvwwglSbOv53uCfH9PY=",
"lastModified": 1778716662,
"narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "250481aafeb741edfe23d29195671c19b36b6dca",
"rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb",
"type": "github"
},
"original": {
@@ -229,11 +265,11 @@
]
},
"locked": {
"lastModified": 1767609335,
"narHash": "sha256-feveD98mQpptwrAEggBQKJTYbvwwglSbOv53uCfH9PY=",
"lastModified": 1775087534,
"narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "250481aafeb741edfe23d29195671c19b36b6dca",
"rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b",
"type": "github"
},
"original": {
@@ -260,7 +296,7 @@
},
"garandos-tui": {
"inputs": {
"fenix": "fenix",
"fenix": "fenix_2",
"naersk": "naersk",
"nixpkgs": [
"nixpkgs"
@@ -290,11 +326,11 @@
]
},
"locked": {
"lastModified": 1767281941,
"narHash": "sha256-6MkqajPICgugsuZ92OMoQcgSHnD6sJHwk8AxvMcIgTE=",
"lastModified": 1778507602,
"narHash": "sha256-kTwur1wV+01SdqskVMSo6JMEpg71ps3HpbFY2GsflKs=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "f0927703b7b1c8d97511c4116eb9b4ec6645a0fa",
"rev": "61ab0e80d9c7ab14c256b5b453d8b3fb0189ba0a",
"type": "github"
},
"original": {
@@ -326,20 +362,18 @@
"gnome-shell": {
"flake": false,
"locked": {
"host": "gitlab.gnome.org",
"lastModified": 1767737596,
"narHash": "sha256-eFujfIUQDgWnSJBablOuG+32hCai192yRdrNHTv0a+s=",
"owner": "GNOME",
"repo": "gnome-shell",
"rev": "ef02db02bf0ff342734d525b5767814770d85b49",
"type": "gitlab"
"type": "github"
},
"original": {
"host": "gitlab.gnome.org",
"owner": "GNOME",
"ref": "gnome-49",
"repo": "gnome-shell",
"type": "gitlab"
"rev": "ef02db02bf0ff342734d525b5767814770d85b49",
"type": "github"
}
},
"home-manager": {
@@ -349,11 +383,11 @@
]
},
"locked": {
"lastModified": 1769952507,
"narHash": "sha256-eNTfxT3v8b7s1dqswgposi5Y1CUMoOUhQKiy29QY25U=",
"lastModified": 1779507042,
"narHash": "sha256-7wOwi8B6D0BYsieZCnHZZj2sNUzgJhLoIVSfkwB7lxQ=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "b59376563943ce163b2553aeb63d0c170967d74e",
"rev": "509ed3c603349a9d43de9e2ae6613baea6bd5b34",
"type": "github"
},
"original": {
@@ -366,11 +400,11 @@
"libnbtplusplus": {
"flake": false,
"locked": {
"lastModified": 1744811532,
"narHash": "sha256-qhmjaRkt+O7A+gu6HjUkl7QzOEb4r8y8vWZMG2R/C6o=",
"lastModified": 1772016279,
"narHash": "sha256-7itkptyjoRcXfGLwg1/jxajetZ3a4mDc66+w4X6yW8s=",
"owner": "PrismLauncher",
"repo": "libnbtplusplus",
"rev": "531449ba1c930c98e0bcf5d332b237a8566f9d78",
"rev": "687e43031df0dc641984b4256bcca50d5b3f7de3",
"type": "github"
},
"original": {
@@ -422,11 +456,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1769789167,
"narHash": "sha256-kKB3bqYJU5nzYeIROI82Ef9VtTbu4uA3YydSk/Bioa8=",
"lastModified": 1779508470,
"narHash": "sha256-Ap9KJX+5xHIn3bPIpfNgT6MEXdAECECwo4/rmlQD74M=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "62c8382960464ceb98ea593cb8321a2cf8f9e3e5",
"rev": "29916453413845e54a65b8a1cf996842300cd299",
"type": "github"
},
"original": {
@@ -438,11 +472,11 @@
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1765674936,
"narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=",
"lastModified": 1777168982,
"narHash": "sha256-GOkGPcboWE9BmGCRMLX3worL4EMnsnG8MyKmXNeYuhQ=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "2075416fcb47225d9b68ac469a5c4801a9c4dd85",
"rev": "f5901329dade4a6ea039af1433fb087bd9c1fe14",
"type": "github"
},
"original": {
@@ -471,14 +505,15 @@
"inputs": {
"nixpkgs": [
"nixpkgs"
]
],
"noctalia-qs": "noctalia-qs"
},
"locked": {
"lastModified": 1769983098,
"narHash": "sha256-PKej3N1BxAoKzusrdWuS9gT8bXW0U/Zk8RkedsP3qYc=",
"lastModified": 1779504029,
"narHash": "sha256-f8u9DV9Qk8KJh7DVvk4UgUFTN0NDJeFxgrffTSwPkpA=",
"owner": "noctalia-dev",
"repo": "noctalia-shell",
"rev": "2a98d04b2f5e251935ba296c0d7dc374bdc5e32d",
"rev": "b99b7a7f06ff749df9ac43181ff7889ff90c5599",
"type": "github"
},
"original": {
@@ -487,6 +522,29 @@
"type": "github"
}
},
"noctalia-qs": {
"inputs": {
"nixpkgs": [
"noctalia",
"nixpkgs"
],
"systems": "systems",
"treefmt-nix": "treefmt-nix_2"
},
"locked": {
"lastModified": 1778983195,
"narHash": "sha256-hE3EFK5GoSdbO5WHZ8bZDUVYkofbDLQN/KK25z7IOOI=",
"owner": "noctalia-dev",
"repo": "noctalia-qs",
"rev": "4116b41cdc89e186be7cb8b24a9b6022af95d742",
"type": "github"
},
"original": {
"owner": "noctalia-dev",
"repo": "noctalia-qs",
"type": "github"
}
},
"nur": {
"inputs": {
"flake-parts": [
@@ -498,11 +556,11 @@
]
},
"locked": {
"lastModified": 1767810917,
"narHash": "sha256-ZKqhk772+v/bujjhla9VABwcvz+hB2IaRyeLT6CFnT0=",
"lastModified": 1777598946,
"narHash": "sha256-X239dAGaU1+gfDj8jKH8GzlqKMcxaVfXOio+uzBOkeE=",
"owner": "nix-community",
"repo": "NUR",
"rev": "dead29c804adc928d3a69dfe7f9f12d0eec1f1a4",
"rev": "5d55af01c0f86be583931fe99207fc56c14134b3",
"type": "github"
},
"original": {
@@ -514,11 +572,11 @@
"on-linux": {
"flake": false,
"locked": {
"lastModified": 1766544016,
"narHash": "sha256-3X1426N7n6bwM7GAQOvpCq2OVdlQevCzbpak0l9B6BU=",
"lastModified": 1772699425,
"narHash": "sha256-xhqkN2I5r+Ty2k8HEsLg5e8Eaazb0Qyioqjs87BQOnY=",
"owner": "seapear",
"repo": "AffinityOnLinux",
"rev": "da601564dfefe2ae3ec10e3f177db81578847b7b",
"rev": "a0c4421946709c24c3f371fcbf15a45b814f188c",
"type": "github"
},
"original": {
@@ -527,16 +585,21 @@
"type": "github"
}
},
"plugin-loader": {
"plugin-loader-src": {
"flake": false,
"locked": {
"narHash": "sha256-mixBa/xIfSIrSS3+bGqznXxSE6h8s7e2xoJM2g4eXhg=",
"type": "file",
"url": "https://github.com/noahc3/AffinityPluginLoader/releases/download/v0.2.0/affinitypluginloader-plus-winefix.tar.xz"
"lastModified": 1776972538,
"narHash": "sha256-2EvrOYQCB2Z2YXhcPnjR67KoOCvwTVW3TfLcmU3//ak=",
"owner": "noahc3",
"repo": "AffinityPluginLoader",
"rev": "1d7956d5b791bd6a213e8b28c1e25e1f4bcc6166",
"type": "github"
},
"original": {
"type": "file",
"url": "https://github.com/noahc3/AffinityPluginLoader/releases/download/v0.2.0/affinitypluginloader-plus-winefix.tar.xz"
"owner": "noahc3",
"repo": "AffinityPluginLoader",
"rev": "1d7956d5b791bd6a213e8b28c1e25e1f4bcc6166",
"type": "github"
}
},
"prismlauncher-cracked": {
@@ -547,11 +610,11 @@
]
},
"locked": {
"lastModified": 1768437816,
"narHash": "sha256-GG+V2g5NfVrypTs8qbtGnUWTXTMkGtohy/uIDa5duI0=",
"lastModified": 1776795718,
"narHash": "sha256-YrqHeE9ZEnmxJiXE+IBAxbmNRFPE7mn9KbxZ3Mpu388=",
"owner": "Diegiwg",
"repo": "PrismLauncher-Cracked",
"rev": "e8418b74059bdbe4fcc97522b25dc17373b0cc21",
"rev": "0c20d448a3c89cbff85ef5dc7420bf60dc1e65ff",
"type": "github"
},
"original": {
@@ -574,6 +637,23 @@
}
},
"rust-analyzer-src": {
"flake": false,
"locked": {
"lastModified": 1779221047,
"narHash": "sha256-HkOWI9C4kxA6xkS9GXhe4hAAme7ekOWje3b1U7rLSIo=",
"owner": "rust-lang",
"repo": "rust-analyzer",
"rev": "f4bd646a7867c7814770168e0d4b9bd3418c1066",
"type": "github"
},
"original": {
"owner": "rust-lang",
"ref": "nightly",
"repo": "rust-analyzer",
"type": "github"
}
},
"rust-analyzer-src_2": {
"flake": false,
"locked": {
"lastModified": 1762860488,
@@ -603,19 +683,18 @@
"nixpkgs"
],
"nur": "nur",
"systems": "systems",
"tinted-foot": "tinted-foot",
"systems": "systems_2",
"tinted-kitty": "tinted-kitty",
"tinted-schemes": "tinted-schemes",
"tinted-tmux": "tinted-tmux",
"tinted-zed": "tinted-zed"
},
"locked": {
"lastModified": 1769888473,
"narHash": "sha256-4KWbaJwaYnZ60bFyTudZYAKskjr7Sa17R3/yh+oXS7w=",
"lastModified": 1779378391,
"narHash": "sha256-IsDb9erotvx9npI94UDosvMeYQK17p7/vmU2v9batrY=",
"owner": "danth",
"repo": "stylix",
"rev": "ae5c0239ae4f82a8c7e33ad8a456535d5a9ba813",
"rev": "c1456cc4ba3c9485e7b4158c909eeca5a752cd59",
"type": "github"
},
"original": {
@@ -625,6 +704,21 @@
}
},
"systems": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
@@ -639,23 +733,6 @@
"type": "github"
}
},
"tinted-foot": {
"flake": false,
"locked": {
"lastModified": 1726913040,
"narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=",
"owner": "tinted-theming",
"repo": "tinted-foot",
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "tinted-foot",
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
"type": "github"
}
},
"tinted-kitty": {
"flake": false,
"locked": {
@@ -675,11 +752,11 @@
"tinted-schemes": {
"flake": false,
"locked": {
"lastModified": 1767710407,
"narHash": "sha256-+W1EB79Jl0/gm4JqmO0Nuc5C7hRdp4vfsV/VdzI+des=",
"lastModified": 1777041405,
"narHash": "sha256-BAGZ7ObFV/9Z61OJZun7ifPyhkuHqNuW1QIhQ8LuzCo=",
"owner": "tinted-theming",
"repo": "schemes",
"rev": "2800e2b8ac90f678d7e4acebe4fa253f602e05b2",
"rev": "5f868b3a338b6904c47f3833b9c411be641983a8",
"type": "github"
},
"original": {
@@ -691,11 +768,11 @@
"tinted-tmux": {
"flake": false,
"locked": {
"lastModified": 1767489635,
"narHash": "sha256-e6nnFnWXKBCJjCv4QG4bbcouJ6y3yeT70V9MofL32lU=",
"lastModified": 1777169200,
"narHash": "sha256-h7dDbIzP5hDr9v97w9PL6jdAgXawmj6krcH+959rqpU=",
"owner": "tinted-theming",
"repo": "tinted-tmux",
"rev": "3c32729ccae99be44fe8a125d20be06f8d7d8184",
"rev": "f798c2dce44ef815bb6b8f05a82135c7942d35ac",
"type": "github"
},
"original": {
@@ -707,11 +784,11 @@
"tinted-zed": {
"flake": false,
"locked": {
"lastModified": 1767488740,
"narHash": "sha256-wVOj0qyil8m+ouSsVZcNjl5ZR+1GdOOAooAatQXHbuU=",
"lastModified": 1777463218,
"narHash": "sha256-Bhkozqtq3BKLqWTlmKm8uAptfX4aRGI8QX3eEL54Vpc=",
"owner": "tinted-theming",
"repo": "base16-zed",
"rev": "11abb0b282ad3786a2aae088d3a01c60916f2e40",
"rev": "5768d08ed2e7944a26a958868cdb073cb8856dae",
"type": "github"
},
"original": {
@@ -727,11 +804,33 @@
]
},
"locked": {
"lastModified": 1767801790,
"narHash": "sha256-QfX6g3Wj2vQe7oBJEbTf0npvC6sJoDbF9hb2+gM5tf8=",
"lastModified": 1775636079,
"narHash": "sha256-pc20NRoMdiar8oPQceQT47UUZMBTiMdUuWrYu2obUP0=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "778a1d691f1ef45dd68c661715c5bf8cbf131c80",
"rev": "790751ff7fd3801feeaf96d7dc416a8d581265ba",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"treefmt-nix_2": {
"inputs": {
"nixpkgs": [
"noctalia",
"noctalia-qs",
"nixpkgs"
]
},
"locked": {
"lastModified": 1775636079,
"narHash": "sha256-pc20NRoMdiar8oPQceQT47UUZMBTiMdUuWrYu2obUP0=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "790751ff7fd3801feeaf96d7dc416a8d581265ba",
"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
];
+1 -1
View File
@@ -58,7 +58,7 @@
}
];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# Enables DHCP on each ethernet and wireless inter.. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
+5 -3
View File
@@ -5,7 +5,7 @@ _: {
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
remote-server.enable = false; # Remote Server: enable remote editing capabilities
};
/*
@@ -18,13 +18,14 @@ _: {
System utilities
*/
btop.enable = true; # Btop: a resource monitor for the terminal
easyeffects.enable = true; # EasyEffects: Audio effects for PipeWire applications
cava.enable = false; # Cava: terminal audio visualizer
fastfetch.enable = true; # Fastfetch: a fast system information tool
/*
Communication and synchronization
*/
kdeconnect.enable = false; # KDE Connect: integrate your phone and desktop
kdeconnect.enable = true; # 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
@@ -57,9 +58,10 @@ _: {
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
chatgpt.enable = false; # 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
};
};
}
+14
View File
@@ -0,0 +1,14 @@
{
printEnable = true;
ensureDefaultPrinter = "Brother-T525W";
ensurePrinters = [
{
deviceUri = "ipp://192.168.1.110/ipp";
location = "home";
name = "Brother-T525W";
model = "everywhere";
}
];
}
+34 -9
View File
@@ -3,13 +3,14 @@ _: {
Container & Packaging
*/
docker.enable = true; # Docker: container runtime and management
virtualbox.enable = true; # VirtualBox: PC emulator
virtualbox.enable = false; # VirtualBox: PC emulator
flatpak = {
enable = true; # Flatpak: universal packaging system for Linux
packages = {
sober.enable = false; # Roblox client
warehouse.enable = true; # Flatpak manager
flatseal.enable = true; # Flatpak permissions manager
upscaler.enable = true; # Upscaler: Upscale and enhance images
};
};
@@ -18,6 +19,11 @@ _: {
*/
tailscale.enable = true; # Tailscale: secure network for remote access
/*
Calendar & Contacts
*/
calendar.enable = true; # GNOME Calendar: calendar and contacts application
/*
Gaming
*/
@@ -25,18 +31,34 @@ _: {
gamescope.enable = false; # Gamescope: microcompositor for games
steam.enable = true; # Steam: platform for buying and playing games
/*
Media & Graphics
*/
affinity.enable = false; # Affinity: professional graphics suite
/*
Utilities / Misc
*/
ventoy.enable = false; # Ventoy: New Bootable USB Solution with GUI support
packages = {
/*
Web browsers
*/
appImages.helium.enable = true; # Helium: Better ungoogled-chromium
/*
Container & Packaging
*/
distrobox.enable = false; # Distrobox: containerized development environments
lazydocker.enable = false; # Lazydocker: simple TUI for Docker
bottles.enable = false; # Bottles: Easy-to-use wineprefix manager
boxes.enable = false; # Gnome-Boxes: virtual machine manager
/*
Gaming
*/
prismlauncher.enable = true; # Prism Launcher: Minecraft modded launcher
prismlauncher.enable = false; # Prism Launcher: Minecraft modded launcher
spaceCadetPinball.enable = true; # SpaceCadet Pinball: classic pinball game
ttySolitaire.enable = true; # TTY Solitaire: terminalbased solitaire game
heroic.enable = false; # Native GOG, Epic, and Amazon Games Launcher for Linux, Windows and Mac
@@ -44,21 +66,23 @@ _: {
/*
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
logisim-evolution.enable = true; # Logisim-Evolution: Digital logic designer and simulator
logisim-evolution.enable = false; # Logisim-Evolution: Digital logic designer and simulator
/*
Communication & Collaboration
*/
mattermost.enable = true; # Mattermost: opensource Slack alternative
slack.enable = true; # Slack: team communication and collaboration tool
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
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
/*
Productivity / Knowledge Management
@@ -70,21 +94,22 @@ _: {
/*
Media & Graphics
*/
affinity.enable = false; # Affinity: professional graphics suite
eyeOfGnome.enable = true; # 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
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
jellyfin.enable = true; # Jellyfin: foss media player
/*
Utilities / Misc
*/
eddieAirVPN.enable = true; # Eddie AirVPN: VPN client
galculator.enable = false; # Galculator: simple calculator
gnomeCalculator.enable = true; # gnomeCalculator: simple calculator
gedit.enable = true; # Gedit: GNOME text editor
winboat.enable = true; # Winboat: Windows remote desktop via RDP
winboat.enable = false; # Winboat: Windows remote desktop via RDP
adb.enable = false; # ADB: Android SDK platform tools
};
}
+20 -17
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";
@@ -33,28 +37,27 @@
nvidiaID = "PCI:0:2:0";
# Enable NFS
enableNFS = true;
# Enable Printing Support
printEnable = true;
enableNFS = false;
# Set Stylix Image
# This will set your color palette
# Default background
# Add new images to ~/garandos/wallpapers
stylixImage = "attack-on-titan-mikasa-ackerman.jpg";
#stylixImage = "DW_Pacts.jpg";
#stylixImage = "edward-elric-fullmetal-alchemist.jpg";
#stylixImage = "fire-nation.jpg";
#stylixImage = "four-elements.jpg";
#stylixImage = "fullmetal-alchemist-5120x2880-10399.png";
#stylixImage = "Grounded_Wallpaper_4K.jpg";
#stylixImage = "jablon.jpg";
#stylixImage = "rammstein-log-two.jpg";
#stylixImage = "rammstein-logo-one.jpg";
#stylixImage = "rammstein-logo-three.jpg";
#stylixImage = "rammstein-one.jpg";
#stylixImage = "1346530.jpeg";
# stylixImage = "Attack-on-Titan-1.jpg"; # og/10
stylixImage = "Attack-on-Titan-2.jpg"; # 9/10
# stylixImage = "Attack-on-Titan-3.jpg"; # 7.5/10
# stylixImage = "Avatar-1.jpg"; # 5/10
# stylixImage = "Avatar-2.jpg"; # 4/10
# stylixImage = "Avatar-3.jpg"; # 2/10
# stylixImage = "Avatar-4.jpg"; # 3/10
# stylixImage = "Edge-of-Tomorrow-1.jpg"; # 2/10
# stylixImage = "Friren-1.jpg"; # 6.5/10
# stylixImage = "Friren-2.jpg"; # 2/10
# stylixImage = "Friren-3.jpg"; # 4/10
# stylixImage = "Jablon.png"; # 1/10
# stylixImage = "Song-of-the-Sea-1.jpg"; # 3/10
# stylixImage = "Wolfwalkers-1.jpg"; # 6/10
# stylixImage = "Wolfwalkers-2.jpg"; # 5/10
# Set network hostId if required (needed for zfs)
# Otherwise leave as-is
+4 -1
View File
@@ -61,5 +61,8 @@
# networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
hardware = {
amdgpu.opencl.enable = true;
cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
};
}
+6 -4
View File
@@ -5,26 +5,27 @@ _: {
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
remote-server.enable = false; # Remote Server: enable remote editing capabilities
};
/*
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
*/
btop.enable = true; # Btop: a resource monitor for the terminal
easyeffects.enable = true; # EasyEffects: Audio effects for PipeWire applications
cava.enable = false; # Cava: terminal audio visualizer
fastfetch.enable = true; # Fastfetch: a fast system information tool
/*
Communication and synchronization
*/
kdeconnect.enable = false; # KDE Connect: integrate your phone and desktop
kdeconnect.enable = true; # 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
@@ -57,9 +58,10 @@ _: {
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
chatgpt.enable = false; # 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
};
};
}
+14
View File
@@ -0,0 +1,14 @@
{
printEnable = true;
ensureDefaultPrinter = "Brother-T525W";
ensurePrinters = [
{
deviceUri = "ipp://192.168.1.110/ipp";
location = "home";
name = "Brother-T525W";
model = "everywhere";
}
];
}
+32 -7
View File
@@ -10,6 +10,7 @@ _: {
sober.enable = false; # Roblox client
warehouse.enable = true; # Flatpak manager
flatseal.enable = true; # Flatpak permissions manager
upscaler.enable = true; # Upscaler: Upscale and enhance images
};
};
@@ -18,6 +19,11 @@ _: {
*/
tailscale.enable = true; # Tailscale: secure network for remote access
/*
Calendar & Contacts
*/
calendar.enable = true; # GNOME Calendar: calendar and contacts application
/*
Gaming
*/
@@ -25,18 +31,34 @@ _: {
gamescope.enable = false; # Gamescope: microcompositor for games
steam.enable = true; # Steam: platform for buying and playing games
/*
Media & Graphics
*/
affinity.enable = false; # Affinity: professional graphics suite
/*
Utilities / Misc
*/
ventoy.enable = false; # Ventoy: New Bootable USB Solution with GUI support
packages = {
/*
Web browsers
*/
appImages.helium.enable = true; # Helium: Better ungoogled-chromium
/*
Container & Packaging
*/
distrobox.enable = false; # Distrobox: containerized development environments
lazydocker.enable = false; # Lazydocker: simple TUI for Docker
bottles.enable = false; # Bottles: Easy-to-use wineprefix manager
boxes.enable = false; # Gnome-Boxes: virtual machine manager
/*
Gaming
*/
prismlauncher.enable = true; # Prism Launcher: Minecraft modded launcher
prismlauncher.enable = false; # Prism Launcher: Minecraft modded launcher
spaceCadetPinball.enable = true; # SpaceCadet Pinball: classic pinball game
ttySolitaire.enable = true; # TTY Solitaire: terminalbased solitaire game
heroic.enable = false; # Native GOG, Epic, and Amazon Games Launcher for Linux, Windows and Mac
@@ -44,7 +66,7 @@ _: {
/*
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
@@ -54,11 +76,13 @@ _: {
Communication & Collaboration
*/
mattermost.enable = true; # Mattermost: opensource Slack alternative
slack.enable = true; # Slack: team communication and collaboration tool
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
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
/*
Productivity / Knowledge Management
@@ -70,20 +94,21 @@ _: {
/*
Media & Graphics
*/
affinity.enable = false; # Affinity: professional graphics suite
eyeOfGnome.enable = true; # 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
pixieditor.enable = true; # Pixieditor: Universal editor for all your 2D needs
plex.enable = true; # Plex: media player and server client
jellyfin.enable = true; # Jellyfin: foss media player
/*
Utilities / Misc
*/
eddieAirVPN.enable = true; # Eddie AirVPN: VPN client
galculator.enable = false; # Galculator: simple calculator
gedit.enable = false; # Gedit: GNOME text editor
gnomeCalculator.enable = true; # gnomeCalculator: simple calculator
gedit.enable = true; # Gedit: GNOME text editor
winboat.enable = false; # Winboat: Windows remote desktop via RDP
adb.enable = false; # ADB: Android SDK platform tools
};
+20 -17
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";
@@ -33,28 +37,27 @@
nvidiaID = "PCI:0:2:0";
# Enable NFS
enableNFS = true;
# Enable Printing Support
printEnable = false;
enableNFS = false;
# Set Stylix Image
# This will set your color palette
# Default background
# Add new images to ~/garandos/wallpapers
stylixImage = "attack-on-titan-mikasa-ackerman.jpg";
#stylixImage = "DW_Pacts.jpg";
#stylixImage = "edward-elric-fullmetal-alchemist.jpg";
#stylixImage = "fire-nation.jpg";
#stylixImage = "four-elements.jpg";
#stylixImage = "fullmetal-alchemist-5120x2880-10399.png";
#stylixImage = "Grounded_Wallpaper_4K.jpg";
#stylixImage = "jablon.jpg";
#stylixImage = "rammstein-log-two.jpg";
#stylixImage = "rammstein-logo-one.jpg";
#stylixImage = "rammstein-logo-three.jpg";
#stylixImage = "rammstein-one.jpg";
#stylixImage = "1346530.jpeg";
# stylixImage = "Attack-on-Titan-1.jpg"; # og/10
stylixImage = "Attack-on-Titan-2.jpg"; # 9/10
# stylixImage = "Attack-on-Titan-3.jpg"; # 7.5/10
# stylixImage = "Avatar-1.jpg"; # 5/10
# stylixImage = "Avatar-2.jpg"; # 4/10
# stylixImage = "Avatar-3.jpg"; # 2/10
# stylixImage = "Avatar-4.jpg"; # 3/10
# stylixImage = "Edge-of-Tomorrow-1.jpg"; # 2/10
# stylixImage = "Friren-1.jpg"; # 6.5/10
# stylixImage = "Friren-2.jpg"; # 2/10
# stylixImage = "Friren-3.jpg"; # 4/10
# stylixImage = "Jablon.png"; # 1/10
# stylixImage = "Song-of-the-Sea-1.jpg"; # 3/10
# stylixImage = "Wolfwalkers-1.jpg"; # 6/10
# stylixImage = "Wolfwalkers-2.jpg"; # 5/10
# Set network hostId if required (needed for zfs)
# Otherwise leave as-is
+2
View File
@@ -18,6 +18,7 @@ _: {
System utilities
*/
btop.enable = true; # Btop: a resource monitor for the terminal
easyeffects.enable = true; # EasyEffects: Audio effects for PipeWire applications
cava.enable = false; # Cava: terminal audio visualizer
fastfetch.enable = true; # Fastfetch: a fast system information tool
@@ -60,6 +61,7 @@ _: {
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
};
};
}
+21
View File
@@ -0,0 +1,21 @@
{
# Whether printing services should be enabled.
printEnable = false;
# Name of the default printer.
ensureDefaultPrinter = "[name]";
# List of printers to ensure are configured.
ensurePrinters = [
{
# URI of the printer device.
deviceUri = "ipp://[IPv4]/ipp";
# Physical location description of the printer.
location = "[location]";
# Humanreadable printer name.
name = "[name]";
# Printer model; "everywhere" uses generic driver.
model = "everywhere";
}
];
}
+28 -3
View File
@@ -10,6 +10,7 @@ _: {
sober.enable = false; # Roblox client
warehouse.enable = true; # Flatpak manager
flatseal.enable = true; # Flatpak permissions manager
upscaler.enable = false; # Upscaler: Upscale and enhance images
};
};
@@ -18,6 +19,11 @@ _: {
*/
tailscale.enable = false; # Tailscale: secure network for remote access
/*
Calendar & Contacts
*/
calendar.enable = true; # GNOME Calendar: calendar and contacts application
/*
Gaming
*/
@@ -25,13 +31,29 @@ _: {
gamescope.enable = false; # Gamescope: microcompositor for games
steam.enable = true; # Steam: platform for buying and playing games
/*
Media & Graphics
*/
affinity.enable = false; # Affinity: professional graphics suite
/*
Utilities / Misc
*/
ventoy.enable = false; # Ventoy: New Bootable USB Solution with GUI support
packages = {
/*
Web browsers
*/
appImages.helium.enable = true; # Helium: Better ungoogled-chromium
/*
Container & Packaging
*/
distrobox.enable = false; # Distrobox: containerized development environments
lazydocker.enable = false; # Lazydocker: simple TUI for Docker
bottles.enable = false; # Bottles: Easy-to-use wineprefix manager
boxes.enable = false; # Gnome-Boxes: virtual machine manager
/*
Gaming
@@ -54,11 +76,13 @@ _: {
Communication & Collaboration
*/
mattermost.enable = true; # Mattermost: opensource Slack alternative
slack.enable = true; # Slack: team communication and collaboration tool
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
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
/*
Productivity / Knowledge Management
@@ -70,19 +94,20 @@ _: {
/*
Media & Graphics
*/
affinity.enable = false; # Affinity: professional graphics suite
eyeOfGnome.enable = true; # 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
/*
Utilities / Misc
*/
eddieAirVPN.enable = true; # Eddie AirVPN: VPN client
galculator.enable = false; # Galculator: simple calculator
gnomeCalculator.enable = true; # 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
+20 -17
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";
@@ -35,10 +39,7 @@
nvidiaID = "PCI:0:2:0";
# Enable NFS
enableNFS = true;
# Enable Printing Support
printEnable = false;
enableNFS = false;
# Themes, waybar and animation.
# Only uncomment your selection
@@ -48,19 +49,21 @@
# This will set your color palette
# Default background
# Add new images to ~/garandos/wallpapers
stylixImage = "attack-on-titan-mikasa-ackerman.jpg";
#stylixImage = "DW_Pacts.jpg";
#stylixImage = "edward-elric-fullmetal-alchemist.jpg";
#stylixImage = "fire-nation.jpg";
#stylixImage = "four-elements.jpg";
#stylixImage = "fullmetal-alchemist-5120x2880-10399.png";
#stylixImage = "Grounded_Wallpaper_4K.jpg";
#stylixImage = "jablon.jpg";
#stylixImage = "rammstein-log-two.jpg";
#stylixImage = "rammstein-logo-one.jpg";
#stylixImage = "rammstein-logo-three.jpg";
#stylixImage = "rammstein-one.jpg";
#stylixImage = "1346530.jpeg";
# stylixImage = "Attack-on-Titan-1.jpg"; # og/10
stylixImage = "Attack-on-Titan-2.jpg"; # 9/10
# stylixImage = "Attack-on-Titan-3.jpg"; # 7.5/10
# stylixImage = "Avatar-1.jpg"; # 5/10
# stylixImage = "Avatar-2.jpg"; # 4/10
# stylixImage = "Avatar-3.jpg"; # 2/10
# stylixImage = "Avatar-4.jpg"; # 3/10
# stylixImage = "Edge-of-Tomorrow-1.jpg"; # 2/10
# stylixImage = "Friren-1.jpg"; # 6.5/10
# stylixImage = "Friren-2.jpg"; # 2/10
# stylixImage = "Friren-3.jpg"; # 4/10
# stylixImage = "Jablon.png"; # 1/10
# stylixImage = "Song-of-the-Sea-1.jpg"; # 3/10
# stylixImage = "Wolfwalkers-1.jpg"; # 6/10
# stylixImage = "Wolfwalkers-2.jpg"; # 5/10
# Set network hostId if required (needed for zfs)
# Otherwise leave as-is
+14
View File
@@ -0,0 +1,14 @@
{
pkgs,
lib,
config,
inputs,
...
}: {
options.affinity.enable = lib.mkEnableOption "Affinity";
config = lib.mkIf config.affinity.enable {
nixpkgs.overlays = [inputs.affinity-nix.overlays.default];
environment.systemPackages = with pkgs; [affinity-v3];
};
}
+5 -11
View File
@@ -1,7 +1,6 @@
{
pkgs,
config,
lib,
...
}: {
boot = {
@@ -15,16 +14,11 @@
efi.canTouchEfiVariables = true;
limine = {
enable = true;
style = {
wallpapers = [
./../../wallpapers/attack-on-titan-mikasa-ackerman.jpg
];
wallpaperStyle = lib.mkForce "centered";
backdrop = "${config.stylix.base16Scheme.base00}";
interface = {
branding = "GarandOS Bootloader";
resolution = "1920x1080";
};
package = pkgs.limine;
resolution = "1920x1080";
style.interface = {
branding = "GarandOS Bootloader";
brandingColor = "${config.stylix.base16Scheme.base01}";
};
};
};
+16
View File
@@ -0,0 +1,16 @@
{
pkgs,
lib,
config,
...
}: {
options.calendar.enable = lib.mkEnableOption "Enable GNOME Calendar";
config = {
services.gnome.evolution-data-server.enable = lib.mkIf config.calendar.enable true;
environment.systemPackages = lib.mkIf config.calendar.enable (with pkgs; [
gnome-calendar
gnome-contacts
]);
};
}
+4 -1
View File
@@ -1,7 +1,9 @@
{inputs, ...}: {
imports = [
./packages
./affinity.nix
./boot.nix
./calendar.nix
./docker.nix
./flatpak.nix
./fonts.nix
@@ -11,7 +13,6 @@
./nfs.nix
./nh.nix
./printing.nix
./quickshell.nix
./greetd.nix
./security.nix
./services.nix
@@ -22,9 +23,11 @@
./tailscale.nix
./thunar.nix
./user.nix
./ventoy.nix
./virtualbox.nix
./xdg.nix
./xserver.nix
./zram.nix
inputs.stylix.nixosModules.stylix
];
}
+5
View File
@@ -2,12 +2,17 @@
pkgs,
lib,
config,
profile,
...
}: {
options.docker.enable = lib.mkEnableOption "Docker";
config.virtualisation.docker = lib.mkIf config.docker.enable {
enable = true;
enableNvidia =
if profile == "nvidia"
then true
else false;
package = pkgs.docker;
daemon.settings.dns = ["9.9.9.11" "149.112.112.11"];
};
+1
View File
@@ -14,6 +14,7 @@
sober = "org.vinegarhq.Sober";
warehouse = "io.github.flattool.Warehouse";
flatseal = "com.github.tchx84.Flatseal";
upscaler = "io.gitlab.theevilskeleton.Upscaler";
};
in {
options.flatpak.enable = lib.mkEnableOption "Flatpak";
+14 -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 = [
{
@@ -28,10 +27,22 @@ in {
59011
8080
];
allowedTCPPortRanges = [
{
from = 1714;
to = 1764;
}
];
allowedUDPPorts = [
59010
59011
];
allowedUDPPortRanges = [
{
from = 1714;
to = 1764;
}
];
};
};
}
+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;
+6 -1
View File
@@ -1,6 +1,11 @@
{username, ...}: {
{
username,
pkgs,
...
}: {
programs.nh = {
enable = true;
package = pkgs.nh;
clean = {
enable = true;
extraArgs = "--keep-since 7d --keep 5";
@@ -0,0 +1,20 @@
{
pkgs,
lib,
config,
...
}: let
mkAppImagePackage = name: pkg: {
options.packages.appImages.${name}.enable = lib.mkEnableOption name;
config.environment.systemPackages =
lib.mkIf config.packages.appImages.${name}.enable [pkg];
};
appImagePackages = {
fluxer = pkgs.callPackage ./fluxer.nix {};
helium = pkgs.callPackage ./helium.nix {};
};
in {
imports = builtins.attrValues (builtins.mapAttrs mkAppImagePackage appImagePackages);
}
@@ -0,0 +1,37 @@
{
lib,
appimageTools,
fetchurl,
}: let
pname = "fluxer";
version = "canary";
src = fetchurl {
url = "https://api.fluxer.app/dl/desktop/stable/linux/x64/latest/appimage";
sha256 = "sha256-GdoBK+Z/d2quEIY8INM4IQy5tzzIBBM+3CgJXQn0qAw=";
};
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 = "Fluxer desktop app";
homepage = "https://github.com/fluxerapp/fluxer";
license = licenses.agpl3Only;
platforms = ["x86_64-linux"];
sourceProvenance = with lib.sourceTypes; [binaryNativeCode];
maintainers = with lib.maintainers; [garand_plg];
};
}
@@ -0,0 +1,39 @@
{
lib,
appimageTools,
fetchurl,
}: let
pname = "helium";
version = "0.12.4.1";
src = fetchurl {
url = "https://github.com/imputnet/helium-linux/releases/download/${version}/helium-${version}-x86_64.AppImage";
sha256 = "sha256-OgS8HkLBseFrEhNFJxMwp1bg0gzPdfY1VaySAAp7vq0=";
};
appimageContents = appimageTools.extract {inherit pname version src;};
iconSize = "256x256";
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 = "Helium browser";
homepage = "https://github.com/imputnet/helium";
license = licenses.agpl3Plus;
platforms = ["x86_64-linux"];
sourceProvenance = with lib.sourceTypes; [binaryNativeCode];
maintainers = with lib.maintainers; [garand_plg];
};
}
# https://github.com/imputnet/helium-linux/releases/download/0.11.7.1/helium-0.11.7.1-x86_64.AppImage
+1
View File
@@ -1,6 +1,7 @@
_: {
nixpkgs.config.allowUnfree = true;
imports = [
./appimages
./essentials.nix
./packages.nix
./programs.nix
+4 -1
View File
@@ -27,6 +27,7 @@
duf
dysk
ncdu
smartmontools
# Network & system utilities
ripgrep
wget
@@ -35,6 +36,7 @@
brightnessctl
killall
dex
ffmpeg
# Desktop environment
networkmanagerapplet
tuigreet
@@ -42,6 +44,7 @@
waypaper
uwsm
hyprpicker
hyprshot
cliphist
# Development utilities
pkg-config
@@ -58,7 +61,7 @@
app2unit
gpu-screen-recorder
# hyprland
swww
awww
grim
slurp
wl-clipboard
+31 -6
View File
@@ -16,7 +16,7 @@
packages = with pkgs; {
bitwarden = bitwarden-desktop;
eddieAirVPN = eddie;
galculator = galculator;
gnomeCalculator = gnome-calculator;
gedit = gedit;
iotas = iotas;
logseq = logseq;
@@ -31,17 +31,39 @@
spaceCadetPinball = space-cadet-pinball;
ttySolitaire = tty-solitaire;
gimp = gimp;
affinity = inputs.affinity-nix.packages.${system}.v3;
eyeOfGnome = eog;
kdenlive = kdePackages.kdenlive;
kdenlive = kdePackages.kdenlive.overrideAttrs (old: {
postInstall =
(old.postInstall or "")
+ ''
wrapProgram $out/bin/kdenlive \
--set QT_SCALE_FACTOR 0.8
'';
});
plex = [
(plex-desktop.override {extraEnv = {QT_QPA_PLATFORM = "xcb";};})
(
plex-desktop.override {
extraEnv = {
QT_QPA_PLATFORM = "xcb";
};
}
)
plexamp
];
jellyfin = [
tsukimi
finamp
];
freetube = freetube;
lazydocker = lazydocker;
distrobox = [distrobox pkgs.boxbuddy];
winboat = [winboat freerdp];
distrobox = [
distrobox
pkgs.boxbuddy
];
winboat = [
winboat
freerdp
];
signal = signal-desktop;
pixieditor = pixieditor;
bottles = bottles;
@@ -50,6 +72,9 @@
teams = teams-for-linux;
ferdium = ferdium;
logisim-evolution = logisim-evolution;
notify = notify-client;
boxes = gnome-boxes;
switcheroo = switcheroo;
};
in {
imports = builtins.attrValues (builtins.mapAttrs mkPackage packages);
+1
View File
@@ -5,6 +5,7 @@ _: {
enable = true;
withUWSM = false;
};
fish.enable = true;
dconf.enable = true;
seahorse.enable = true;
fuse.userAllowOther = true;
+32 -12
View File
@@ -1,18 +1,38 @@
{host, ...}: let
inherit (import ../../hosts/${host}/variables.nix) printEnable;
in {
services = {
{
pkgs,
lib,
printEnable,
ensureDefaultPrinter,
ensurePrinters,
...
}: {
services = lib.mkIf printEnable {
printing = {
enable = printEnable;
drivers = [
# pkgs.hplipWithPlugin
enable = true;
drivers = with pkgs; [
cups-filters
cups-browsed
];
};
avahi = {
enable = printEnable;
nssmdns4 = true;
listenAddresses = ["*:631"];
allowFrom = ["all"];
browsing = true;
defaultShared = true;
openFirewall = true;
};
ipp-usb.enable = printEnable;
avahi = {
enable = true;
nssmdns4 = true;
openFirewall = true;
publish = {
enable = true;
userServices = true;
};
};
ipp-usb.enable = true;
};
hardware.printers = lib.mkIf printEnable {
ensureDefaultPrinter = ensureDefaultPrinter;
ensurePrinters = ensurePrinters;
};
}
-30
View File
@@ -1,30 +0,0 @@
{pkgs, ...}: {
environment = {
systemPackages = with pkgs; [
quickshell
# Qt6 related kitsfor slove Qt5Compat problem
qt6.qt5compat
qt6.qtbase
qt6.qtquick3d
qt6.qtwayland
qt6.qtdeclarative
qt6.qtsvg
# alternate options
# libsForQt5.qt5compat
kdePackages.qt5compat
libsForQt5.qt5.qtgraphicaleffects
];
# necessary environment variables
variables = {
QML_IMPORT_PATH = "${pkgs.qt6.qt5compat}/lib/qt-6/qml:${pkgs.qt6.qtbase}/lib/qt-6/qml";
QML2_IMPORT_PATH = "${pkgs.qt6.qt5compat}/lib/qt-6/qml:${pkgs.qt6.qtbase}/lib/qt-6/qml";
};
# make sure the Qt application is working properly
sessionVariables = {
QT_QPA_PLATFORM = "wayland;xcb";
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
};
};
}
+1 -4
View File
@@ -18,10 +18,7 @@
ports = [22];
};
tumbler.enable = true; # Image/video preview
gnome = {
gnome-keyring.enable = true;
evolution-data-server.enable = true;
};
gnome.gnome-keyring.enable = true;
smartd = {
enable =
if profile == "vm"
+11 -4
View File
@@ -1,10 +1,8 @@
{
pkgs,
host,
stylixImage,
...
}: let
inherit (import ../../hosts/${host}/variables.nix) stylixImage;
in {
}: {
# Styling Options
stylix = {
enable = true;
@@ -36,5 +34,14 @@ in {
popups = 12;
};
};
targets.limine = {
enable = true;
colors.enable = true;
image.enable = true;
imageScalingMode = {
enable = true;
override = "tile";
};
};
};
}
+2 -4
View File
@@ -1,10 +1,8 @@
{
host,
consoleKeyMap,
inputs,
...
}: let
inherit (import ../../hosts/${host}/variables.nix) consoleKeyMap;
in {
}: {
nix = {
nixPath = ["nixpkgs=${inputs.nixpkgs}"];
settings = {
+20 -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,7 @@ in {
username = "${username}";
homeDirectory = "/home/${username}";
stateVersion = "25.11";
shell.enableFishIntegration = true;
};
};
};
@@ -51,8 +62,13 @@ in {
"wheel" # sudo access
"vboxusers" # Virtual Box
"gamemode"
"lpadmin"
];
shell = pkgs.bash;
shell = with pkgs; (
if shell == "fish"
then fish
else bash
);
ignoreShellProgramCheck = true;
linger = true;
};
+15
View File
@@ -0,0 +1,15 @@
{
pkgs,
lib,
config,
...
}: {
options.ventoy.enable = lib.mkEnableOption "Enable Ventoy";
config = lib.mkIf config.ventoy.enable {
environment.systemPackages = with pkgs; [ventoy-full-gtk];
nixpkgs.config.permittedInsecurePackages = [
"ventoy-gtk3-1.1.12"
];
};
}
+1 -3
View File
@@ -1,6 +1,4 @@
{host, ...}: let
inherit (import ../../hosts/${host}/variables.nix) keyboardLayout;
in {
{keyboardLayout, ...}: {
services.xserver = {
enable = true;
xkb = {
+32
View File
@@ -0,0 +1,32 @@
{pkgs, ...}: {
zramSwap = {
enable = true;
priority = 5;
memoryMax = 16 * 1024 * 1024 * 1024;
algorithm = "zstd";
swapDevices = 1;
memoryPercent = 50;
};
boot = {
kernelParams = [
"zswap.enabled=1" # enables zswap
"zswap.compressor=zstd" # compression algorithm
"zswap.max_pool_percent=20" # maximum percentage of RAM that zswap is allowed to use
"zswap.shrinker_enabled=1" # whether to shrink the pool proactively on high memory pressure
];
tmp = {
useZram = true;
zramSettings = {
compression-algorithm = "zstd";
zram-size = "ram * 0.5";
fs-type = "ext4";
options = "X-mount.mode=1777,discard";
};
};
};
services.zram-generator = {
enable = true;
package = pkgs.zram-generator;
settings = {};
};
}
+4 -2
View File
@@ -13,7 +13,9 @@ in {
config = mkIf cfg.enable {
services.xserver.videoDrivers = ["nvidia"];
environment.systemPackages = with pkgs; [nvidia-docker];
environment.systemPackages = with pkgs; [
nvidia-docker
];
hardware = {
nvidia-container-toolkit.enable = true;
nvidia = {
@@ -36,7 +38,7 @@ in {
# accessible via `nvidia-settings`.
nvidiaSettings = true;
# Optionally, you may need to select the appropriate driver version for your specific GPU.
package = config.boot.kernelPackages.nvidiaPackages.beta;
package = config.boot.kernelPackages.nvidiaPackages.stable;
};
};
};
+1 -1
View File
@@ -12,6 +12,6 @@
package = pkgs.anki;
language = "pl_PL";
style = "native";
sync.username = username;
profiles."${username}".sync.username = username;
};
}
+19 -10
View File
@@ -6,30 +6,38 @@
programs.bash.shellAliases = {
# GarandOS aliases
pullos = "git -C /home/${username}/garandos pull";
upd = "nh os switch --hostname ${host}";
upg = "nh os switch --hostname ${host} --update";
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-undo = "git -C /home/${username}/garandos restore /home/${username}/garandos/flake.lock";
upd-bt = "nh os boot --hostname ${host}";
upd-ts = "nh os test --hostname ${host}";
upd-bd = "nh os build --hostname ${host}";
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";
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";
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";
@@ -42,7 +50,8 @@
# System aliases
# flush-codium = "sudo killall codium && sudo rm -rf ~/.config/VSCodium/Cache && sudo rm -rf ~/.config/VSCodium/CachedData";
kys = "shutdown now";
kys = "systemctl poweroff";
jezus = "systemctl reboot";
ookla = "speedtest";
hypr-cli = "hyprctl clients";
+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
+17
View File
@@ -140,5 +140,22 @@ _: {
pwdtail() {
pwd | awk -F/ '{nlast = NF -1;print $nlast"/"$NF}'
}
ffmpeg_dl() {
if [ "$#" -ne 3 ]; then
echo "Usage: ffmpeg_dl <url> <name> <fs_path>"
return 1
fi
local url="$1"
local name="$2"
local fs_path="$3"
mkdir -p "$fs_path"
local output="${"$"}{fs_path}/${"$"}{name}.mp4"
ffmpeg -i "$url" -c copy "$output"
}
'';
}
+1
View File
@@ -16,6 +16,7 @@
batgrep
];
};
home.sessionVariables = {
MANPAGER = "sh -c 'col -bx | bat -l man -p'";
MANROFFOPT = "-c";
+2 -1
View File
@@ -3,6 +3,7 @@ _: {
./bash
./chromium
./fastfetch
./fish
./hyprland
./kitty
./librewolf
@@ -15,7 +16,7 @@ _: {
./bat.nix
./btop.nix
./cava.nix
./emoji.nix
./easyeffects.nix
./eza.nix
./fzf.nix
./git.nix
+95
View File
@@ -0,0 +1,95 @@
{
pkgs,
lib,
config,
...
}: {
options.easyeffects.enable = lib.mkEnableOption "Easy Effects";
config.services.easyeffects = lib.mkIf config.easyeffects.enable {
enable = true;
package = pkgs.easyeffects;
preset = "Default";
extraPresets."Default".input = {
blocklist = [];
"deepfilternet#0" = {
attenuation-limit = 100.0;
bypass = false;
input-gain = 0.0;
max-df-processing-threshol = 20.0;
max-erb-processing-threshold = 30.0;
min-processing-buffer = 0;
min-processing-threshold = -10.0;
output-gain = 0.0;
post-filter-beta = 0.019999999552965164;
};
"exciter#0" = {
amount = 0.0;
blend = 0.0;
bypass = false;
ceil = 16000.0;
ceil-active = false;
harmonics = 8.5;
input-gain = 0.0;
output-gain = 0.0;
scope = 7500.0;
};
plugins_order = [
"rnnoise#0"
"deepfilternet#0"
"speex#0"
"exciter#0"
"stereo_tools#0"
];
"rnnoise#0" = {
bypass = false;
enable-vad = true;
input-gain = 5.0;
model-name = "\"\"";
output-gain = -5.0;
release = 20.0;
use-standard-model = true;
vad-thres = 50.0;
wet = 0.0;
};
"speex#0" = {
bypass = true;
enable-agc = true;
enable-denoise = true;
enable-dereverb = true;
input-gain = 0.0;
noise-suppression = -70;
output-gain = 0.0;
vad = {
enable = true;
probability-continue = 90;
probability-start = 95;
};
};
"stereo_tools#0" = {
balance-in = 0.0;
balance-out = 0.0;
bypass = false;
delay = 0.0;
dry = -100.0;
input-gain = 0.0;
middle-level = 0.0;
middle-panorama = 0.0;
mode = "LR > L+R (Mono Sum L+R)";
mutel = false;
muter = false;
output-gain = 0.0;
phasel = false;
phaser = false;
sc-level = 1.0;
side-balance = 0.0;
side-level = 0.0;
softclip = true;
stereo-base = 0.0;
stereo-phase = 0.0;
wet = 0.0;
};
};
};
}
File diff suppressed because it is too large Load Diff
+1
View File
@@ -3,6 +3,7 @@
programs.eza = {
enable = true;
icons = "auto";
enableFishIntegration = true;
enableBashIntegration = true;
git = true;
+140
View File
@@ -0,0 +1,140 @@
{
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-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-ts = "kssh hp-t640-homeserver-tailscale";
ssh-server = "ssh hp-t640-homeserver";
ssh-server-ts = "ssh hp-t640-homeserver-tailscale";
};
}
+36
View File
@@ -0,0 +1,36 @@
{
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 = true;
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";
# };
# }
];
}
+2 -18
View File
@@ -1,24 +1,8 @@
# 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 {
_: {
programs.fzf = {
enable = true;
enableFishIntegration = true;
enableBashIntegration = true;
colors = lib.mkForce {
"fg+" = accent;
"bg+" = "-1";
"fg" = foreground;
"bg" = "-1";
"prompt" = muted;
"pointer" = accent;
};
defaultOptions = [
"--margin=1"
"--layout=reverse"
+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 = {
+6 -5
View File
@@ -4,11 +4,12 @@
name = "Papirus-Dark";
package = pkgs.papirus-icon-theme;
};
gtk3.extraConfig = {
gtk-application-prefer-dark-theme = 1;
};
gtk4.extraConfig = {
gtk-application-prefer-dark-theme = 1;
gtk3.extraConfig.gtk-application-prefer-dark-theme = 1;
gtk4 = {
theme = null;
extraConfig = {
gtk-application-prefer-dark-theme = 1;
};
};
};
}
+20 -8
View File
@@ -13,14 +13,16 @@
"SUPER, E, exec, noctalia-shell ipc call launcher emoji #\"Emoji picker\""
"SUPER, Escape, exec, noctalia-shell ipc call lockScreen lock #\"Lock the screen\""
"SUPER, G, exec, affinity-v3 #\"Graphics editor\""
"SUPER, H, exec, helium #\"Helium web browser\""
"SUPER, I, exec, iotas #\"Note-taking app\""
"SUPER, J, exec, Jan #\"Local AI chat interface\""
"SUPER, K, exec, galculator #\"Scientific calculator\""
"SUPER, K, exec, gnome-calculator #\"Scientific calculator\""
"SUPER, L, exec, logseq #\"Knowledge management tool\""
"SUPER, M, exec, plexamp #\"Music player for Plex\""
"SUPER, M, exec, dex ${desktopEntriesPath}/messenger.desktop #\"Facebook Messenger client\""
"SUPER, N, exec, dex ${desktopEntriesPath}/garandcloud.desktop #\"GarandCloud client\""
"SUPER, O, exec, onlyoffice-desktopeditors #\"Office suite\""
"SUPER, P, exec, plex-desktop #\"Plex media player\""
"SUPER, R, exec, noctalia-shell ipc call plugin:screen-recorder saveReplay #\"Save Replay\""
"SUPER, Return, exec, kitty #\"Kitty terminal\""
"SUPER, S, exec, steam #\"Steam Game launcher\""
"SUPER, T, exec, thunar #\"File manager\""
@@ -31,24 +33,31 @@
shiftBinds = [
"SUPER SHIFT, C, exec, dex ${desktopEntriesPath}/claude.desktop #\"Claude AI chat\""
"SUPER SHIFT, E, exec, evolution #\"Personal information management application\""
"SUPER SHIFT, Escape, exec, noctalia-shell ipc call sessionMenu toggle #\"Open Session Menu\""
"SUPER SHIFT, G, exec, dex ${desktopEntriesPath}/chatgpt.desktop #\"ChatGPT AI chat\""
"SUPER SHIFT, J, exec, dex ${desktopEntriesPath}/jellyfinClient.desktop #\"Jellyfin PWA\""
"SUPER SHIFT, K, exec, noctalia-shell ipc call plugin:keybind-cheatsheet toggle #\"Toggle keybind cheatsheet\""
"SUPER SHIFT, M, exec, dex ${desktopEntriesPath}/messenger.desktop #\"Facebook Messenger client\""
"SUPER SHIFT, M, exec, plexamp #\"Music player for Plex\""
"SUPER SHIFT, N, exec, nextcloud #\"Nextcloud desktop sync client\""
"SUPER SHIFT, O, exec, obs #\"Open Broadcaster Software\""
"SUPER SHIFT, P, exec, noctalia-shell ipc call volume togglePanel #\"Toggle volume control panel\""
"SUPER SHIFT, R, exec, restart.noctalia #\"Restart Noctalia shell\""
"SUPER SHIFT, R, exec, restart-noctalia #\"Restart Noctalia shell\""
"SUPER SHIFT, Return, exec, noctalia-shell ipc call launcher toggle #\"Toggle application launcher\""
"SUPER SHIFT, S, exec, screenshootin #\"Take screenshot\""
"SUPER SHIFT, S, exec, noctalia-shell ipc call plugin:screenshot takeScreenshot region #\"Take screenshot\""
"SUPER SHIFT, T, exec, tutanota-desktop #\"Tutanota encrypted email client\""
"SUPER SHIFT, V, exec, noctalia-shell ipc call launcher clipboard #\"Open clipboard manager\""
];
altBinds = [
"SUPER ALT, C, exec, noctalia-shell ipc call controlCenter toggle #\"Toggle control center\""
"SUPER ALT, F, exec, finamp #\"Jellyfin music client\""
"SUPER ALT, G, exec, dex ${desktopEntriesPath}/glance.desktop #\"Glance server panel\""
"SUPER ALT, K, exec, kdenlive #\"Video editing software\""
"SUPER ALT, M, exec, dex ${desktopEntriesPath}/mastodon.desktop #\"Mastodon social network client\""
"SUPER ALT, N, exec, noctalia-shell ipc call plugin:ntfy-notifications toggle #\"Open ntfy panel\""
"SUPER ALT, P, exec, noctalia-shell ipc call settings toggle #\"Open settings panel\""
"SUPER ALT, R, exec, noctalia-shell ipc call plugin:screen-recorder toggleReplay #\"Toggle Replay\""
"SUPER ALT, S, exec, slack #\"Slack team communication tool\""
"SUPER ALT, T, exec, gedit #\"GNOME text editor\""
"SUPER ALT, W, exec, noctalia-shell ipc call wallpaper toggle #\"Toggle wallpaper\""
@@ -58,14 +67,17 @@
"SUPER CONTROL, C, exec, noctalia-shell ipc call powerProfile cycle #\"Cycle through power profiles\""
"SUPER CONTROL, G, exec, gimp #\"GNU Image Manipulation Program\""
"SUPER CONTROL, M, exec, mattermost-desktop #\"Mattermost team chat client\""
"SUPER CONTROL, N, exec, noctalia-shell ipc call plugin:ntfy-notifications refresh #\"Refresh ntfy\""
"SUPER CONTROL, R, exec, noctalia-shell ipc call plugin:screen-recorder toggle #\"Toogle screen recording\""
"SUPER CONTROL, S, exec, signal-desktop #\"Signal encrypted messaging\""
"SUPER CONTROL, T, exec, tsukimi #\"A simple Emby/Jellyfin Client\""
"SUPER CONTROL, P, exec, hyprpicker -a #\"Pick color from screen\""
];
windowManagementBinds = [
"SUPER, F, fullscreen, #\"Toggle fullscreen mode\""
"SUPER, Q, killactive, #\"Close active window\""
"SUPER SHIFT, I, togglesplit, #\"Toggle split layout\""
# "SUPER SHIFT, I, togglesplit, #\"Toggle split layout\""
"SUPER SHIFT, F, togglefloating, #\"Toggle floating mode\""
];
@@ -123,9 +135,9 @@
systemMediaAndControllsBinds = [
",XF86AudioLowerVolume, exec, noctalia-shell ipc call volume decrease #\"Lower system volume\""
",XF86AudioMute, exec, noctalia-shell ipc call volume muteOutput #\"Mute audio output\""
",XF86AudioMicMute, exec, noctalia-shell ipc call volume muteInput #\"Mute audio input\""
",XF86AudioNext, exec, noctalia-shell ipc call media next #\"Next media track\""
",XF86AudioPause, exec, noctalia-shell ipc call media pause #\"Pause media playback\""
",XF86AudioPlay, exec, noctalia-shell ipc call media play #\"Play media\""
",XF86AudioPlay, exec, noctalia-shell ipc call media playPause #\"Play/Pause media\""
",XF86AudioPrev, exec, noctalia-shell ipc call media previous #\"Previous media track\""
",XF86AudioRaiseVolume, exec, noctalia-shell ipc call volume increase #\"Raise system volume\""
",XF86MonBrightnessDown, exec, noctalia-shell ipc call brightness decrease #\"Decrease screen brightness\""
+3 -8
View File
@@ -1,15 +1,10 @@
_: {
wayland.windowManager.hyprland.settings.exec-once = [
"wl-paste --type text --watch cliphist store" # Saves text
"wl-paste --type image --watch cliphist store" # Saves images
"dbus-update-activation-environment --all --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
"systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
"systemctl --user start hyprpolkitagent"
# "killall -q waybar"
# "pkill waybar"
# "killall -q swaync"
# "pkill swaync"
"noctalia-shell &"
"noctalia-shell"
"wl-paste --type text --watch cliphist store" # Saves text
"wl-paste --type image --watch cliphist store" # Saves images
];
}
+13 -12
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"
];
@@ -21,12 +19,13 @@ in {
wayland.windowManager.hyprland = {
enable = true;
package = pkgs.hyprland;
configType = "hyprlang"; # TODO: hyprlang => lua migration.
xwayland.enable = true;
systemd = {
enable = true;
enableXdgAutostart = true;
variables = ["--all"];
};
xwayland.enable = true;
settings = {
input = {
kb_layout = "${keyboardLayout}";
@@ -63,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 = {
@@ -76,7 +75,6 @@ in {
disable_splash_rendering = true;
enable_swallow = true;
swallow_regex = "^(kitty)$";
vfr = true; # Variable Frame Rate
vrr = 2; # Variable Refresh Rate Might need to set to 0 for NVIDIA/AQ_DRM_DEVICES
# Screen flashing to black momentarily or going black when app is fullscreen
# Try setting vrr to 0
@@ -87,7 +85,7 @@ in {
};
dwindle = {
pseudotile = true;
# pseudotile = true;
preserve_split = true;
force_split = 2;
};
@@ -107,7 +105,7 @@ in {
enabled = true;
range = 4;
render_power = 3;
color = "rgba(1a1a1aee)";
# color = "rgba(1a1a1aee)";
};
};
@@ -131,7 +129,10 @@ in {
direct_scanout = 0;
};
debug.full_cm_proto = true;
debug = {
vfr = true; # Variable Frame Rate
full_cm_proto = true;
};
master = {
new_status = "master";
+4
View File
@@ -41,6 +41,7 @@ _: {
"center on, match:class pavucontrol|org\.pulseaudio\.pavucontrol|com\.saivert\.pwvucontrol"
"center on, match:class [Tt]hunar, match:title negative:.*[Tt]hunar.*"
"center on, match:title Authentication Required"
"center on, match:class org\.gnome\.Calculator"
# Idle inhibit rules
"idle_inhibit fullscreen, match:class .*"
@@ -61,11 +62,13 @@ _: {
"float on, match:initial_title Add Folder to Workspace"
"float on, match:initial_title Open Files"
"float on, match:initial_title wants to save"
"float on, match:class org\.gnome\.Calculator"
# Size rules
"size 70% 60%, match:initial_title Open Files"
"size 70% 60%, match:initial_title Add Folder to Workspace"
"size 70% 70%, match:tag settings*"
"size 360 616, match:class org\.gnome\.Calculator"
# Tile rules
"tile on, match:class affinity\.exe"
@@ -84,6 +87,7 @@ _: {
"opacity 0.8 0.7, match:class gedit|org\.gnome\.TextEditor|mousepad"
"opacity 0.9 0.8, match:class seahorse # gnome-keyring gui"
"opacity 0.95 0.75, match:title Picture-in-Picture"
"opacity 0.9 0.8, match:class org\.gnome\.Calculator"
# Picture-in-Picture specific rules
"pin on, match:title Picture-in-Picture"
+6 -4
View File
@@ -6,9 +6,11 @@
}: {
options.kdeconnect.enable = lib.mkEnableOption "KDE Connect";
config.services.kdeconnect = lib.mkIf config.kdeconnect.enable {
enable = true;
indicator = true;
package = pkgs.kdePackages.kdeconnect-kde;
config = {
services.kdeconnect = lib.mkIf config.kdeconnect.enable {
enable = true;
indicator = false;
package = pkgs.kdePackages.kdeconnect-kde;
};
};
}
+1
View File
@@ -2,6 +2,7 @@
programs.kitty = {
enable = true;
package = pkgs.kitty;
shellIntegration.enableFishIntegration = true;
};
imports = [
+1 -1
View File
@@ -37,6 +37,6 @@
"privacy.clearOnShutdown.history" = true;
"network.trr.mode" = 3;
"network.trr.uri" = "https://dns.mullvad.net/dns-query";
"network.trr.uri" = "https://dns.quad9.net/dns-query";
};
}
-33
View File
@@ -1,33 +0,0 @@
{
config,
lib,
...
}: let
stylix = config.stylix.base16Scheme;
in {
programs.noctalia-shell.colors = lib.mkForce {
mPrimary = "#${stylix.base04}";
mOnPrimary = "#${stylix.base00}";
mSecondary = "#${stylix.base05}";
mOnSecondary = "#${stylix.base00}";
mTertiary = "#${stylix.base03}";
mOnTertiary = "#${stylix.base00}";
mError = "#${stylix.base02}";
mOnError = "#${stylix.base00}";
mSurface = "#${stylix.base01}";
mOnSurface = "#${stylix.base0E}";
mSurfaceVariant = "#${stylix.base00}";
mOnSurfaceVariant = "#${stylix.base0A}";
mOutline = "#${stylix.base08}";
mShadow = "#${stylix.base00}";
mOnHover = "#${stylix.base0B}";
mHover = "#${stylix.base00}";
};
}
+2 -4
View File
@@ -1,5 +1,5 @@
{
lib,
# lib,
inputs,
system,
...
@@ -9,13 +9,11 @@
package = inputs.noctalia.packages.${system}.default.override {
calendarSupport = true;
};
systemd.enable = true;
settings.settingsVersion = lib.mkForce 46;
# settings.settingsVersion = lib.mkForce 46;
};
imports = [
./settings
./colors.nix
./plugins.nix
];
}
+64 -7
View File
@@ -1,28 +1,46 @@
{lib, ...}: {
{lib, ...}: let
sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
in {
programs.noctalia-shell = lib.mkForce {
plugins = {
sources = [
{
enabled = true;
name = "Noctalia Plugins";
url = "https://github.com/noctalia-dev/noctalia-plugins";
url = sourceUrl;
}
];
states = {
mini-docker = {
enabled = true;
sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
sourceUrl = sourceUrl;
};
timer = {
enabled = true;
sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
sourceUrl = sourceUrl;
};
keybind-cheatsheet = {
enabled = true;
sourceUrl = "https://github.com/noctalia-dev/noctalia-plugins";
sourceUrl = sourceUrl;
};
kde-connect = {
enabled = true;
sourceUrl = sourceUrl;
};
screen-recorder = {
enabled = true;
sourceUrl = sourceUrl;
};
screenshot = {
enabled = true;
sourceUrl = sourceUrl;
};
ntfy-notifications = {
enabled = true;
sourceUrl = sourceUrl;
};
};
version = 1;
version = 2;
};
pluginSettings = {
mini-docker.refreshInterval = 5000;
@@ -32,9 +50,48 @@
hyprlandConfigPath = "~/.config/hypr/hyprland.conf";
modKeyVariable = "SUPER";
windowHeight = 850;
windowWidth = 700;
windowWidth = 1100;
columnCount = 2;
autoHeight = true;
};
kde-connect = {
hideIfNoDeviceConnected = true;
};
screen-recorder = {
hideInactive = true;
iconColor = "none";
directory = "";
filenamePattern = "recording_yyyyMMdd_HHmmss";
frameRate = 60;
audioCodec = "aac";
videoCodec = "hevc";
quality = "ultra";
colorRange = "full";
showCursor = true;
copyToClipboard = false;
audioSource = "both";
videoSource = "portal";
resolution = "1920x1080";
replayEnabled = true;
replayDuration = 60;
customReplayDuration = 30;
replayStorage = "disk";
restorePortalSession = true;
customFrameRate = 6;
};
screenshot.mode = "region";
# ntfy-notifications = {
# serverUrl = "https://ntfy.garandplg.com";
# topics = "beszel,dockhand,jellyfin,nixos-unstable,radarr,rss-feeds,seerr,sonarr";
# authMethod = "basic";
# authToken = "";
# authUsername = ''$(cat ${config.sops.secrets."credentials/ntfy/username".path})'';
# authPassword = ''$(cat ${config.sops.secrets."credentials/ntfy/password".path})'';
# pollInterval = 30;
# enableToasts = true;
# maxMessages = 100;
# readMessageIds = [];
# };
};
};
}
@@ -16,7 +16,7 @@ _: {
}
{
id = "SystemMonitor";
compactMode = true;
compactMode = false;
diskPath = "/home";
showCpuFreq = false;
showCpuTemp = false;
@@ -25,7 +25,7 @@ _: {
showDiskUsage = true;
showGpuTemp = false;
showLoadAverage = false;
showMemoryAsPercent = false;
showMemoryAsPercent = true;
showMemoryUsage = true;
showNetworkStats = true;
showSwapUsage = false;
@@ -2,7 +2,10 @@
right = [
{
id = "Tray";
blacklist = [];
blacklist = [
"nm-applet"
"Easy Effects"
];
colorizeIcons = false;
drawerEnabled = false;
hidePassive = false;
@@ -25,6 +28,9 @@
showUnreadBadge = true;
unreadBadgeColor = "primary";
}
{
id = "plugin:kde-connect";
}
{
id = "Bluetooth";
displayMode = "onhover";
@@ -32,22 +38,47 @@
{
id = "Battery";
deviceNativePath = "__default__";
displayMode = "onhover";
displayMode = "graphic";
hideIfIdle = false;
hideIfNotDetected = true;
showNoctaliaPerformance = false;
showPowerProfiles = false;
showNoctaliaPerformance = true;
showPowerProfiles = true;
warningThreshold = 30;
}
{
id = "plugin:screen-recorder";
defaultSettings = {
hideInactive = true;
iconColor = "none";
directory = "";
filenamePattern = "recording_yyyyMMdd_HHmmss";
frameRate = 60;
audioCodec = "aac";
videoCodec = "hevc";
quality = "ultra";
colorRange = "full";
showCursor = true;
copyToClipboard = false;
audioSource = "both";
videoSource = "portal";
resolution = "1920x1080";
replayEnabled = true;
replayDuration = 60;
customReplayDuration = 30;
replayStorage = "disk";
restorePortalSession = true;
customFrameRate = 6;
};
}
{
id = "Volume";
displayMode = "alwaysShow";
middleClickCommand = "pwvucontrol || pavucontrol";
}
# {
# "id" = "Brightness";
# "displayMode" = "onhover";
# }
{
id = "Network";
displayMode = "onhover";
}
{
id = "ControlCenter";
colorizeDistroLogo = false;
+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;
@@ -16,8 +16,8 @@ in {
memCriticalThreshold = 90;
swapWarningThreshold = 80;
swapCriticalThreshold = 90;
diskWarningThreshold = 80;
diskCriticalThreshold = 90;
diskWarningThreshold = 90;
diskCriticalThreshold = 95;
cpuPollingInterval = 3000;
tempPollingInterval = 3000;
gpuPollingInterval = 3000;
@@ -1,11 +1,9 @@
{
lib,
host,
config,
username,
...
}: let
inherit (import ../../../../hosts/${host}/variables.nix) stylixImage;
in {
}: {
programs.noctalia-shell.settings.wallpaper = lib.mkForce {
enabled = true;
overviewEnabled = false;
@@ -42,6 +40,6 @@ in {
};
home.file.".cache/noctalia/wallpapers.json".text = lib.mkForce (builtins.toJSON {
defaultWallpaper = ../../../../wallpapers/${stylixImage};
defaultWallpaper = config.stylix.image;
});
}
+1 -2
View File
@@ -1,7 +1,6 @@
{pkgs, ...}: {
home.packages = [
(import ./nvidia-offload.nix {inherit pkgs;})
(import ./restart.noctalia.nix {inherit pkgs;})
(import ./screenshootin.nix {inherit pkgs;})
(import ./restart-noctalia.nix {inherit pkgs;})
];
}
@@ -0,0 +1,6 @@
{pkgs}:
pkgs.writeShellScriptBin "restart-noctalia" ''
noctalia-shell kill
sleep 1.5
noctalia-shell -d
''
-54
View File
@@ -1,54 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
# Restart the Noctalia QuickShell session by terminating only the noctalia-shell
# processes, avoiding any signals to unrelated process groups (e.g. Hyprland).
log() { printf "[restart.noctalia] %s\n" "$*"; }
list_target_pids() {
# Collect only PIDs whose command explicitly runs noctalia-shell
# - direct wrapper: ".../noctalia-shell"
# - quickshell/qs with "-c noctalia-shell"
ps -eo pid=,cmd= \
| ${GREP:-grep} -E "(^|/)(noctalia-shell)( |$)|(^| )((qs|quickshell))( | ).*-c( |=)?noctalia-shell( |$)" \
| awk '{print $1}'
}
terminate_targets() {
local pids left tries
mapfile -t pids < <(list_target_pids || true)
if ((${#pids[@]} > 0)); then
kill -TERM "${pids[@]}" 2>/dev/null || true
fi
# Wait up to ~3s for clean exit
for tries in {1..15}; do
mapfile -t left < <(list_target_pids || true)
((${#left[@]} == 0)) && break
sleep 0.2
done
# Force kill leftovers only (do not touch anything else)
if ((${#left[@]} > 0)); then
kill -KILL "${left[@]}" 2>/dev/null || true
fi
}
start_noctalia() {
# Prefer the noctalia-shell wrapper to ensure proper env and runtime flags
if command -v noctalia-shell >/dev/null 2>&1; then
nohup setsid noctalia-shell >/dev/null 2>&1 &
elif command -v quickshell >/dev/null 2>&1; then
nohup setsid quickshell -c noctalia-shell >/dev/null 2>&1 &
elif command -v qs >/dev/null 2>&1; then
nohup setsid qs -c noctalia-shell >/dev/null 2>&1 &
else
echo "Error: noctalia-shell/quickshell/qs not found in PATH" >&2
exit 1
fi
}
terminate_targets
start_noctalia
-24
View File
@@ -1,24 +0,0 @@
{pkgs, ...}: let
binPath = pkgs.lib.makeBinPath [
pkgs.coreutils
pkgs.procps
pkgs.psmisc
pkgs.gnugrep
pkgs.findutils
pkgs.util-linux
pkgs.bash
];
script = builtins.readFile ./restart.noctalia;
in
pkgs.writeShellScriptBin "restart.noctalia" ''
set -euo pipefail
export PATH=${binPath}:$PATH
tmp_script=$(mktemp)
trap 'rm -f "$tmp_script"' EXIT
cat > "$tmp_script" <<'BASH_EOF'
${script}
BASH_EOF
chmod +x "$tmp_script"
exec ${pkgs.bash}/bin/bash "$tmp_script" "$@"
''
-4
View File
@@ -1,4 +0,0 @@
{pkgs}:
pkgs.writeShellScriptBin "screenshootin" ''
grim -g "$(slurp)" - | swappy -f -
''
+8 -1
View File
@@ -2,7 +2,7 @@
programs.ssh = {
enable = true;
enableDefaultConfig = false;
matchBlocks = {
settings = {
"hp-t640-homeserver" = {
hostname = "192.168.1.156";
user = "${username}";
@@ -15,6 +15,13 @@
port = 22;
identityFile = "~/.ssh/hp-t640-homeserver";
};
"gitssh.garandplg.com" = {
hostname = "gitssh.garandplg.com";
user = "git";
port = 222;
identityFile = "~/.ssh/id_ed25519_gitea";
identitiesOnly = true;
};
};
};
}
+12 -17
View File
@@ -1,12 +1,7 @@
{
config,
lib,
...
}: let
accent = "#${config.lib.stylix.colors.base0D}";
in {
{lib, ...}: {
programs.starship = {
enable = true;
enableFishIntegration = true;
settings = {
add_newline = true;
format = lib.concatStrings [
@@ -33,24 +28,24 @@ in {
truncation_symbol = "/";
truncate_to_repo = false;
substitutions = {
"Documents" = "󰈙 ";
"Downloads" = " ";
"Music" = " ";
"Pictures" = " ";
"Projects" = " ";
"nix" = " ";
"nixos" = " ";
"Documents" = "󰈙";
"Downloads" = "";
"Music" = "";
"Pictures" = "";
"Projects" = "";
"nix" = "";
"nixos" = "";
};
};
character = {
success_symbol = "[ ](${accent})";
error_symbol = "[ ](red)";
success_symbol = "";
error_symbol = "";
};
nix_shell = {
format = "[$symbol]($style) ";
symbol = " ";
symbol = "";
style = "";
};
+59 -3
View File
@@ -1,14 +1,70 @@
{host, ...}: {
stylix.targets = {
librewolf.profileNames = ["${host}"];
hyprland.enable = false;
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;
qt = {
enable = true;
platform = "qtct";
};
noctalia-shell.enable = true;
fish = {
enable = true;
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;
};
};
}
+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"];
};
}
+9 -2
View File
@@ -12,7 +12,7 @@
makeEntry = app: {
name = app.displayName;
genericName = app.genericName or app.displayName;
exec = "chromium --profile-directory=Default --app=${app.url}";
exec = "helium --profile-directory=Default --app=${app.url}";
icon = "${fetchIcon app.iconUrl app.iconSha}";
terminal = false;
type = "Application";
@@ -22,7 +22,7 @@
{
name = "messenger";
displayName = "Messenger";
url = "https://www.messenger.com/";
url = "https://www.facebook.com/messages/";
iconUrl = "https://assets.stickpng.com/images/580b57fcd9996e24bc43c526.png";
iconSha = "sha256-mQ7TAsLIWLZhun1DrJFgLkkwpqvWujhGT6Ig8Rf6vbc=";
}
@@ -62,6 +62,13 @@
iconUrl = "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/glance.png";
iconSha = "sha256-xyFlmPpt+DABoGX5oBqj/aQVdxtmNflat9Jb2BE7SOY=";
}
{
name = "jellyfinClient";
displayName = "Jellyfin Client";
url = "https://jellyfin.garandplg.com";
iconUrl = "https://jellyfin.org/images/logo.svg";
iconSha = "sha256-sRSB2rxThd4+vMmdpRTz+bEKgdrmF5NG4I74I6kfCyY=";
}
];
in {
options.xdgDesktopEntries = {
+1
View File
@@ -19,5 +19,6 @@ _: {
"deputy"
"biome"
"opencode"
"fish"
];
}
+3
View File
@@ -5,5 +5,8 @@
nixd
alejandra
opencode
uv
python314
ruff
];
}
+1 -2
View File
@@ -1,9 +1,8 @@
_: {
programs.zed-editor.userSettings.agent = {
always_allow_tool_actions = true;
default_profile = "ask";
default_model = {
provider = "Cerebras";
provider = "Cerebras PAUG";
model = "gpt-oss-120b";
};
};
@@ -5,8 +5,14 @@ _: {
metrics = false;
};
icon_theme = "VSCode Icons for Zed (Dark)";
ui_font_family = "FiraCode Nerd Font Mono";
ui_font_size = 16;
buffer_font_family = "FiraCode Nerd Font Mono";
buffer_font_size = 15;
terminal = {
font_family = "FiraCode Nerd Font Mono";
font_size = 14;
};
theme = {
mode = "dark";
light = "One Light";
@@ -1,43 +1,158 @@
_: {
programs.zed-editor.userSettings.language_models.openai_compatible."Cerebras" = {
api_url = "https://api.cerebras.ai/v1";
available_models = [
{
name = "qwen-3-235b-a22b-instruct-2507";
display_name = "Qwen 3 235B Instruct";
max_tokens = 65000;
max_output_tokens = 32000;
capabilities = {
tools = true;
images = true;
parallel_tool_calls = true;
prompt_cache_key = false;
};
}
{
name = "llama-3.3-70b";
display_name = "Llama 3.3 70B";
max_tokens = 65000;
max_output_tokens = 8000;
capabilities = {
tools = true;
images = true;
parallel_tool_calls = true;
prompt_cache_key = true;
};
}
{
name = "gpt-oss-120b";
display_name = "OpenAI GPT OSS";
max_tokens = 65000;
max_output_tokens = 32000;
capabilities = {
tools = true;
images = true;
parallel_tool_calls = true;
prompt_cache_key = false;
};
}
];
programs.zed-editor.userSettings.language_models.openai_compatible = {
"Cerebras FREE" = {
api_url = "https://api.cerebras.ai/v1";
available_models = [
{
name = "gpt-oss-120b";
display_name = "OpenAI GPT OSS";
max_tokens = 65000;
max_output_tokens = 32000;
capabilities = {
tools = true;
images = true;
parallel_tool_calls = true;
prompt_cache_key = false;
};
}
{
name = "zai-glm-4.7";
display_name = "Z.ai GLM 4.7";
max_tokens = 64000;
max_output_tokens = 40000;
capabilities = {
tools = true;
images = true;
parallel_tool_calls = true;
prompt_cache_key = true;
};
}
{
name = "llama3.1-8b";
display_name = "Llama 3.1 8B";
max_tokens = 8000;
max_output_tokens = 8000;
capabilities = {
tools = true;
images = true;
parallel_tool_calls = true;
prompt_cache_key = true;
};
}
{
name = "llama-3.3-70b";
display_name = "Llama 3.3 70B";
max_tokens = 65000;
max_output_tokens = 8000;
capabilities = {
tools = true;
images = true;
parallel_tool_calls = true;
prompt_cache_key = true;
};
}
{
name = "qwen-3-32b";
display_name = "Qwen 3 32B";
max_tokens = 65000;
max_output_tokens = 8000;
capabilities = {
tools = true;
images = true;
parallel_tool_calls = false;
prompt_cache_key = true;
};
}
{
name = "qwen-3-235b-a22b-instruct-2507";
display_name = "Qwen 3 235B Instruct";
max_tokens = 65000;
max_output_tokens = 32000;
capabilities = {
tools = true;
images = true;
parallel_tool_calls = false;
prompt_cache_key = true;
};
}
];
};
"Cerebras PAUG" = {
api_url = "https://api.cerebras.ai/v1";
available_models = [
{
name = "gpt-oss-120b";
display_name = "OpenAI GPT OSS";
max_tokens = 131000;
max_output_tokens = 40000;
capabilities = {
tools = true;
images = true;
parallel_tool_calls = true;
prompt_cache_key = false;
};
}
{
name = "zai-glm-4.7";
display_name = "Z.ai GLM 4.7";
max_tokens = 131000;
max_output_tokens = 40000;
capabilities = {
tools = true;
images = true;
parallel_tool_calls = true;
prompt_cache_key = true;
};
}
{
name = "llama3.1-8b";
display_name = "Llama 3.1 8B";
max_tokens = 32000;
max_output_tokens = 8000;
capabilities = {
tools = true;
images = true;
parallel_tool_calls = true;
prompt_cache_key = true;
};
}
{
name = "llama-3.3-70b";
display_name = "Llama 3.3 70B";
max_tokens = 128000;
max_output_tokens = 65000;
capabilities = {
tools = true;
images = true;
parallel_tool_calls = true;
prompt_cache_key = true;
};
}
{
name = "qwen-3-32b";
display_name = "Qwen 3 32B";
max_tokens = 131000;
max_output_tokens = 8000;
capabilities = {
tools = true;
images = true;
parallel_tool_calls = false;
prompt_cache_key = true;
};
}
{
name = "qwen-3-235b-a22b-instruct-2507";
display_name = "Qwen 3 235B Instruct";
max_tokens = 131000;
max_output_tokens = 40000;
capabilities = {
tools = true;
images = true;
parallel_tool_calls = false;
prompt_cache_key = true;
};
}
];
};
};
}
+11 -1
View File
@@ -4,7 +4,17 @@ _: {
"nixd"
"!nil"
];
Python.language_servers = ["!basedpyright"];
Python = {
format_on_save = "off";
formatter.language_server.name = "ruff";
code_actions_on_format."source.organizeImports.ruff" = true;
language_servers = [
"ruff"
"!ty"
"!basedpyright"
];
tab_size = 4;
};
YAML.tab_size = 2;
JavaScript = {
formatter.language_server.name = "biome";
+22
View File
@@ -72,5 +72,27 @@
};
};
};
ruff = {
binary = {
path = lib.getExe pkgs.bash;
arguments = [
"-c"
"if [ -e flake.nix ]; then nix develop --command ruff server; else ruff server; fi"
];
};
initialization_options = {
check.command = "ruff check .";
inlayHints = {
maxLength = null;
lifetimeElisionHints = {
enable = "skip_trivial";
useParameterNames = true;
};
closureReturnTypeHints = {
enable = "always";
};
};
};
};
};
}
+7 -8
View File
@@ -1,11 +1,10 @@
_: {
programs = {
zoxide = {
enable = true;
enableBashIntegration = true;
options = [
"--cmd cd"
];
};
programs.zoxide = {
enable = true;
enableFishIntegration = true;
enableBashIntegration = true;
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
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 644 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 514 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Some files were not shown because too many files have changed in this diff Show More