17 Commits

Author SHA1 Message Date
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
191 changed files with 8984 additions and 365 deletions
Generated
+865
View File
@@ -0,0 +1,865 @@
{
"nodes": {
"affinity-nix": {
"inputs": {
"corefonts": "corefonts",
"crane": "crane",
"elemental-wine-source": "elemental-wine-source",
"fenix": "fenix",
"flake-compat": "flake-compat",
"flake-parts": "flake-parts",
"git-hooks": "git-hooks",
"nixpkgs": [
"nixpkgs"
],
"nixpkgs-wine": "nixpkgs-wine",
"on-linux": "on-linux",
"plugin-loader-src": "plugin-loader-src",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1777107568,
"narHash": "sha256-x+BBoim5p3dnPCeOrWp5V5IR09YzG3bPD0g60jsyvy4=",
"owner": "mrshmllow",
"repo": "affinity-nix",
"rev": "63978027513e2bafbf8c3acd7b05cb9b0ed24a03",
"type": "github"
},
"original": {
"owner": "mrshmllow",
"repo": "affinity-nix",
"type": "github"
}
},
"base16": {
"inputs": {
"fromYaml": "fromYaml"
},
"locked": {
"lastModified": 1755819240,
"narHash": "sha256-qcMhnL7aGAuFuutH4rq9fvAhCpJWVHLcHVZLtPctPlo=",
"owner": "SenchoPens",
"repo": "base16.nix",
"rev": "75ed5e5e3fce37df22e49125181fa37899c3ccd6",
"type": "github"
},
"original": {
"owner": "SenchoPens",
"repo": "base16.nix",
"type": "github"
}
},
"base16-fish": {
"flake": false,
"locked": {
"lastModified": 1765809053,
"narHash": "sha256-XCUQLoLfBJ8saWms2HCIj4NEN+xNsWBlU1NrEPcQG4s=",
"owner": "tomyun",
"repo": "base16-fish",
"rev": "86cbea4dca62e08fb7fd83a70e96472f92574782",
"type": "github"
},
"original": {
"owner": "tomyun",
"repo": "base16-fish",
"rev": "86cbea4dca62e08fb7fd83a70e96472f92574782",
"type": "github"
}
},
"base16-helix": {
"flake": false,
"locked": {
"lastModified": 1760703920,
"narHash": "sha256-m82fGUYns4uHd+ZTdoLX2vlHikzwzdu2s2rYM2bNwzw=",
"owner": "tinted-theming",
"repo": "base16-helix",
"rev": "d646af9b7d14bff08824538164af99d0c521b185",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "base16-helix",
"type": "github"
}
},
"base16-vim": {
"flake": false,
"locked": {
"lastModified": 1732806396,
"narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=",
"owner": "tinted-theming",
"repo": "base16-vim",
"rev": "577fe8125d74ff456cf942c733a85d769afe58b7",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "base16-vim",
"rev": "577fe8125d74ff456cf942c733a85d769afe58b7",
"type": "github"
}
},
"corefonts": {
"flake": false,
"locked": {
"lastModified": 1431183738,
"narHash": "sha256-610Km9GCtYWxi2SH5jH/XYPXc5f58q5lB05/5XxO/qM=",
"owner": "pushcx",
"repo": "corefonts",
"rev": "8f8627b0004b5f1b952c09cf6390e4ae46475e59",
"type": "github"
},
"original": {
"owner": "pushcx",
"repo": "corefonts",
"type": "github"
}
},
"crane": {
"locked": {
"lastModified": 1776635034,
"narHash": "sha256-OEOJrT3ZfwbChzODfIH4GzlNTtOFuZFWPtW7jIeR8xU=",
"owner": "ipetkov",
"repo": "crane",
"rev": "dc7496d8ea6e526b1254b55d09b966e94673750f",
"type": "github"
},
"original": {
"owner": "ipetkov",
"repo": "crane",
"type": "github"
}
},
"elemental-wine-source": {
"flake": false,
"locked": {
"host": "gitlab.winehq.org",
"lastModified": 1722747031,
"narHash": "sha256-XVhz9p2kgFBoJ376vg8OaFXxcMEjAe9AK1hk0I1rb1Q=",
"owner": "ElementalWarrior",
"repo": "wine",
"rev": "a7c9b19e1a26cf49c63a7c19189a3e2bbe2c6ac2",
"type": "gitlab"
},
"original": {
"host": "gitlab.winehq.org",
"owner": "ElementalWarrior",
"ref": "affinity-photo3-wine9.13-part3",
"repo": "wine",
"type": "gitlab"
}
},
"fenix": {
"inputs": {
"nixpkgs": [
"affinity-nix",
"nixpkgs"
],
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
"lastModified": 1776845169,
"narHash": "sha256-Ya6Ba5oC0+PK1TSU4Rkjpoca73mUp6FoHQV5QGnqbx0=",
"owner": "nix-community",
"repo": "fenix",
"rev": "f0b5be1fa2891221ba8b48784f8fded5ef15301f",
"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=",
"owner": "nix-community",
"repo": "fenix",
"rev": "6998514dce2c365142a0a119a95ef95d89b84086",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "fenix",
"type": "github"
}
},
"firefox-addons": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"dir": "pkgs/firefox-addons",
"lastModified": 1777435375,
"narHash": "sha256-2WRfJbipnTz+EY3rHRnCoG4kWkzPczb/cLcWwhy/0QA=",
"owner": "rycee",
"repo": "nur-expressions",
"rev": "4d89e8e2c50711ee3fea3a25e662cfa5c6628e07",
"type": "gitlab"
},
"original": {
"dir": "pkgs/firefox-addons",
"owner": "rycee",
"repo": "nur-expressions",
"type": "gitlab"
}
},
"firefox-gnome-theme": {
"flake": false,
"locked": {
"lastModified": 1775176642,
"narHash": "sha256-2veEED0Fg7Fsh81tvVDNYR6SzjqQxa7hbi18Jv4LWpM=",
"owner": "rafaelmardojai",
"repo": "firefox-gnome-theme",
"rev": "179704030c5286c729b5b0522037d1d51341022c",
"type": "github"
},
"original": {
"owner": "rafaelmardojai",
"repo": "firefox-gnome-theme",
"type": "github"
}
},
"flake-compat": {
"locked": {
"lastModified": 1751685974,
"narHash": "sha256-NKw96t+BgHIYzHUjkTK95FqYRVKB8DHpVhefWSz/kTw=",
"rev": "549f2762aebeff29a2e5ece7a7dc0f955281a1d1",
"type": "tarball",
"url": "https://git.lix.systems/api/v1/repos/lix-project/flake-compat/archive/549f2762aebeff29a2e5ece7a7dc0f955281a1d1.tar.gz?rev=549f2762aebeff29a2e5ece7a7dc0f955281a1d1"
},
"original": {
"type": "tarball",
"url": "https://git.lix.systems/lix-project/flake-compat/archive/main.tar.gz"
}
},
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1767039857,
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
"owner": "NixOS",
"repo": "flake-compat",
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1775087534,
"narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1775087534,
"narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"fromYaml": {
"flake": false,
"locked": {
"lastModified": 1731966426,
"narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=",
"owner": "SenchoPens",
"repo": "fromYaml",
"rev": "106af9e2f715e2d828df706c386a685698f3223b",
"type": "github"
},
"original": {
"owner": "SenchoPens",
"repo": "fromYaml",
"type": "github"
}
},
"garandos-tui": {
"inputs": {
"fenix": "fenix_2",
"naersk": "naersk",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1765060905,
"narHash": "sha256-YLU5g2aSs1Sh+6j301BtQYUdQ8IqLvoeR4Eivr4eVYc=",
"ref": "main",
"rev": "028b50c9e4d7160cfa8fac8150a54a52680f4ff5",
"revCount": 13,
"type": "git",
"url": "https://gitea.garandplg.com/GarandPLG/garandos-tui"
},
"original": {
"ref": "main",
"type": "git",
"url": "https://gitea.garandplg.com/GarandPLG/garandos-tui"
}
},
"git-hooks": {
"inputs": {
"flake-compat": "flake-compat_2",
"gitignore": "gitignore",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1776796298,
"narHash": "sha256-PcRvlWayisPSjd0UcRQbhG8Oqw78AcPE6x872cPRHN8=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "3cfd774b0a530725a077e17354fbdb87ea1c4aad",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"gnome-shell": {
"flake": false,
"locked": {
"lastModified": 1767737596,
"narHash": "sha256-eFujfIUQDgWnSJBablOuG+32hCai192yRdrNHTv0a+s=",
"owner": "GNOME",
"repo": "gnome-shell",
"rev": "ef02db02bf0ff342734d525b5767814770d85b49",
"type": "github"
},
"original": {
"owner": "GNOME",
"repo": "gnome-shell",
"rev": "ef02db02bf0ff342734d525b5767814770d85b49",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1777476904,
"narHash": "sha256-EeLoE8n4+QCbteyAsYXxhfr97RFfWL1ga0xwfL6lpKw=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "8c8e5389e75a36bee53920de8ee24f017b3ae03e",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "master",
"repo": "home-manager",
"type": "github"
}
},
"libnbtplusplus": {
"flake": false,
"locked": {
"lastModified": 1772016279,
"narHash": "sha256-7itkptyjoRcXfGLwg1/jxajetZ3a4mDc66+w4X6yW8s=",
"owner": "PrismLauncher",
"repo": "libnbtplusplus",
"rev": "687e43031df0dc641984b4256bcca50d5b3f7de3",
"type": "github"
},
"original": {
"owner": "PrismLauncher",
"repo": "libnbtplusplus",
"type": "github"
}
},
"naersk": {
"inputs": {
"fenix": [
"garandos-tui",
"fenix"
],
"nixpkgs": [
"garandos-tui",
"nixpkgs"
]
},
"locked": {
"lastModified": 1752689277,
"narHash": "sha256-uldUBFkZe/E7qbvxa3mH1ItrWZyT6w1dBKJQF/3ZSsc=",
"owner": "nix-community",
"repo": "naersk",
"rev": "0e72363d0938b0208d6c646d10649164c43f4d64",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "naersk",
"type": "github"
}
},
"nix-flatpak": {
"locked": {
"lastModified": 1767983141,
"narHash": "sha256-7ZCulYUD9RmJIDULTRkGLSW1faMpDlPKcbWJLYHoXcs=",
"owner": "gmodena",
"repo": "nix-flatpak",
"rev": "440818969ac2cbd77bfe025e884d0aa528991374",
"type": "github"
},
"original": {
"owner": "gmodena",
"ref": "latest",
"repo": "nix-flatpak",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1777268161,
"narHash": "sha256-bxrdOn8SCOv8tN4JbTF/TXq7kjo9ag4M+C8yzzIRYbE=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "1c3fe55ad329cbcb28471bb30f05c9827f724c76",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1774748309,
"narHash": "sha256-+U7gF3qxzwD5TZuANzZPeJTZRHS29OFQgkQ2kiTJBIQ=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "333c4e0545a6da976206c74db8773a1645b5870a",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs-wine": {
"locked": {
"lastModified": 1735834308,
"narHash": "sha256-dklw3AXr3OGO4/XT1Tu3Xz9n/we8GctZZ75ZWVqAVhk=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "6df24922a1400241dae323af55f30e4318a6ca65",
"type": "github"
},
"original": {
"owner": "nixos",
"repo": "nixpkgs",
"rev": "6df24922a1400241dae323af55f30e4318a6ca65",
"type": "github"
}
},
"noctalia": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"noctalia-qs": "noctalia-qs"
},
"locked": {
"lastModified": 1777427472,
"narHash": "sha256-kqcfLdxb+CqTroMErCScvx6YQcZYJcf6X+z5I8kBJK8=",
"owner": "noctalia-dev",
"repo": "noctalia-shell",
"rev": "9f8dd48c8df5ab1f7f87ddf9842627e1e5682186",
"type": "github"
},
"original": {
"owner": "noctalia-dev",
"repo": "noctalia-shell",
"type": "github"
}
},
"noctalia-qs": {
"inputs": {
"nixpkgs": [
"noctalia",
"nixpkgs"
],
"systems": "systems",
"treefmt-nix": "treefmt-nix_2"
},
"locked": {
"lastModified": 1777380063,
"narHash": "sha256-q5mWOEICcZzr+KnjIwDHV9EXiBxOC9cnBpxZbDAViU8=",
"owner": "noctalia-dev",
"repo": "noctalia-qs",
"rev": "8742a7a748c43bf44eb6862a8ebd3591ed71502d",
"type": "github"
},
"original": {
"owner": "noctalia-dev",
"repo": "noctalia-qs",
"type": "github"
}
},
"nur": {
"inputs": {
"flake-parts": [
"stylix",
"flake-parts"
],
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1775228139,
"narHash": "sha256-ebbeHmg+V7w8050bwQOuhmQHoLOEOfqKzM1KgCTexK4=",
"owner": "nix-community",
"repo": "NUR",
"rev": "601971b9c89e0304561977f2c28fa25e73aa7132",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "NUR",
"type": "github"
}
},
"on-linux": {
"flake": false,
"locked": {
"lastModified": 1772699425,
"narHash": "sha256-xhqkN2I5r+Ty2k8HEsLg5e8Eaazb0Qyioqjs87BQOnY=",
"owner": "seapear",
"repo": "AffinityOnLinux",
"rev": "a0c4421946709c24c3f371fcbf15a45b814f188c",
"type": "github"
},
"original": {
"owner": "seapear",
"repo": "AffinityOnLinux",
"type": "github"
}
},
"plugin-loader-src": {
"flake": false,
"locked": {
"lastModified": 1775508798,
"narHash": "sha256-cD2G3M83wCEXVMMl9YoHMLxPIvbXeESgQTkXiM+lzns=",
"owner": "noahc3",
"repo": "AffinityPluginLoader",
"rev": "bd93bbf9f84735d8ba6538596620bbe8d8b90efd",
"type": "github"
},
"original": {
"owner": "noahc3",
"ref": "v0.3.0",
"repo": "AffinityPluginLoader",
"type": "github"
}
},
"prismlauncher-cracked": {
"inputs": {
"libnbtplusplus": "libnbtplusplus",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1776795718,
"narHash": "sha256-YrqHeE9ZEnmxJiXE+IBAxbmNRFPE7mn9KbxZ3Mpu388=",
"owner": "Diegiwg",
"repo": "PrismLauncher-Cracked",
"rev": "0c20d448a3c89cbff85ef5dc7420bf60dc1e65ff",
"type": "github"
},
"original": {
"owner": "Diegiwg",
"repo": "PrismLauncher-Cracked",
"type": "github"
}
},
"root": {
"inputs": {
"affinity-nix": "affinity-nix",
"firefox-addons": "firefox-addons",
"garandos-tui": "garandos-tui",
"home-manager": "home-manager",
"nix-flatpak": "nix-flatpak",
"nixpkgs": "nixpkgs",
"noctalia": "noctalia",
"prismlauncher-cracked": "prismlauncher-cracked",
"stylix": "stylix"
}
},
"rust-analyzer-src": {
"flake": false,
"locked": {
"lastModified": 1776800521,
"narHash": "sha256-f8YJfwAOsLFpIoqZuX3yF69UvMLrkx7iVzMH1pJU7cM=",
"owner": "rust-lang",
"repo": "rust-analyzer",
"rev": "8954b66d43225e62c92e8bbcc8500191b5cceb1e",
"type": "github"
},
"original": {
"owner": "rust-lang",
"ref": "nightly",
"repo": "rust-analyzer",
"type": "github"
}
},
"rust-analyzer-src_2": {
"flake": false,
"locked": {
"lastModified": 1762860488,
"narHash": "sha256-rMfWMCOo/pPefM2We0iMBLi2kLBAnYoB9thi4qS7uk4=",
"owner": "rust-lang",
"repo": "rust-analyzer",
"rev": "2efc80078029894eec0699f62ec8d5c1a56af763",
"type": "github"
},
"original": {
"owner": "rust-lang",
"ref": "nightly",
"repo": "rust-analyzer",
"type": "github"
}
},
"stylix": {
"inputs": {
"base16": "base16",
"base16-fish": "base16-fish",
"base16-helix": "base16-helix",
"base16-vim": "base16-vim",
"firefox-gnome-theme": "firefox-gnome-theme",
"flake-parts": "flake-parts_2",
"gnome-shell": "gnome-shell",
"nixpkgs": [
"nixpkgs"
],
"nur": "nur",
"systems": "systems_2",
"tinted-kitty": "tinted-kitty",
"tinted-schemes": "tinted-schemes",
"tinted-tmux": "tinted-tmux",
"tinted-zed": "tinted-zed"
},
"locked": {
"lastModified": 1776893932,
"narHash": "sha256-AFD5cf9eNqXq1brHS63xeZy2xKZMgG9J86XJ9I2eLn8=",
"owner": "danth",
"repo": "stylix",
"rev": "84971726c7ef0bb3669a5443e151cc226e65c518",
"type": "github"
},
"original": {
"owner": "danth",
"repo": "stylix",
"type": "github"
}
},
"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=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"tinted-kitty": {
"flake": false,
"locked": {
"lastModified": 1735730497,
"narHash": "sha256-4KtB+FiUzIeK/4aHCKce3V9HwRvYaxX+F1edUrfgzb8=",
"owner": "tinted-theming",
"repo": "tinted-kitty",
"rev": "de6f888497f2c6b2279361bfc790f164bfd0f3fa",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "tinted-kitty",
"type": "github"
}
},
"tinted-schemes": {
"flake": false,
"locked": {
"lastModified": 1772661346,
"narHash": "sha256-4eu3LqB9tPqe0Vaqxd4wkZiBbthLbpb7llcoE/p5HT0=",
"owner": "tinted-theming",
"repo": "schemes",
"rev": "13b5b0c299982bb361039601e2d72587d6846294",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "schemes",
"type": "github"
}
},
"tinted-tmux": {
"flake": false,
"locked": {
"lastModified": 1772934010,
"narHash": "sha256-x+6+4UvaG+RBRQ6UaX+o6DjEg28u4eqhVRM9kpgJGjQ=",
"owner": "tinted-theming",
"repo": "tinted-tmux",
"rev": "c3529673a5ab6e1b6830f618c45d9ce1bcdd829d",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "tinted-tmux",
"type": "github"
}
},
"tinted-zed": {
"flake": false,
"locked": {
"lastModified": 1772909925,
"narHash": "sha256-jx/5+pgYR0noHa3hk2esin18VMbnPSvWPL5bBjfTIAU=",
"owner": "tinted-theming",
"repo": "base16-zed",
"rev": "b4d3a1b3bcbd090937ef609a0a3b37237af974df",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "base16-zed",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1775636079,
"narHash": "sha256-pc20NRoMdiar8oPQceQT47UUZMBTiMdUuWrYu2obUP0=",
"owner": "numtide",
"repo": "treefmt-nix",
"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": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
}
},
"root": "root",
"version": 7
}
+86 -7
View File
@@ -1,15 +1,94 @@
{
description = "GarandOS flake";
description = "GarandOS";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
flake-parts.url = "github:hercules-ci/flake-parts";
import-tree.url = "github:vic/import-tree";
home-manager = {
url = "github:nix-community/home-manager/master";
inputs.nixpkgs.follows = "nixpkgs";
};
outputs = inputs: inputs.flake-parts.lib.mkFlake {
stylix = {
url = "github:danth/stylix";
inputs = {
nixpkgs.follows = "nixpkgs";
flake-parts.inputs.nixpkgs-lib.follows = "nixpkgs";
nur.inputs = {
nixpkgs.follows = "nixpkgs";
flake-parts.follows = "stylix/flake-parts";
};
};
};
noctalia = {
url = "github:noctalia-dev/noctalia-shell";
inputs.nixpkgs.follows = "nixpkgs";
};
firefox-addons = {
url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
inputs.nixpkgs.follows = "nixpkgs";
};
prismlauncher-cracked = {
url = "github:Diegiwg/PrismLauncher-Cracked";
inputs.nixpkgs.follows = "nixpkgs";
};
affinity-nix = {
url = "github:mrshmllow/affinity-nix";
inputs = {
nixpkgs.follows = "nixpkgs";
treefmt-nix.inputs.nixpkgs.follows = "nixpkgs";
git-hooks.inputs = {
nixpkgs.follows = "nixpkgs";
gitignore.inputs.nixpkgs.follows = "nixpkgs";
};
};
};
nix-flatpak.url = "github:gmodena/nix-flatpak?ref=latest";
garandos-tui = {
url = "git+https://gitea.garandplg.com/GarandPLG/garandos-tui?ref=main";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = {
nixpkgs,
nix-flatpak,
garandos-tui,
...
} @ inputs: let
hostDirs = builtins.attrNames (builtins.readDir ./hosts);
mkHost = hostName: let
inherit
(import ./hosts/${hostName}/variables.nix)
host
username
profile
system
;
in
nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = {
inherit inputs;
} (inputs.import-tree ./src);
inherit username;
inherit host;
inherit profile;
inherit system;
};
modules = [
./profiles/${profile}
nix-flatpak.nixosModules.nix-flatpak
garandos-tui.nixosModules.garandos-tui
];
};
in {
nixosConfigurations = nixpkgs.lib.genAttrs hostDirs mkHost;
};
}
+7
View File
@@ -0,0 +1,7 @@
_: {
imports = [
./hardware.nix
./host-packages.nix
./system-modules.nix
];
}
+70
View File
@@ -0,0 +1,70 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
config,
lib,
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot = {
initrd = {
availableKernelModules = [
"nvme"
"xhci_pci"
"ahci"
"usbhid"
"usb_storage"
"sd_mod"
];
kernelModules = ["dm-snapshot"];
luks.devices = {
cryptroot = {
device = "/dev/disk/by-uuid/7c018698-d35c-4ee6-92a8-5e4edf914065";
preLVM = true;
};
};
};
kernelModules = ["kvm-amd"];
extraModulePackages = [];
};
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/e3ac1df3-ce8f-44cd-901f-a8cd3f6955b7";
fsType = "ext4";
};
"/home" = {
device = "/dev/disk/by-uuid/0713b82c-bf8c-424f-96e1-5d883e50b451";
fsType = "ext4";
};
"/boot" = {
device = "/dev/disk/by-uuid/783D-A507";
fsType = "vfat";
options = [
"fmask=0022"
"dmask=0022"
];
};
};
swapDevices = lib.mkForce [
{
device = "/dev/disk/by-uuid/8e8cc3dc-5754-4757-a2d7-53e6a2c3b5a4";
}
];
# Enables DHCP on each ethernet and wireless interface. 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`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp5s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}
+67
View File
@@ -0,0 +1,67 @@
_: {
/*
Development editors and IDEs
*/
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 = 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
/*
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 = 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
/*
Gaming
*/
lutris.enable = false; # Lutris: an open gaming platform
/*
Media recording and streaming
*/
obs-studio.enable = false; # OBS Studio: streaming and recording software
/*
Office suite
*/
onlyoffice.enable = true; # OnlyOffice: an office suite compatible with Microsoft formats
/*
Learning tools
*/
anki.enable = true; # Anki: spacedrepetition flashcard program
/*
XDG desktop entries (PWA)
*/
xdgDesktopEntries = {
enable = true; # Enable XDG desktop entries
entries = {
messenger.enable = true; # Messenger: Facebook Messenger
mastodon.enable = true; # Mastodon: a decentralized social network
garandcloud.enable = true; # GarandCloud: my Nextcloud instance
chatgpt.enable = 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
};
};
}
+5
View File
@@ -0,0 +1,5 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
# audacity
];
}
+102
View File
@@ -0,0 +1,102 @@
_: {
/*
Container & Packaging
*/
docker.enable = true; # Docker: container runtime and management
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
};
};
/*
Networking
*/
tailscale.enable = true; # Tailscale: secure network for remote access
/*
Calendar & Contacts
*/
calendar.enable = true; # GNOME Calendar: calendar and contacts application
/*
Gaming
*/
gamemode.enable = true; # GameMode: optimizes system performance for gaming
gamescope.enable = false; # Gamescope: microcompositor for games
steam.enable = true; # Steam: platform for buying and playing games
/*
Media & Graphics
*/
affinity.enable = true; # Affinity: professional graphics suite
packages = {
/*
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
/*
Gaming
*/
prismlauncher.enable = true; # 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
/*
Development Tools
*/
exercism.enable = false; # Exercism: coding practice platform
lazygit.enable = false; # Lazygit: simple TUI for Git
opencode.enable = false; # OpenCode: tools for coding and development
jan.enable = true; # Jan: AI chat UI
logisim-evolution.enable = false; # Logisim-Evolution: Digital logic designer and simulator
/*
Communication & Collaboration
*/
mattermost.enable = true; # Mattermost: opensource Slack alternative
slack.enable = false; # Slack: team communication and collaboration tool
tutanota.enable = true; # Tutanota: secure email client
signal.enable = true; # Signal: secure messaging app
teams.enable = true; # Teams-for-linux: Unofficial Microsoft Teams client for Linux
ferdium.enable = false; # Ferdium: All your services in one place built by the community
notify.enable = true; # notify-client: Ntfy client application to receive everyday's notifications
/*
Productivity / Knowledge Management
*/
bitwarden.enable = false; # Bitwarden: password manager (desktop)
iotas.enable = true; # Iotas: lightweight notes manager
logseq.enable = false; # Logseq: knowledge base and outliner
/*
Media & Graphics
*/
eyeOfGnome.enable = true; # Eye of GNOME: image viewer
freetube.enable = false; # FreeTube: privacyfriendly YouTube client
gimp.enable = false; # GIMP: GNU Image Manipulation Program
kdenlive.enable = false; # Kdenlive: video editing software
pixieditor.enable = true; # Pixieditor: Universal editor for all your 2D needs
plex.enable = true; # Plex: media player and server client
jellyfin.enable = true; # Jellyfin: foss media player
/*
Utilities / Misc
*/
eddieAirVPN.enable = true; # Eddie AirVPN: VPN client
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
};
}
+62
View File
@@ -0,0 +1,62 @@
{
# CPU Architecture
# Available options: "x86_64-linux", "aarch64-linux", etc.
system = "x86_64-linux";
# Host Configuration
host = "Garand-Desktop";
username = "garand_plg";
# GPU Profile
# Available options: "amd", "nvidia", "nvidia-laptop", "intel", "vm"
profile = "nvidia";
# Git Configuration ( For Pulling Software Repos )
gitUsername = "GarandPLG";
gitEmail = "garandplg@garandplg.com";
# Hyprland Settings
# Examples:
# extraMonitorSettings = "monitor = Virtual-1,1920x1080@60,auto,1";
# extraMonitorSettings = "monitor = HDMI-A-1,1920x1080@60,auto,1";
# You can configure multiple monitors.
# Inside the quotes, create a new line for each monitor.
extraMonitorSettings = "monitor = DP-1,1920x1080@144,auto,1";
keyboardLayout = "pl";
consoleKeyMap = "pl";
location = "Żywiec, PL";
# For Nvidia Prime support
intelID = "PCI:1:0:0";
nvidiaID = "PCI:0:2:0";
# Enable NFS
enableNFS = true;
# Enable Printing Support
printEnable = true;
# 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";
# Set network hostId if required (needed for zfs)
# Otherwise leave as-is
hostId = "5ab03f50";
}
+7
View File
@@ -0,0 +1,7 @@
_: {
imports = [
./hardware.nix
./host-packages.nix
./system-modules.nix
];
}
+68
View File
@@ -0,0 +1,68 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
config,
lib,
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot = {
initrd = {
availableKernelModules = [
"nvme"
"xhci_pci"
"usb_storage"
"sd_mod"
];
kernelModules = ["dm-snapshot"];
luks.devices.cryptroot = {
device = "/dev/disk/by-uuid/6abc2228-823e-42b0-94c7-48fda757732c";
preLVM = true;
};
};
kernelModules = ["kvm-amd"];
extraModulePackages = [];
};
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/d30939d0-53ed-4728-9190-6a5b9dec8fb4";
fsType = "ext4";
};
"/home" = {
device = "/dev/disk/by-uuid/3df34a25-7e42-433d-b723-be80f1738ba5";
fsType = "ext4";
};
"/boot" = {
device = "/dev/disk/by-uuid/0E68-9A34";
fsType = "vfat";
options = [
"fmask=0022"
"dmask=0022"
];
};
};
swapDevices = [
{device = "/dev/disk/by-uuid/5da7c845-7dd3-4882-93af-2d679cdb5e7a";}
];
# Enables DHCP on each ethernet and wireless interface. 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`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp3s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware = {
amdgpu.opencl.enable = true;
cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
};
}
+67
View File
@@ -0,0 +1,67 @@
_: {
/*
Development editors and IDEs
*/
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 = 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
/*
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 = 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
/*
Gaming
*/
lutris.enable = false; # Lutris: an open gaming platform
/*
Media recording and streaming
*/
obs-studio.enable = false; # OBS Studio: streaming and recording software
/*
Office suite
*/
onlyoffice.enable = true; # OnlyOffice: an office suite compatible with Microsoft formats
/*
Learning tools
*/
anki.enable = true; # Anki: spacedrepetition flashcard program
/*
XDG desktop entries (PWA)
*/
xdgDesktopEntries = {
enable = true; # Enable XDG desktop entries
entries = {
messenger.enable = true; # Messenger: Facebook Messenger
mastodon.enable = true; # Mastodon: a decentralized social network
garandcloud.enable = true; # GarandCloud: my Nextcloud instance
chatgpt.enable = true; # ChatGPT: a large language model
claude.enable = true; # Claude: a large language model
glance.enable = true; # Glance: my home server dashboard
jellyfinClient.enable = true; # Jellyfin: My Jellyfin
};
};
}
+5
View File
@@ -0,0 +1,5 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
# audacity
];
}
+102
View File
@@ -0,0 +1,102 @@
_: {
/*
Container & Packaging
*/
docker.enable = true; # Docker: container runtime and management
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 = false; # Upscaler: Upscale and enhance images
};
};
/*
Networking
*/
tailscale.enable = true; # Tailscale: secure network for remote access
/*
Calendar & Contacts
*/
calendar.enable = true; # GNOME Calendar: calendar and contacts application
/*
Gaming
*/
gamemode.enable = true; # GameMode: optimizes system performance for gaming
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
packages = {
/*
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
/*
Gaming
*/
prismlauncher.enable = true; # 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
/*
Development Tools
*/
exercism.enable = false; # Exercism: coding practice platform
lazygit.enable = false; # Lazygit: simple TUI for Git
opencode.enable = false; # OpenCode: tools for coding and development
jan.enable = true; # Jan: AI chat UI
logisim-evolution.enable = false; # Logisim-Evolution: Digital logic designer and simulator
/*
Communication & Collaboration
*/
mattermost.enable = true; # Mattermost: opensource Slack alternative
slack.enable = false; # Slack: team communication and collaboration tool
tutanota.enable = true; # Tutanota: secure email client
signal.enable = true; # Signal: secure messaging app
teams.enable = true; # Teams-for-linux: Unofficial Microsoft Teams client for Linux
ferdium.enable = false; # Ferdium: All your services in one place built by the community
notify.enable = true; # notify-client: Ntfy client application to receive everyday's notifications
/*
Productivity / Knowledge Management
*/
bitwarden.enable = false; # Bitwarden: password manager (desktop)
iotas.enable = true; # Iotas: lightweight notes manager
logseq.enable = false; # Logseq: knowledge base and outliner
/*
Media & Graphics
*/
eyeOfGnome.enable = true; # Eye of GNOME: image viewer
freetube.enable = false; # FreeTube: privacyfriendly YouTube client
gimp.enable = false; # GIMP: GNU Image Manipulation Program
kdenlive.enable = false; # Kdenlive: video editing software
pixieditor.enable = true; # Pixieditor: Universal editor for all your 2D needs
plex.enable = true; # Plex: media player and server client
jellyfin.enable = true; # Jellyfin: foss media player
/*
Utilities / Misc
*/
eddieAirVPN.enable = true; # Eddie AirVPN: VPN client
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
};
}
+62
View File
@@ -0,0 +1,62 @@
{
# CPU Architecture
# Available options: "x86_64-linux", "aarch64-linux", etc.
system = "x86_64-linux";
# Host Configuration
host = "Garand-Laptop";
username = "garand_plg";
# GPU Profile
# Available options: "amd", "nvidia", "nvidia-laptop", "intel", "vm"
profile = "amd";
# Git Configuration ( For Pulling Software Repos )
gitUsername = "GarandPLG";
gitEmail = "garandplg@garandplg.com";
# Hyprland Settings
# Examples:
# extraMonitorSettings = "monitor = Virtual-1,1920x1080@60,auto,1";
# extraMonitorSettings = "monitor = HDMI-A-1,1920x1080@60,auto,1";
# You can configure multiple monitors.
# Inside the quotes, create a new line for each monitor.
extraMonitorSettings = "monitor = eDP-1,1920x1080@60,auto,1";
keyboardLayout = "pl";
consoleKeyMap = "pl";
location = "Żywiec, PL";
# For Nvidia Prime support
intelID = "PCI:1:0:0";
nvidiaID = "PCI:0:2:0";
# Enable NFS
enableNFS = true;
# Enable Printing Support
printEnable = 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";
# Set network hostId if required (needed for zfs)
# Otherwise leave as-is
hostId = "7bc04e61";
}
+7
View File
@@ -0,0 +1,7 @@
_: {
imports = [
./hardware.nix
./host-packages.nix
./system-modules.nix
];
}
+57
View File
@@ -0,0 +1,57 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
config,
lib,
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [
"xhci_pci"
"ahci"
"nvme"
"usbhid"
];
boot.initrd.kernelModules = [];
boot.kernelModules = ["kvm-intel"];
boot.extraModulePackages = [];
fileSystems."/" = {
device = "/dev/disk/by-uuid/dd005850-6230-40c4-9d70-8c8cf443658d";
fsType = "ext4";
};
boot.initrd.luks.devices."luks-b7565781-148e-4c94-9c76-36c84dd93dc8".device = "/dev/disk/by-uuid/b7565781-148e-4c94-9c76-36c84dd93dc8";
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/C2A6-DF56";
fsType = "vfat";
options = [
"fmask=0077"
"dmask=0077"
];
};
swapDevices = lib.mkForce [
{
device = "/dev/vg0/swap";
}
];
# Enables DHCP on each ethernet and wireless interface. 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`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.docker0.useDHCP = lib.mkDefault true;
# networking.interfaces.eno2.useDHCP = lib.mkDefault true;
# networking.interfaces.wlo1.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}
+67
View File
@@ -0,0 +1,67 @@
_: {
/*
Development editors and IDEs
*/
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
};
/*
Web browsers
*/
librewolf.enable = true; # Librewolf: a privacy-focused Firefox fork
ungoogled-chromium.enable = true; # 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
nextcloud-client.enable = true; # Nextcloud Client: sync files with a Nextcloud server
vesktop.enable = true; # Vesktop: a communitydriven Discord client
/*
Gaming
*/
lutris.enable = false; # Lutris: an open gaming platform
/*
Media recording and streaming
*/
obs-studio.enable = false; # OBS Studio: streaming and recording software
/*
Office suite
*/
onlyoffice.enable = true; # OnlyOffice: an office suite compatible with Microsoft formats
/*
Learning tools
*/
anki.enable = true; # Anki: spacedrepetition flashcard program
/*
XDG desktop entries (PWA)
*/
xdgDesktopEntries = {
enable = true; # Enable XDG desktop entries
entries = {
messenger.enable = true; # Messenger: Facebook Messenger
mastodon.enable = true; # Mastodon: a decentralized social network
garandcloud.enable = true; # GarandCloud: my Nextcloud instance
chatgpt.enable = true; # ChatGPT: a large language model
claude.enable = true; # Claude: a large language model
glance.enable = true; # Glance: my home server dashboard
jellyfinClient.enable = true; # Jellyfin: My Jellyfin
};
};
}
+5
View File
@@ -0,0 +1,5 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
# audacity
];
}
+102
View File
@@ -0,0 +1,102 @@
_: {
/*
Container & Packaging
*/
docker.enable = true; # Docker: container runtime and management
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 = false; # Upscaler: Upscale and enhance images
};
};
/*
Networking
*/
tailscale.enable = false; # Tailscale: secure network for remote access
/*
Calendar & Contacts
*/
calendar.enable = true; # GNOME Calendar: calendar and contacts application
/*
Gaming
*/
gamemode.enable = true; # GameMode: optimizes system performance for gaming
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
packages = {
/*
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
/*
Gaming
*/
prismlauncher.enable = false; # Prism Launcher: Minecraft modded launcher
spaceCadetPinball.enable = true; # SpaceCadet Pinball: classic pinball game
ttySolitaire.enable = true; # TTY Solitaire: terminalbased solitaire game
heroic.enable = false; # Native GOG, Epic, and Amazon Games Launcher for Linux, Windows and Mac
/*
Development Tools
*/
exercism.enable = true; # Exercism: coding practice platform
lazygit.enable = false; # Lazygit: simple TUI for Git
opencode.enable = false; # OpenCode: tools for coding and development
jan.enable = true; # Jan: AI chat UI
logisim-evolution.enable = false; # Logisim-Evolution: Digital logic designer and simulator
/*
Communication & Collaboration
*/
mattermost.enable = true; # Mattermost: opensource Slack alternative
slack.enable = false; # Slack: team communication and collaboration tool
tutanota.enable = true; # Tutanota: secure email client
signal.enable = true; # Signal: secure messaging app
teams.enable = true; # Teams-for-linux: Unofficial Microsoft Teams client for Linux
ferdium.enable = false; # Ferdium: All your services in one place built by the community
notify.enable = true; # notify-client: Ntfy client application to receive everyday's notifications
/*
Productivity / Knowledge Management
*/
bitwarden.enable = false; # Bitwarden: password manager (desktop)
iotas.enable = true; # Iotas: lightweight notes manager
logseq.enable = false; # Logseq: knowledge base and outliner
/*
Media & Graphics
*/
eyeOfGnome.enable = true; # Eye of GNOME: image viewer
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
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
};
}
+68
View File
@@ -0,0 +1,68 @@
{
# CPU Architecture
# Available options: "x86_64-linux", "aarch64-linux", etc.
system = "x86_64-linux";
# Host Configuration
host = "My-Desktop";
username = "my_username";
# GPU Profile
# Available options: "amd", "nvidia", "nvidia-laptop", "intel", "vm"
profile = "nvidia";
# Git Configuration ( For Pulling Software Repos )
gitUsername = "GarandPLG";
gitEmail = "my@email.com";
# Hyprland Settings
# Examples:
# extraMonitorSettings = "monitor = Virtual-1,1920x1080@60,auto,1";
# extraMonitorSettings = "monitor = HDMI-A-1,1920x1080@60,auto,1";
# You can configure multiple monitors.
# Inside the quotes, create a new line for each monitor.
extraMonitorSettings = "
";
keyboardLayout = "pl";
consoleKeyMap = "pl";
location = "Warszawa, PL";
# For Nvidia Prime support
intelID = "PCI:1:0:0";
nvidiaID = "PCI:0:2:0";
# Enable NFS
enableNFS = true;
# Enable Printing Support
printEnable = false;
# Themes, waybar and animation.
# Only uncomment your selection
# The others much be commented out.
# 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";
# Set network hostId if required (needed for zfs)
# Otherwise leave as-is
hostId = "5ab03f50";
}
+14
View File
@@ -0,0 +1,14 @@
{
pkgs,
lib,
config,
inputs,
...
}: {
options.affinity.enable = lib.mkEnableOption "Steam";
config = lib.mkIf config.affinity.enable {
nixpkgs.overlays = [inputs.affinity-nix.overlays.default];
environment.systemPackages = with pkgs; [affinity-v3];
};
}
+42
View File
@@ -0,0 +1,42 @@
{
pkgs,
config,
lib,
...
}: {
boot = {
kernelPackages = pkgs.linuxPackages_zen;
kernelModules = ["v4l2loopback"];
extraModulePackages = [config.boot.kernelPackages.v4l2loopback];
kernel.sysctl = {
"vm.max_map_count" = 2147483642;
};
loader = {
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";
};
};
};
};
# Appimage Support
binfmt.registrations.appimage = {
wrapInterpreterInShell = false;
interpreter = "${pkgs.appimage-run}/bin/appimage-run";
recognitionType = "magic";
offset = 0;
mask = ''\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff'';
magicOrExtension = ''\x7fELF....AI\x02'';
};
plymouth.enable = true;
};
}
+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
]);
};
}
+32
View File
@@ -0,0 +1,32 @@
{inputs, ...}: {
imports = [
./packages
./affinity.nix
./boot.nix
./calendar.nix
./docker.nix
./flatpak.nix
./fonts.nix
./garandos-tui.nix
./hardware.nix
./network.nix
./nfs.nix
./nh.nix
./printing.nix
./greetd.nix
./security.nix
./services.nix
./steam.nix
./stylix.nix
./syncthing.nix
./system.nix
./tailscale.nix
./thunar.nix
./user.nix
./virtualbox.nix
./xdg.nix
./xserver.nix
./zram.nix
inputs.stylix.nixosModules.stylix
];
}
+14
View File
@@ -0,0 +1,14 @@
{
pkgs,
lib,
config,
...
}: {
options.docker.enable = lib.mkEnableOption "Docker";
config.virtualisation.docker = lib.mkIf config.docker.enable {
enable = true;
package = pkgs.docker;
daemon.settings.dns = ["9.9.9.11" "149.112.112.11"];
};
}
+29
View File
@@ -0,0 +1,29 @@
{
lib,
config,
...
}: let
mkFlatpakPackage = name: pkgId: {
options.flatpak.packages.${name}.enable = lib.mkEnableOption "Flatpak: ${name}";
config.services.flatpak.packages =
lib.mkIf config.flatpak.packages.${name}.enable [pkgId];
};
flatpakPackages = {
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";
config.services.flatpak = lib.mkIf config.flatpak.enable {
enable = true;
update.onActivation = true;
packages = [];
};
imports = builtins.attrValues (builtins.mapAttrs mkFlatpakPackage flatpakPackages);
}
+29
View File
@@ -0,0 +1,29 @@
{pkgs, ...}: {
fonts = {
packages = with pkgs; [
dejavu_fonts
fira-code
fira-code-symbols
font-awesome
hackgen-nf-font
ibm-plex
inter
jetbrains-mono
material-icons
maple-mono.NF
minecraftia
nerd-fonts.im-writing
nerd-fonts.blex-mono
noto-fonts
noto-fonts-color-emoji
noto-fonts-cjk-sans
noto-fonts-cjk-serif
noto-fonts-monochrome-emoji
powerline-fonts
roboto
roboto-mono
#symbola
terminus_font
];
};
}
+11
View File
@@ -0,0 +1,11 @@
{
host,
username,
...
}: {
programs.garandos-tui = {
enable = true;
systemModulesFilePath = "/home/${username}/garandos/hosts/${host}/system-modules.nix";
homeModulesFilePath = "/home/${username}/garandos/hosts/${host}/home-modules.nix";
};
}
+16
View File
@@ -0,0 +1,16 @@
{
pkgs,
username,
...
}: {
services.greetd = {
enable = true;
#vt = 3;
settings = {
default_session = {
user = username;
command = "${pkgs.tuigreet}/bin/tuigreet --time --cmd Hyprland"; # start Hyprland with a TUI login manager
};
};
};
}
+21
View File
@@ -0,0 +1,21 @@
{pkgs, ...}: {
hardware = {
sane = {
enable = true;
extraBackends = [pkgs.sane-airscan];
disabledDefaultBackends = ["escl"];
};
logitech.wireless = {
enable = false;
enableGraphical = false;
};
graphics.enable = true;
enableRedistributableFirmware = true;
keyboard.qmk.enable = true;
bluetooth = {
enable = true;
powerOnBoot = false;
};
};
local.hardware-clock.enable = false;
}
+49
View File
@@ -0,0 +1,49 @@
{
host,
options,
...
}: let
inherit (import ../../hosts/${host}/variables.nix) hostId;
in {
# Defensive assertion for hostname validity (clearer message at eval time)
assertions = [
{
assertion = builtins.match "^[[:alnum:]]([[:alnum:]_-]{0,61}[[:alnum:]])?$" host != null;
message = "Invalid hostname '${host}'. Must be 1-63 chars, start/end alphanumeric; allowed middle chars: letters, digits, '-' or '_'.";
}
];
networking = {
hostName = "${host}";
hostId = hostId;
networkmanager.enable = true;
timeServers = options.networking.timeServers.default ++ ["pool.ntp.org"];
firewall = {
enable = true;
allowedTCPPorts = [
22
80
443
59010
59011
8080
];
allowedTCPPortRanges = [
{
from = 1714;
to = 1764;
}
];
allowedUDPPorts = [
59010
59011
];
allowedUDPPortRanges = [
{
from = 1714;
to = 1764;
}
];
};
};
}
+8
View File
@@ -0,0 +1,8 @@
{host, ...}: let
inherit (import ../../hosts/${host}/variables.nix) enableNFS;
in {
services = {
rpcbind.enable = enableNFS;
nfs.server.enable = enableNFS;
};
}
+15
View File
@@ -0,0 +1,15 @@
{
username,
pkgs,
...
}: {
programs.nh = {
enable = true;
package = pkgs.nh;
clean = {
enable = true;
extraArgs = "--keep-since 7d --keep 5";
};
flake = "/home/${username}/garandos";
};
}
+9
View File
@@ -0,0 +1,9 @@
_: {
nixpkgs.config.allowUnfree = true;
imports = [
./fluxer
./essentials.nix
./packages.nix
./programs.nix
];
}
+73
View File
@@ -0,0 +1,73 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
mpv
pavucontrol
playerctl
cmatrix
cowsay
sl
fortune
# File management
trash-cli
file-roller
unrar
unzip
p7zip
# System monitoring & info
inxi
lm_sensors
lshw
pciutils
usbutils
mesa-demos
nix-output-monitor
nvd
onefetch
# Disk utilities
duf
dysk
ncdu
# Network & system utilities
ripgrep
wget
socat
ookla-speedtest
brightnessctl
killall
dex
ffmpeg
# Desktop environment
networkmanagerapplet
tuigreet
nwg-displays
waypaper
uwsm
hyprpicker
cliphist
# Development utilities
pkg-config
appimage-run
libnotify
v4l-utils
tasktimer
# Language dicts for Iotas
hunspell
hunspellDicts.pl_PL
hunspellDicts.en_US
# Noctalia Shell Dependencies
matugen
app2unit
gpu-screen-recorder
# hyprland
awww
grim
slurp
wl-clipboard
swappy
ydotool
hyprpolkitagent
hyprland-qtutils # needed for banners and ANR messages
# pyprland
pyprland
];
}
+6
View File
@@ -0,0 +1,6 @@
{pkgs, ...}: let
fluxer =
pkgs.callPackage ./fluxer-package.nix {};
in {
environment.systemPackages = [fluxer];
}
@@ -0,0 +1,35 @@
{
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;};
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/512x512/apps/${pname}.png \
$out/share/icons/hicolor/512x512/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];
};
}
+61
View File
@@ -0,0 +1,61 @@
{
pkgs,
lib,
config,
inputs,
system,
...
}: let
mkPackage = name: pkgsOrList: {
options.packages.${name}.enable = lib.mkEnableOption name;
config.environment.systemPackages =
lib.mkIf config.packages.${name}.enable
(lib.toList pkgsOrList);
};
packages = with pkgs; {
bitwarden = bitwarden-desktop;
eddieAirVPN = eddie;
gnomeCalculator = gnome-calculator;
gedit = gedit;
iotas = iotas;
logseq = logseq;
mattermost = mattermost-desktop;
slack = slack;
tutanota = tutanota-desktop;
exercism = exercism;
opencode = opencode;
jan = jan;
lazygit = lazygit;
prismlauncher = inputs.prismlauncher-cracked.packages.${system}.default;
spaceCadetPinball = space-cadet-pinball;
ttySolitaire = tty-solitaire;
gimp = gimp;
eyeOfGnome = eog;
kdenlive = kdePackages.kdenlive;
plex = [
(plex-desktop.override {extraEnv = {QT_QPA_PLATFORM = "xcb";};})
# plex-desktop
plexamp
];
jellyfin = [
tsukimi
finamp
];
freetube = freetube;
lazydocker = lazydocker;
distrobox = [distrobox pkgs.boxbuddy];
winboat = [winboat freerdp];
signal = signal-desktop;
pixieditor = pixieditor;
bottles = bottles;
heroic = heroic;
adb = android-tools;
teams = teams-for-linux;
ferdium = ferdium;
logisim-evolution = logisim-evolution;
notify = notify-client;
};
in {
imports = builtins.attrValues (builtins.mapAttrs mkPackage packages);
}
+23
View File
@@ -0,0 +1,23 @@
_: {
programs = {
nano.enable = true;
hyprland = {
enable = true;
withUWSM = false;
};
dconf.enable = true;
seahorse.enable = true;
fuse.userAllowOther = true;
mtr.enable = true;
gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
nix-ld = {
enable = true;
# libraries = with pkgs; [
# biome
# ];
};
};
}
+18
View File
@@ -0,0 +1,18 @@
{host, ...}: let
inherit (import ../../hosts/${host}/variables.nix) printEnable;
in {
services = {
printing = {
enable = printEnable;
drivers = [
# pkgs.hplipWithPlugin
];
};
avahi = {
enable = printEnable;
nssmdns4 = true;
openFirewall = true;
};
ipp-usb.enable = printEnable;
};
}
+28
View File
@@ -0,0 +1,28 @@
_: {
security = {
rtkit.enable = true;
polkit = {
enable = true;
extraConfig = ''
polkit.addRule(function(action, subject) {
if ( subject.isInGroup("users") && (
action.id == "org.freedesktop.login1.reboot" ||
action.id == "org.freedesktop.login1.reboot-multiple-sessions" ||
action.id == "org.freedesktop.login1.power-off" ||
action.id == "org.freedesktop.login1.power-off-multiple-sessions"
))
{ return polkit.Result.YES; }
})
'';
};
pam.services.swaylock = {
text = ''auth include login '';
};
sudo = {
enable = true;
extraConfig = ''
Defaults pwfeedback
'';
};
};
}
+67
View File
@@ -0,0 +1,67 @@
{
profile,
pkgs,
...
}: {
# Services to start
services = {
libinput.enable = true; # Input Handling
fstrim.enable = true; # SSD Optimizer
gvfs.enable = true; # For Mounting USB & More
openssh = {
enable = true; # Enable SSH
settings = {
PermitRootLogin = "no"; # Prevent root from SSH login
PasswordAuthentication = true; # Users can SSH using kb and password
KbdInteractiveAuthentication = true;
};
ports = [22];
};
tumbler.enable = true; # Image/video preview
gnome.gnome-keyring.enable = true;
smartd = {
enable =
if profile == "vm"
then false
else true;
autodetect = true;
};
pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
extraConfig.pipewire."92-low-latency" = {
"context.properties" = {
"default.clock.rate" = 48000;
"default.clock.quantum" = 256;
"default.clock.min-quantum" = 256;
"default.clock.max-quantum" = 256;
};
};
extraConfig.pipewire-pulse."92-low-latency" = {
context.modules = [
{
name = "libpipewire-module-protocol-pulse";
args = {
pulse.min.req = "256/48000";
pulse.default.req = "256/48000";
pulse.max.req = "256/48000";
pulse.min.quantum = "256/48000";
pulse.max.quantum = "256/48000";
};
}
];
};
};
upower = {
enable = true;
package = pkgs.upower;
};
power-profiles-daemon = {
enable = true;
package = pkgs.power-profiles-daemon;
};
};
}
+43
View File
@@ -0,0 +1,43 @@
{
pkgs,
lib,
config,
...
}: {
options = {
steam.enable = lib.mkEnableOption "Steam";
gamescope.enable = lib.mkEnableOption "Gamescope";
gamemode.enable = lib.mkEnableOption "Gamemode";
};
config.programs = {
steam = lib.mkIf config.steam.enable {
enable = true;
package = pkgs.steam;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
gamescopeSession = lib.mkIf config.gamescope.enable {
enable = true;
args = [
"--rt"
"--expose-wayland"
];
};
extraCompatPackages = [pkgs.proton-ge-bin];
};
gamescope = lib.mkIf config.gamescope.enable {
enable = true;
capSysNice = true;
args = [
"--rt"
"--expose-wayland"
];
};
gamemode = lib.mkIf config.gamemode.enable {
enable = true;
enableRenice = true;
};
};
}
+40
View File
@@ -0,0 +1,40 @@
{
pkgs,
host,
...
}: let
inherit (import ../../hosts/${host}/variables.nix) stylixImage;
in {
# Styling Options
stylix = {
enable = true;
image = ../../wallpapers/${stylixImage};
polarity = "dark";
opacity.terminal = 1.0;
cursor = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Ice";
size = 24;
};
fonts = {
monospace = {
package = pkgs.nerd-fonts.fira-mono;
name = "FiraCode Nerd Font Mono";
};
sansSerif = {
package = pkgs.nerd-fonts.fira-code;
name = "FiraCode Nerd Font Propo";
};
serif = {
package = pkgs.nerd-fonts.fira-code;
name = "FiraCode Nerd Font";
};
sizes = {
applications = 12;
terminal = 15;
desktop = 11;
popups = 12;
};
};
};
}
+8
View File
@@ -0,0 +1,8 @@
{username, ...}: {
services.syncthing = {
enable = false;
user = "${username}";
dataDir = "/home/${username}";
configDir = "/home/${username}/.config/syncthing";
};
}
+43
View File
@@ -0,0 +1,43 @@
{
host,
inputs,
...
}: let
inherit (import ../../hosts/${host}/variables.nix) consoleKeyMap;
in {
nix = {
nixPath = ["nixpkgs=${inputs.nixpkgs}"];
settings = {
download-buffer-size = 200000000;
auto-optimise-store = true;
experimental-features = [
"nix-command"
"flakes"
];
substituters = ["https://hyprland.cachix.org"];
trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="];
};
};
time.timeZone = "Europe/Warsaw";
i18n = {
defaultLocale = "pl_PL.UTF-8";
extraLocaleSettings = {
LC_ADDRESS = "pl_PL.UTF-8";
LC_IDENTIFICATION = "pl_PL.UTF-8";
LC_MEASUREMENT = "pl_PL.UTF-8";
LC_MONETARY = "pl_PL.UTF-8";
LC_NAME = "pl_PL.UTF-8";
LC_NUMERIC = "pl_PL.UTF-8";
LC_PAPER = "pl_PL.UTF-8";
LC_TELEPHONE = "pl_PL.UTF-8";
LC_TIME = "pl_PL.UTF-8";
};
};
environment.variables = {
NIXOS_OZONE_WL = "1";
GARANDOS_VERSION = "1.0";
GARANDOS = "true";
};
console.keyMap = "${consoleKeyMap}";
system.stateVersion = "23.11"; # Do not change!
}
+14
View File
@@ -0,0 +1,14 @@
{
pkgs,
config,
lib,
...
}: {
options.tailscale.enable = lib.mkEnableOption "Tailscale";
config.services.tailscale = lib.mkIf config.tailscale.enable {
enable = true;
package = pkgs.tailscale;
openFirewall = true;
};
}
+9
View File
@@ -0,0 +1,9 @@
{pkgs, ...}: {
programs.thunar = {
enable = true;
plugins = with pkgs; [
thunar-archive-plugin
thunar-volman
];
};
}
+61
View File
@@ -0,0 +1,61 @@
{
pkgs,
inputs,
username,
host,
profile,
system,
...
}: let
inherit (import ../../hosts/${host}/variables.nix) gitUsername;
in {
imports = [inputs.home-manager.nixosModules.home-manager];
home-manager = {
useUserPackages = true;
useGlobalPkgs = false;
backupFileExtension = "backup-nixos";
extraSpecialArgs = {
inherit
inputs
username
host
profile
system
;
};
users.${username} = {
imports = [
./../home
../../hosts/${host}/home-modules.nix
inputs.noctalia.homeModules.default
];
home = {
username = "${username}";
homeDirectory = "/home/${username}";
stateVersion = "25.11";
};
};
};
users = {
mutableUsers = true;
users.${username} = {
isNormalUser = true;
description = "${gitUsername}";
extraGroups = [
"adbusers"
"docker" # access to docker as non-root
"libvirtd" # Virt manager/QEMU access
"lp"
"networkmanager"
"scanner"
"wheel" # sudo access
"vboxusers" # Virtual Box
"gamemode"
];
shell = pkgs.bash;
ignoreShellProgramCheck = true;
linger = true;
};
};
nix.settings.allowed-users = ["${username}"];
}
+17
View File
@@ -0,0 +1,17 @@
{
pkgs,
lib,
config,
...
}: {
options.virtualbox.enable = lib.mkEnableOption "Enable VirtualBox";
config.virtualisation.virtualbox.host = lib.mkIf config.virtualbox.enable {
enable = true;
package = pkgs.virtualbox;
enableKvm = true;
enableHardening = true;
enableExtensionPack = false;
addNetworkInterface = false;
};
}
+12
View File
@@ -0,0 +1,12 @@
{pkgs, ...}: {
xdg.portal = {
enable = true;
wlr.enable = true;
extraPortals = with pkgs; [
xdg-desktop-portal-hyprland
xdg-desktop-portal-gtk
];
configPackages = [pkgs.hyprland];
xdgOpenUsePortal = true;
};
}
+11
View File
@@ -0,0 +1,11 @@
{host, ...}: let
inherit (import ../../hosts/${host}/variables.nix) keyboardLayout;
in {
services.xserver = {
enable = true;
xkb = {
layout = "${keyboardLayout}";
variant = "";
};
};
}
+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 = {};
};
}
+19
View File
@@ -0,0 +1,19 @@
{
lib,
pkgs,
config,
...
}:
with lib; let
cfg = config.drivers.amdgpu;
in {
options.drivers.amdgpu = {
enable = mkEnableOption "Enable AMD Drivers";
};
config = mkIf cfg.enable {
systemd.tmpfiles.rules = ["L+ /opt/rocm/hip - - - - ${pkgs.rocmPackages.clr}"];
services.xserver.videoDrivers = ["amdgpu"];
environment.systemPackages = with pkgs; [rocmPackages.rocm-smi];
};
}
+10
View File
@@ -0,0 +1,10 @@
{...}: {
imports = [
./amd-drivers.nix
./intel-drivers.nix
./local-hardware-clock.nix
./nvidia-drivers.nix
./nvidia-prime-drivers.nix
./vm-guest-services.nix
];
}
+25
View File
@@ -0,0 +1,25 @@
{
lib,
pkgs,
config,
...
}:
with lib; let
cfg = config.drivers.intel;
in {
options.drivers.intel = {
enable = mkEnableOption "Enable Intel Graphics Drivers";
};
config = mkIf cfg.enable {
# OpenGL
hardware.graphics = {
extraPackages = with pkgs; [
intel-media-driver
vaapiIntel
vaapiVdpau
libvdpau-va-gl
];
};
};
}
+15
View File
@@ -0,0 +1,15 @@
{
lib,
pkgs,
config,
...
}:
with lib; let
cfg = config.local.hardware-clock;
in {
options.local.hardware-clock = {
enable = mkEnableOption "Change Hardware Clock To Local Time";
};
config = mkIf cfg.enable {time.hardwareClockInLocalTime = true;};
}
+59
View File
@@ -0,0 +1,59 @@
{
lib,
config,
pkgs,
...
}:
with lib; let
cfg = config.drivers.nvidia;
in {
options.drivers.nvidia = {
enable = mkEnableOption "Enable Nvidia Drivers";
};
config = mkIf cfg.enable {
services.xserver.videoDrivers = ["nvidia"];
environment.systemPackages = with pkgs; [nvidia-docker];
hardware = {
nvidia-container-toolkit.enable = true;
nvidia = {
# Modesetting is required.
modesetting.enable = true;
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
powerManagement.enable = true;
# Fine-grained power management. Turns off GPU when not in use.
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
powerManagement.finegrained = false;
# Use the NVidia open source kernel module (not to be confused with the
# independent third-party "nouveau" open source driver).
# Support is limited to the Turing and later architectures. Full list of
# supported GPUs is at:
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
# Only available from driver 515.43.04+
# Currently alpha-quality/buggy, so false is currently the recommended setting.
open = false;
# Enable the Nvidia settings menu,
# 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;
};
};
};
}
# Making nvidia docker toolkit work:
#
# sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml
#
# sudo nvidia-ctk cdi list
#
# sudo tee /etc/docker/daemon.json > /dev/null <<EOF
# {
# "features": {
# "cdi": true
# }
# }
# EOF
#
# docker run --device nvidia.com/gpu=all
+35
View File
@@ -0,0 +1,35 @@
{
lib,
pkgs,
config,
...
}:
with lib; let
cfg = config.drivers.nvidia-prime;
in {
options.drivers.nvidia-prime = {
enable = mkEnableOption "Enable Nvidia Prime Hybrid GPU Offload";
intelBusID = mkOption {
type = types.str;
default = "PCI:1:0:0";
};
nvidiaBusID = mkOption {
type = types.str;
default = "PCI:0:2:0";
};
};
config = mkIf cfg.enable {
hardware.nvidia = {
prime = {
offload = {
enable = true;
enableOffloadCmd = true;
};
# Make sure to use the correct Bus ID values for your system!
intelBusId = "${cfg.intelBusID}";
nvidiaBusId = "${cfg.nvidiaBusID}";
};
};
};
}
+19
View File
@@ -0,0 +1,19 @@
{
lib,
pkgs,
config,
...
}:
with lib; let
cfg = config.vm.guest-services;
in {
options.vm.guest-services = {
enable = mkEnableOption "Enable Virtual Machine Guest Services";
};
config = mkIf cfg.enable {
services.qemuGuest.enable = true;
services.spice-vdagentd.enable = true;
services.spice-webdavd.enable = false; # Causes navfs2 build failure invalid neon version 9-12-25
};
}
+17
View File
@@ -0,0 +1,17 @@
{
pkgs,
username,
lib,
config,
...
}: {
options.anki.enable = lib.mkEnableOption "Anki";
config.programs.anki = lib.mkIf config.anki.enable {
enable = true;
package = pkgs.anki;
language = "pl_PL";
style = "native";
profiles."${username}".sync.username = username;
};
}
+146
View File
@@ -0,0 +1,146 @@
{
username,
host,
...
}: {
programs.bash.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";
# 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 = "shutdown now";
ookla = "speedtest";
hypr-cli = "hyprctl clients";
# Navigation aliases
"~" = "cd ~";
".." = "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 ";
# Count all files (recursively) in the current folder
countfiles = "for t in files links directories; do echo \`find . -type \${t:0:1} | wc -l\` \$t; done 2> /dev/null";
# 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";
# Show all logs in /var/log
logs = "sudo find /var/log -type f -exec file {} \; | grep 'text' | cut -d' ' -f1 | sed -e's/:$//g' | grep -v '[0-9]$' | xargs tail -f";
# 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";
};
}
+13
View File
@@ -0,0 +1,13 @@
_: {
programs.bash = {
enable = true;
enableCompletion = true;
# initExtra = ''
# fastfetch
# '';
};
imports = [
./aliases.nix
./functions.nix
];
}
+161
View File
@@ -0,0 +1,161 @@
_: {
programs.bash.bashrcExtra = ''
# Quick directory creation and navigation
mkcd() {
mkdir -p "$1" && cd "$1"
}
# Extract various archive formats
extract() {
for archive in "$@"; do
if [ -f "$archive" ]; then
case "$archive" in
*.tar.bz2) tar xvjf "$archive" ;;
*.tar.gz) tar xvzf "$archive" ;;
*.bz2) bunzip2 "$archive" ;;
*.rar) unrar x "$archive" ;;
*.gz) gunzip "$archive" ;;
*.tar) tar xvf "$archive" ;;
*.tbz2) tar xvjf "$archive" ;;
*.tgz) tar xvzf "$archive" ;;
*.zip) unzip "$archive" ;;
*.Z) uncompress "$archive" ;;
*.7z) 7z x "$archive" ;;
*) echo "don't know how to extract '$archive'..." ;;
esac
else
echo "'$archive' is not a valid file!"
fi
done
}
# Find files quickly
ff() {
find . -name "*$1*" -type f
}
# Find directories quickly
fd() {
find . -name "*$1*" -type d
}
# IP address lookup
alias whatismyip="whatsmyip"
function whatsmyip () {
# Internal IP Lookup.
if command -v ip &> /dev/null; then
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}'
fi
# External IP Lookup
echo -n "External IP: "
curl -4 ifconfig.me
}
# Searches for text in all files in the current folder
ftext() {
# -i case-insensitive
# -I ignore binary files
# -H causes filename to be printed
# -r recursive search
# -n causes line number to be printed
# optional: -F treat search term as a literal, not a regular expression
# optional: -l only print filenames and not the matching lines ex. grep -irl "$1" *
grep -iIHrn --color=always "$1" . | less -r
}
# Copy file with a progress bar
cpp() {
set -e
strace -q -ewrite cp -- "$1" "$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' "$1")" count=0
}
# Copy and go to the directory
cpg() {
if [ -d "$2" ]; then
cp "$1" "$2" && cd "$2"
else
cp "$1" "$2"
fi
}
# Move and go to the directory
mvg() {
if [ -d "$2" ]; then
mv "$1" "$2" && cd "$2"
else
mv "$1" "$2"
fi
}
# Create and go to the directory
mkdirg() {
mkdir -p "$1"
cd "$1"
}
# Goes up a specified number of directories (i.e. up 4)
up() {
local d=""
limit=$1
for ((i = 1; i <= limit; i++)); do
d=$d/..
done
d=$(echo $d | sed 's/^\///')
if [ -z "$d" ]; then
d=..
fi
cd $d
}
# Automatically do an ls after each cd, z, or zoxide
cd ()
{
if [ -n "$1" ]; then
builtin cd "$@" && ls
else
builtin cd ~ && ls
fi
}
# Returns the last 2 fields of the working directory
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"
}
'';
}
+23
View File
@@ -0,0 +1,23 @@
{
pkgs,
lib,
...
}: {
programs.bat = {
enable = true;
config = {
pager = "less -FR";
style = "full";
theme = lib.mkForce "base16";
};
extraPackages = with pkgs.bat-extras; [
batman
batpipe
batgrep
];
};
home.sessionVariables = {
MANPAGER = "sh -c 'col -bx | bat -l man -p'";
MANROFFOPT = "-c";
};
}
+28
View File
@@ -0,0 +1,28 @@
{
pkgs,
lib,
config,
...
}: {
options.btop.enable = lib.mkEnableOption "Btop";
config.programs.btop = lib.mkIf config.btop.enable {
enable = true;
package = pkgs.btop.override {
rocmSupport = true;
cudaSupport = true;
};
settings = {
rounded_corners = true;
proc_tree = true;
show_gpu_info = "on";
show_uptime = true;
show_coretemp = true;
cpu_sensor = "auto";
show_disks = true;
only_physical = true;
io_mode = true;
io_graph_combined = false;
};
};
}
+18
View File
@@ -0,0 +1,18 @@
{
lib,
config,
...
}: {
options.cava.enable = lib.mkEnableOption "Cava";
config.programs.cava = lib.mkIf config.cava.enable {
enable = true;
settings = {
general = {
bar_spacing = 1;
bar_width = 2;
frame_rate = 144;
};
};
};
}
+22
View File
@@ -0,0 +1,22 @@
{
pkgs,
lib,
config,
...
}: {
options.ungoogled-chromium.enable = lib.mkEnableOption "Ungoogled Chromium";
config.programs.chromium = lib.mkIf config.ungoogled-chromium.enable {
enable = true;
package = pkgs.ungoogled-chromium;
# commandLineArgs = [ ];
dictionaries = with pkgs; [
hunspellDictsChromium.en_US
# hunspellDictsChromium.pl_PL Jeśli się taka pojawi
];
};
imports = [
./extensions.nix
];
}
+25
View File
@@ -0,0 +1,25 @@
_: {
programs.chromium.extensions = [
{
id = "ocaahdebbfolfmndjeplogmgcagdmblk"; # Chromium Web Store
}
{
id = "eimadpbcbfnmbkopoojfekhnkhdbieeh"; # Dark Reader
}
{
id = "fnaicdffflnofjppbagibeoednhnbjhg"; # floccus bookmarks sync
}
{
id = "amknoiejhlmhancpahfcfcfhllgkpbld"; # Hoppscotch Browser Extension
}
{
id = "nngceckbapebfimnlniiiahkandclblb"; # Menedżer haseł Bitwarden
}
{
id = "fdaphilojaklgkoocegabckfanjoacjg"; # mtab
}
{
id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; # uBlock Origin
}
];
}
+39
View File
@@ -0,0 +1,39 @@
_: {
imports = [
./bash
./chromium
./fastfetch
./hyprland
./kitty
./librewolf
./noctalia
./scripts
./vscodium
./xdg
./zed
./anki.nix
./bat.nix
./btop.nix
./cava.nix
./easyeffects.nix
./emoji.nix
./eza.nix
./fzf.nix
./git.nix
./gtk.nix
./kdeConnect.nix
./lutris.nix
./nextcloud.nix
./obs-studio.nix
./onlyoffice.nix
./qt.nix
./ssh.nix
./starship.nix
./stylix.nix
./swappy.nix
./tealdeer.nix
./vesktop.nix
./virtmanager.nix
./zoxide.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
+20
View File
@@ -0,0 +1,20 @@
# Eza is a ls replacement
{
programs.eza = {
enable = true;
icons = "auto";
enableBashIntegration = true;
git = true;
extraOptions = [
"--group-directories-first"
"--no-quotes"
"--header" # Show header row
"--git-ignore"
"--icons=always"
# "--time-style=long-iso" # ISO 8601 extended format for time
"--classify" # append indicator (/, *, =, @, |)
"--hyperlink" # make paths clickable in some terminals
];
};
}
+17
View File
@@ -0,0 +1,17 @@
{
pkgs,
lib,
config,
...
}: {
options.fastfetch.enable = lib.mkEnableOption "FastFetch";
config.programs.fastfetch = lib.mkIf config.fastfetch.enable {
enable = true;
package = pkgs.fastfetch;
};
imports = [
./settings
];
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

@@ -0,0 +1,7 @@
_: {
imports = [
./display.nix
./logo.nix
./modules.nix
];
}
@@ -0,0 +1,9 @@
_: {
programs.fastfetch.settings.display = {
color = {
keys = "35";
output = "90";
};
separator = " ";
};
}
+12
View File
@@ -0,0 +1,12 @@
_: {
programs.fastfetch.settings.logo = {
source = ../garandos.png;
type = "kitty-direct";
height = 15;
width = 30;
padding = {
top = 3;
left = 3;
};
};
}
+159
View File
@@ -0,0 +1,159 @@
_: {
programs.fastfetch.settings.modules = [
"break"
{
type = "custom";
format = "Hardware";
}
{
type = "host";
format = "{5} {1} Type {2}";
key = " PC";
keyColor = "33";
}
{
type = "cpu";
format = "{1} ({3}) @ {7} GHz";
key = " ";
keyColor = "33";
}
{
type = "gpu";
format = "{1} {2} @ {12} GHz";
key = " ";
keyColor = "33";
}
{
type = "memory";
key = " 󰑭 ";
keyColor = "33";
}
{
type = "swap";
key = " ";
keyColor = "33";
}
{
type = "disk";
key = " 󰋊 ";
keyColor = "33";
}
{
type = "monitor";
key = " ";
keyColor = "33";
}
{
type = "custom";
format = "";
}
"break"
{
type = "custom";
format = "Software";
}
{
type = "os";
key = " OS";
keyColor = "31";
}
{
type = "command";
key = " ";
keyColor = "31";
text = "echo GarandOS v$" + "{GARANDOS_VERSION}";
}
{
type = "kernel";
key = " ";
keyColor = "31";
}
{
type = "packages";
key = " 󰏖 ";
keyColor = "31";
}
{
type = "shell";
key = " ";
keyColor = "31";
}
{
type = "wm";
key = " WM";
keyColor = "32";
}
{
type = "wmtheme";
key = " 󰉼 ";
keyColor = "32";
}
{
type = "icons";
key = " 󰀻 ";
keyColor = "32";
}
{
type = "cursor";
key = " ";
keyColor = "32";
}
{
type = "terminal";
key = " ";
keyColor = "32";
}
{
type = "terminalfont";
key = " ";
keyColor = "32";
}
{
type = "custom";
format = "";
}
"break"
{
type = "custom";
format = "Age / Uptime";
}
{
type = "command";
key = " IN";
text =
#bash
''
birth_install=$(stat -c %W /)
if [ "$birth_install" -gt 0 ]; then
echo "Installed $(date -d @"$birth_install" +"%Y-%m-%d")"
else
echo "Installation date unknown"
fi
'';
}
{
type = "command";
key = " ";
text =
#bash
''
birth_install=$(stat -c %W /)
current=$(date +%s)
delta=$((current - birth_install))
delta_days=$((delta / 86400))
echo $delta_days days
'';
}
{
type = "uptime";
key = " ";
}
{
type = "custom";
format = "";
}
"break"
];
}
+36
View File
@@ -0,0 +1,36 @@
# 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;
enableBashIntegration = true;
colors = lib.mkForce {
"fg+" = accent;
"bg+" = "-1";
"fg" = foreground;
"bg" = "-1";
"prompt" = muted;
"pointer" = accent;
};
defaultOptions = [
"--margin=1"
"--layout=reverse"
"--border=none"
"--info='hidden'"
"--header=''"
"--prompt='/ '"
"-i"
"--no-bold"
"--bind='enter:execute(nano {})'"
"--preview='bat --style=numbers --color=always --line-range :500 {}'"
"--preview-window=right:60%:wrap"
];
};
}
+21
View File
@@ -0,0 +1,21 @@
{host, ...}: let
inherit (import ../../hosts/${host}/variables.nix) gitUsername gitEmail;
in {
programs.git = {
enable = true;
settings = {
user = {
name = "${gitUsername}";
email = "${gitEmail}";
};
push.default = "simple";
credential.helper = "cache --timeout=7200";
init.defaultBranch = "main";
log = {
decorate = "full";
date = "iso";
};
merge.conflictStyle = "diff3";
};
};
}
+15
View File
@@ -0,0 +1,15 @@
{pkgs, ...}: {
gtk = {
iconTheme = {
name = "Papirus-Dark";
package = pkgs.papirus-icon-theme;
};
gtk3.extraConfig.gtk-application-prefer-dark-theme = 1;
gtk4 = {
theme = null;
extraConfig = {
gtk-application-prefer-dark-theme = 1;
};
};
};
}
+33
View File
@@ -0,0 +1,33 @@
_: {
wayland.windowManager.hyprland.settings.animations = {
enabled = true;
bezier = [
"linear, 0, 0, 1, 1"
"md3_standard, 0.2, 0, 0, 1"
"md3_decel, 0.05, 0.7, 0.1, 1"
"md3_accel, 0.3, 0, 0.8, 0.15"
"overshot, 0.05, 0.9, 0.1, 1.1"
"crazyshot, 0.1, 1.5, 0.76, 0.92 "
"hyprnostretch, 0.05, 0.9, 0.1, 1.0"
"menu_decel, 0.1, 1, 0, 1"
"menu_accel, 0.38, 0.04, 1, 0.07"
"easeInOutCirc, 0.85, 0, 0.15, 1"
"easeOutCirc, 0, 0.55, 0.45, 1"
"easeOutExpo, 0.16, 1, 0.3, 1"
"softAcDecel, 0.26, 0.26, 0.15, 1"
"md2, 0.4, 0, 0.2, 1 # use with .2s duration"
];
animation = [
"windows, 1, 3, md3_decel, popin 60%"
"windowsIn, 1, 3, md3_decel, popin 60%"
"windowsOut, 1, 3, md3_accel, popin 60%"
"border, 1, 10, default"
"fade, 1, 3, md3_decel"
"layersIn, 1, 3, menu_decel, slide"
"layersOut, 1, 1.6, menu_accel"
"fadeLayersIn, 1, 2, menu_decel"
"fadeLayersOut, 1, 4.5, menu_accel"
"workspaces, 1, 7, menu_decel, slide"
];
};
}
+170
View File
@@ -0,0 +1,170 @@
{
lib,
username,
...
}: let
desktopEntriesPath = "/home/${username}/.local/state/home-manager/gcroots/current-home/home-path/share/applications/";
mainBinds = [
"SUPER, A, exec, anki #\"Flashcard learning application\""
"SUPER, B, exec, bitwarden #\"Password manager\""
"SUPER, C, exec, chromium #\"Ungoogled Chromium\""
"SUPER, D, exec, vesktop #\"Discord client\""
"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, I, exec, iotas #\"Note-taking app\""
"SUPER, J, exec, Jan #\"Local AI chat interface\""
"SUPER, K, exec, gnome-calculator #\"Scientific calculator\""
"SUPER, L, exec, logseq #\"Knowledge management tool\""
"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\""
"SUPER, V, exec, codium #\"VS Codium\""
"SUPER, W, exec, librewolf #\"Main Web browser (Librewolf)\""
"SUPER, Z, exec, zeditor #\"Zed IDE\""
];
shiftBinds = [
"SUPER SHIFT, C, exec, dex ${desktopEntriesPath}/claude.desktop #\"Claude AI chat\""
"SUPER SHIFT, D, exec, jellyfin-desktop #\"Jellyfin media client\""
"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, K, exec, noctalia-shell ipc call plugin:keybind-cheatsheet toggle #\"Toggle keybind cheatsheet\""
"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, Return, exec, noctalia-shell ipc call launcher toggle #\"Toggle application launcher\""
"SUPER SHIFT, S, exec, screenshootin #\"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, M, exec, dex ${desktopEntriesPath}/mastodon.desktop #\"Mastodon social network client\""
"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\""
];
controlBinds = [
"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, S, exec, signal-desktop #\"Signal encrypted messaging\""
"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, F, togglefloating, #\"Toggle floating mode\""
];
windowFocusBinds = [
"SUPER, down, movefocus, d #\"Move focus down\""
"SUPER, left, movefocus, l #\"Move focus left\""
"SUPER, right, movefocus, r #\"Move focus right\""
"SUPER, up, movefocus, u #\"Move focus up\""
];
windowMovementBinds = [
"SUPER SHIFT, down, movewindow, d #\"Move window down\""
"SUPER SHIFT, left, movewindow, l #\"Move window left\""
"SUPER SHIFT, right, movewindow, r #\"Move window right\""
"SUPER SHIFT, up, movewindow, u #\"Move window up\""
];
windowSwapBinds = [
"SUPER ALT, down, swapwindow, d #\"Swap active window with window below\""
"SUPER ALT, left, swapwindow, l #\"Swap active window with window on the left\""
"SUPER ALT, right, swapwindow, r #\"Swap active window with window on the right\""
"SUPER ALT, up, swapwindow, u #\"Swap active window with window above\""
];
workspacesSwitchBinds = [
"SUPER, 0, workspace, 10 #\"Switch to workspace 10\""
"SUPER, 1, workspace, 1 #\"Switch to workspace 1\""
"SUPER, 2, workspace, 2 #\"Switch to workspace 2\""
"SUPER, 3, workspace, 3 #\"Switch to workspace 3\""
"SUPER, 4, workspace, 4 #\"Switch to workspace 4\""
"SUPER, 5, workspace, 5 #\"Switch to workspace 5\""
"SUPER, 6, workspace, 6 #\"Switch to workspace 6\""
"SUPER, 7, workspace, 7 #\"Switch to workspace 7\""
"SUPER, 8, workspace, 8 #\"Switch to workspace 8\""
"SUPER, 9, workspace, 9 #\"Switch to workspace 9\""
"SUPER CONTROL, left, workspace, e-1 #\"Switch to previous workspace\""
"SUPER CONTROL, right, workspace, e+1 #\"Switch to next workspace\""
"SUPER, mouse_down, workspace, e+1 #\"Switch to next workspace with mouse\""
"SUPER, mouse_up, workspace, e-1 #\"Switch to previous workspace with mouse\""
];
workspacesSwapBinds = [
"SUPER SHIFT, 0, movetoworkspace, 10 #\"Move active window to workspace 10\""
"SUPER SHIFT, 1, movetoworkspace, 1 #\"Move active window to workspace 1\""
"SUPER SHIFT, 2, movetoworkspace, 2 #\"Move active window to workspace 2\""
"SUPER SHIFT, 3, movetoworkspace, 3 #\"Move active window to workspace 3\""
"SUPER SHIFT, 4, movetoworkspace, 4 #\"Move active window to workspace 4\""
"SUPER SHIFT, 5, movetoworkspace, 5 #\"Move active window to workspace 5\""
"SUPER SHIFT, 6, movetoworkspace, 6 #\"Move active window to workspace 6\""
"SUPER SHIFT, 7, movetoworkspace, 7 #\"Move active window to workspace 7\""
"SUPER SHIFT, 8, movetoworkspace, 8 #\"Move active window to workspace 8\""
"SUPER SHIFT, 9, movetoworkspace, 9 #\"Move active window to workspace 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\""
",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\""
",XF86MonBrightnessUp, exec, noctalia-shell ipc call brightness increase #\"Increase screen brightness\""
];
mkBlock = header: lines:
lib.concatLines (
["# ${header}"]
++ (map (l: "bind = ${l}") lines)
);
fullConfig = lib.concatLines [
""
(mkBlock "1. MAIN APPS" mainBinds)
(mkBlock "2. SHIFT APPS" shiftBinds)
(mkBlock "3. ALT APPS" altBinds)
(mkBlock "4. CONTROL APPS" controlBinds)
(mkBlock "5. WINDOW MANAGEMENT" windowManagementBinds)
(mkBlock "6. WINDOWS FOCUS" windowFocusBinds)
(mkBlock "7. WINDOWS MOVEMENT" windowMovementBinds)
(mkBlock "8. WINDOWS SWAP" windowSwapBinds)
(mkBlock "9. WORKSPACES SWITCH" workspacesSwitchBinds)
(mkBlock "10. WORKSPACES SWAP" workspacesSwapBinds)
(mkBlock "11. SYSTEM MEDIA & CONTROLS" systemMediaAndControllsBinds)
];
in {
wayland.windowManager.hyprland.settings = {
extraConfig = fullConfig;
bindm = [
"SUPER, mouse:272, movewindow"
"SUPER, mouse:273, resizewindow"
];
};
}
+12
View File
@@ -0,0 +1,12 @@
_: {
imports = [
./animations.nix
./binds.nix
./env.nix
./exec-once.nix
./hypridle.nix
./hyprland.nix
./pyprland.nix
./windowrules.nix
];
}
+28
View File
@@ -0,0 +1,28 @@
_: {
wayland.windowManager.hyprland.settings.env = [
"NIXOS_OZONE_WL, 1"
"NIXPKGS_ALLOW_UNFREE, 1"
"XDG_CURRENT_DESKTOP, Hyprland"
"XDG_SESSION_TYPE, wayland"
"XDG_SESSION_DESKTOP, Hyprland"
"GDK_BACKEND, wayland, x11"
"CLUTTER_BACKEND, wayland"
"QT_QPA_PLATFORM=wayland;xcb"
"QT_WAYLAND_DISABLE_WINDOWDECORATION, 1"
"QT_AUTO_SCREEN_SCALE_FACTOR, 1"
"SDL_VIDEODRIVER, x11"
"MOZ_ENABLE_WAYLAND, 1"
# This is to make electron apps start in wayland
"ELECTRON_OZONE_PLATFORM_HINT,wayland"
# Disabling this by default as it can result in inop cfg
# Added card2 in case this gets enabled. For better coverage
# This is mostly needed by Hybrid laptops.
# but if you have multiple discrete GPUs this will set order
#"AQ_DRM_DEVICES,/dev/dri/card0:/dev/dri/card1:/dev/card2"
"GDK_SCALE,1"
"QT_SCALE_FACTOR,1"
"EDITOR,nano"
"TERMINAL,kitty"
"XDG_TERMINAL_EMULATOR,kitty"
];
}
+10
View File
@@ -0,0 +1,10 @@
_: {
wayland.windowManager.hyprland.settings.exec-once = [
"dbus-update-activation-environment --all --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
"systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
"systemctl --user start hyprpolkitagent"
"noctalia-shell"
"wl-paste --type text --watch cliphist store" # Saves text
"wl-paste --type image --watch cliphist store" # Saves images
];
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

+18
View File
@@ -0,0 +1,18 @@
_: {
services.hypridle = {
enable = true;
settings = {
general = {
after_sleep_cmd = "hyprctl dispatch dpms on";
ignore_dbus_inhibit = false;
};
listener = [
{
timeout = 1200;
on-timeout = "hyprctl dispatch dpms off";
on-resume = "hyprctl dispatch dpms on";
}
];
};
};
}
+153
View File
@@ -0,0 +1,153 @@
{
host,
config,
pkgs,
...
}: let
inherit (import ../../../hosts/${host}/variables.nix) extraMonitorSettings keyboardLayout;
in {
systemd.user.targets.hyprland-session.Unit.Wants = [
"xdg-desktop-autostart.target"
];
# Place Files Inside Home Directory
home.file = {
"Pictures/Wallpapers" = {
source = ../../../wallpapers;
recursive = true;
};
".face.icon".source = ./face.jpg;
".config/face.jpg".source = ./face.jpg;
};
wayland.windowManager.hyprland = {
enable = true;
package = pkgs.hyprland;
systemd = {
enable = true;
enableXdgAutostart = true;
variables = ["--all"];
};
xwayland.enable = true;
settings = {
input = {
kb_layout = "${keyboardLayout}";
kb_options = [
"grp:alt_caps_toggle"
"caps:super"
];
numlock_by_default = true;
repeat_delay = 300;
follow_mouse = 1;
float_switch_override_focus = 0;
sensitivity = 0;
touchpad = {
natural_scroll = true;
disable_while_typing = true;
scroll_factor = 0.8;
};
};
gestures = {
# workspace_swipe = 1;
# workspace_swipe_fingers = 3;
workspace_swipe_distance = 500;
workspace_swipe_invert = 1;
workspace_swipe_min_speed_to_force = 30;
workspace_swipe_cancel_ratio = 0.5;
workspace_swipe_create_new = 1;
workspace_swipe_forever = 1;
};
general = {
layout = "dwindle";
gaps_in = 6;
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})";
};
misc = {
layers_hog_keyboard_focus = true;
initial_workspace_tracking = 0;
mouse_move_enables_dpms = true;
key_press_enables_dpms = false;
disable_hyprland_logo = true;
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
# Application not responding (ANR) settings
enable_anr_dialog = true;
anr_missed_pings = 15;
};
dwindle = {
pseudotile = true;
preserve_split = true;
force_split = 2;
};
decoration = {
rounding = 10;
rounding_power = 2;
blur = {
enabled = true;
size = 5;
passes = 3;
vibrancy = 0.1696;
ignore_opacity = false;
new_optimizations = true;
};
shadow = {
enabled = true;
range = 4;
render_power = 3;
color = "rgba(1a1a1aee)";
};
};
ecosystem = {
no_donation_nag = true;
no_update_news = false;
};
cursor = {
sync_gsettings_theme = true;
no_hardware_cursors = 2; # change to 1 if want to disable
enable_hyprcursor = false;
warp_on_change_workspace = 2;
no_warps = true;
};
render = {
# Disabling as no longer supported
#explicit_sync = 1; # Change to 1 to disable
#explicit_sync_kms = 1;
direct_scanout = 0;
};
debug.full_cm_proto = true;
master = {
new_status = "master";
new_on_top = 1;
mfact = 0.5;
};
# Ensure Xwayland windows render at integer scale; compositor scales them
xwayland.force_zero_scaling = true;
};
extraConfig = "
monitor=,preferred,auto,auto
monitor=Virtual-1,1920x1080@60,auto,1
${extraMonitorSettings}
layerrule = blur on, blur_popups on, ignore_alpha 0.5, match:namespace noctalia-background-\.*$
";
};
}
+16
View File
@@ -0,0 +1,16 @@
_: {
home.file.".config/hypr/pyprland.toml".text = ''
[pyprland]
plugins = [
"scratchpads",
]
[scratchpads.term]
animation = "fromTop"
command = "kitty --class kitty-dropterm"
class = "kitty-dropterm"
size = "70% 70%"
max_size = "1920px 100%"
position = "150px 150px"
'';
}
+100
View File
@@ -0,0 +1,100 @@
_: {
wayland.windowManager.hyprland.settings.windowrule = [
# XWayland specific rules
#"noblur, xwayland:1" # Helps prevent odd borders/shadows for xwayland apps
# downside it can impact other xwayland apps
# This rule is a template for a more targeted approach
"no_blur on, match:class resolve, match:xwayland 1" # Window rule for just resolve
# Application tags
"tag +file-manager, match:class [Tt]hunar|org\.gnome\.Nautilus|[Pp]cmanfm-qt"
"tag +terminal, match:class com\.mitchellh\.ghostty|org\.wezfurlong\.wezterm|Alacritty|kitty|kitty-dropterm"
"tag +browser, match:class [Ff]irefox|org\.mozilla\.firefox|[Ff]irefox-esr"
"tag +browser, match:class [Ll]ibrewolf|io\.gitlab\.librewolf-community"
"tag +browser, match:class [Gg]oogle-chrome(-beta|-dev|-unstable)?|[Cc]hromium-browser(-beta|-dev|-unstable)?"
"tag +projects, match:class VSCode|code|code-url-handler|codium|codium-url-handler|VSCodium|VSCodium-url-handler"
"tag +projects, match:class dev\.zed\.Zed"
"tag +im, match:class [Dd]iscord|[Ww]ebCord|[Vv]esktop"
"tag +im, match:class [Ff]erdium"
"tag +im, match:class [Ss]ignal"
"tag +im, match:class [Ss]lack"
"tag +im, match:class [Tt]eams-for-linux"
"tag +games, match:class gamescope"
"tag +games, match:class ?:steam_app_\d+"
"tag +games, match:class tf_linux64"
"tag +games, match:class Minecraft\*.*"
"tag +gamestore, match:class [Ss]team"
"tag +gamestore, match:title [Ll]utris"
"tag +gamestore, match:class com\.heroicgameslauncher\.hgl"
"tag +gamestore, match:class org\.prismlauncher\.PrismLauncher"
"tag +settings, match:class gnome-disks|wihotspot(-gui)?"
"tag +settings, match:class [Rr]ofi"
"tag +settings, match:class file-roller|org\.gnome\.FileRoller"
"tag +settings, match:class nm-applet|nm-connection-editor"
"tag +settings, match:class pavucontrol|org\.pulseaudio\.pavucontrol|com\.saivert\.pwvucontrol"
"tag +settings, match:class nwg-look|qt5ct|qt6ct|[Yy]ad"
"tag +settings, match:class xdg-desktop-portal-gtk"
"tag +settings, match:class nwg-displays"
# Position and movement rules
"move 72% 7%, match:title Picture-in-Picture"
"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 .*"
"idle_inhibit fullscreen, match:title .*"
"idle_inhibit fullscreen, match:fullscreen 1"
# Float rules
"float on, match:class [Ww]aypaper"
"float on, match:tag settings*"
"float on, match:title Picture-in-Picture"
"float on, match:title Authentication Required"
"float on, match:title War in Tunnels"
"float on, match:class codium|codium-url-handler|VSCodium, match:title negative:.*(?:codium|VSCodium).*"
"float on, match:class com\.heroicgameslauncher\.hgl, match:title negative Heroic Games Launcher"
"float on, match:class [Ss]team, match:title negative:[Ss]team"
"float on, match:class [Tt]hunar, match:title negative:.*[Tt]hunar.*"
"float on, match:class galculator"
"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"
"tile on, match:class dev\.zed\.Zed"
"tile on, match:class mpv"
"tile on, match:class com-cburch-logisim-Main"
# Opacity rules
"opacity 1.0 1.0, match:tag browser*"
"opacity 0.9 0.8, match:tag projects*"
"opacity 0.94 0.86, match:tag im*"
"opacity 0.85 0.75, match:tag gamestore*"
"opacity 0.9 0.8, match:tag file-manager*"
"opacity 0.8 0.7, match:tag terminal*"
"opacity 0.8 0.7, match:tag settings*"
"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"
"keep_aspect_ratio on, match:title Picture-in-Picture"
# Games specific rules
"no_blur on, match:tag games*"
"fullscreen on, match:tag games*"
];
}
+16
View File
@@ -0,0 +1,16 @@
{
pkgs,
lib,
config,
...
}: {
options.kdeconnect.enable = lib.mkEnableOption "KDE Connect";
config = {
services.kdeconnect = lib.mkIf config.kdeconnect.enable {
enable = true;
indicator = false;
package = pkgs.kdePackages.kdeconnect-kde;
};
};
}
+11
View File
@@ -0,0 +1,11 @@
{pkgs, ...}: {
programs.kitty = {
enable = true;
package = pkgs.kitty;
};
imports = [
./extra-config.nix
./settings.nix
];
}
+52
View File
@@ -0,0 +1,52 @@
_: {
programs.kitty.extraConfig = ''
# Clipboard
map ctrl+shift+v paste_from_selection
map shift+insert paste_from_selection
# Scrolling
map ctrl+shift+up scroll_line_up
map ctrl+shift+down scroll_line_down
map ctrl+shift+k scroll_line_up
map ctrl+shift+j scroll_line_down
map ctrl+shift+page_up scroll_page_up
map ctrl+shift+page_down scroll_page_down
map ctrl+shift+home scroll_home
map ctrl+shift+end scroll_end
map ctrl+shift+h show_scrollback
# Window management
map alt+n new_window_with_cwd #open in current dir
#map alt+n new_os_window #opens term in $HOME
map alt+w close_window
map ctrl+shift+enter launch --location=hsplit
map ctrl+shift+s launch --location=vsplit
map ctrl+shift+] next_window
map ctrl+shift+[ previous_window
map ctrl+shift+f move_window_forward
map ctrl+shift+b move_window_backward
map ctrl+shift+` move_window_to_top
map ctrl+shift+1 first_window
map ctrl+shift+2 second_window
map ctrl+shift+3 third_window
map ctrl+shift+4 fourth_window
map ctrl+shift+5 fifth_window
map ctrl+shift+6 sixth_window
map ctrl+shift+7 seventh_window
map ctrl+shift+8 eighth_window
map ctrl+shift+9 ninth_window # Tab management
map ctrl+shift+0 tenth_window
map ctrl+shift+right next_tab
map ctrl+shift+left previous_tab
map ctrl+shift+t new_tab
map ctrl+shift+q close_tab
map ctrl+shift+l next_layout
map ctrl+shift+. move_tab_forward
map ctrl+shift+, move_tab_backward
# Miscellaneous
map ctrl+shift+up increase_font_size
map ctrl+shift+down decrease_font_size
map ctrl+shift+backspace restore_font_size
'';
}
+20
View File
@@ -0,0 +1,20 @@
_: {
programs.kitty.settings = {
font_size = 12;
wheel_scroll_min_lines = 1;
window_padding_width = 4;
confirm_os_window_close = 0;
scrollback_lines = 10000;
enable_audio_bell = false;
mouse_hide_wait = 60;
cursor_trail = 1;
tab_fade = 1;
active_tab_font_style = "bold";
inactive_tab_font_style = "bold";
tab_bar_edge = "top";
tab_bar_margin_width = 0;
tab_bar_style = "powerline";
#tab_bar_style = "fade";
enabled_layouts = "splits";
};
}
+31
View File
@@ -0,0 +1,31 @@
{
pkgs,
lib,
config,
...
}: {
options.librewolf.enable = lib.mkEnableOption "LibreWolf";
config.programs.librewolf = lib.mkIf config.librewolf.enable {
enable = true;
package = pkgs.librewolf;
# nativeMessagingHosts = [pkgs.firefoxpwa];
languagePacks = [
"pl"
"en-US"
];
settings = {
# LibreWolf settings
"network.http.referer.XOriginPolicy" = 2;
"privacy.resistFingerprinting.letterboxing" = true;
"privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts" = true;
};
policies = {
# Policies (about:policies#documentation)
};
};
imports = [
./profiles
];
}
@@ -0,0 +1,13 @@
{host, ...}: {
programs.librewolf.profiles."${host}" = {
id = 0;
isDefault = true;
name = "${host}";
};
imports = [
./extensions.nix
./search.nix
./settings.nix
];
}
@@ -0,0 +1,22 @@
{
inputs,
system,
host,
...
}: {
# about:debugging#/runtime/this-firefox Przydatne do wyszukiwania ID rozszerzenia
# programs.librewolf.profiles."${host}".extensions.force = true;
programs.librewolf.profiles."${host}".extensions.packages = with inputs.firefox-addons.packages.${system}; [
bitwarden
floccus
ublock-origin
sponsorblock
darkreader
# flagfox
hoppscotch
return-youtube-dislikes
sponsorblock
# pwas-for-firefox
mtab
];
}
+210
View File
@@ -0,0 +1,210 @@
{
pkgs,
host,
...
}: {
programs.librewolf.profiles."${host}".search = {
default = "garand's-search";
privateDefault = "garand's-search";
force = true;
engines = {
"garand's-search" = {
definedAliases = ["@g"];
urls = [{template = "https://search.garandplg.com/search?q={searchTerms}";}];
# suggestUrl = "https://search.garandplg.com/autocompleter?q={searchTerms}"; Not implemented in home-manager ☹️
};
"youtube" = {
definedAliases = ["@yt"];
urls = [
{
template = "https://www.youtube.com/results";
params = [
{
name = "search_query";
value = "{searchTerms}";
}
];
}
];
};
"wikipedia-pl" = {
definedAliases = ["@w"];
urls = [
{
template = "https://pl.wikipedia.org/w/index.php";
params = [
{
name = "search";
value = "{searchTerms}";
}
];
}
];
};
"stackoverflow" = {
definedAliases = ["@so"];
urls = [
{
template = "https://stackoverflow.com/search";
params = [
{
name = "q";
value = "{searchTerms}";
}
];
}
];
};
"nix-packages" = {
definedAliases = ["@np"];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
urls = [
{
template = "https://search.nixos.org/packages?channel=unstable";
params = [
{
name = "query";
value = "{searchTerms}";
}
];
}
];
};
"nix-options" = {
definedAliases = ["@no"];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
urls = [
{
template = "https://search.nixos.org/options?channel=unstable&query={searchTerms}";
}
];
};
"nix-wiki" = {
definedAliases = ["@nw"];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
urls = [
{
template = "https://wiki.nixos.org/w/index.php";
params = [
{
name = "search";
value = "{searchTerms}";
}
];
}
];
};
"home-manager-option" = {
definedAliases = ["@hmo"];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
urls = [
{
template = "https://home-manager-options.extranix.com/?query={searchTerms}&release=master";
}
];
};
"eneba" = {
definedAliases = ["@en"];
icon = "https://static.eneba.games/branding/v2/logoFull.svg";
urls = [
{
template = "https://www.eneba.com/pl/store/all";
params = [
{
name = "text";
value = "{searchTerms}";
}
];
}
];
};
"kinguin" = {
definedAliases = ["@ki"];
icon = "https://static.kinguin.net/media/images/other/kinguin-mobile-logo.svg";
urls = [
{
template = "https://www.kinguin.net/listing?active=1&hideUnavailable=0&type=kinguin";
params = [
{
name = "phrase";
value = "{searchTerms}";
}
];
}
];
};
"instant-gaming" = {
definedAliases = ["@ig"];
icon = "https://asset.brandfetch.io/idCbLj4uOg/idGS61T0FV.jpeg";
urls = [
{
template = "https://www.instant-gaming.com/pl/search/";
params = [
{
name = "q";
value = "{searchTerms}";
}
];
}
];
};
"morele" = {
definedAliases = ["@mo"];
icon = "https://www.morele.net/static/img/shop/logo/image-logo-morele.svg";
urls = [
{
template = "https://www.morele.net/wyszukiwarka/";
params = [
{
name = "q";
value = "{searchTerms}";
}
];
}
];
};
"x-kom" = {
definedAliases = ["@xk"];
icon = "https://assets.x-kom.pl/public-spa/xkom/75062cb4b48a8510.svg";
urls = [
{
template = "https://www.x-kom.pl/szukaj";
params = [
{
name = "q";
value = "{searchTerms}";
}
];
}
];
};
"komputronik" = {
definedAliases = ["@kp"];
icon = "https://front.komputronik.pl/front-static/komputronik.Ceqagame-a.svg";
urls = [
{
template = "https://www.komputronik.pl/search/category/1";
params = [
{
name = "query";
value = "{searchTerms}";
}
];
}
];
};
"google".metaData.hidden = true;
"bing".metaData.hidden = true;
"perplexity".metaData.hidden = true;
"wolnelektury-pl".metaData.hidden = true;
"policy-DuckDuckGo Lite".metaData.hidden = true;
"policy-MetaGer".metaData.hidden = true;
"policy-Mojeek".metaData.hidden = true;
"policy-SearXNG - searx.be".metaData.hidden = true;
"policy-StartPage".metaData.hidden = true;
"allegro-pl".metaData.alias = "@al";
};
};
}

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