Add host modules and home options; update README

This commit is contained in:
2025-11-24 01:38:45 +01:00
parent 196db56791
commit d951277cec
48 changed files with 982 additions and 404 deletions

View File

@@ -191,22 +191,35 @@ git add .
- `waybarChoice` - system top bar style. - `waybarChoice` - system top bar style.
- `animChoice` - system animation style. - `animChoice` - system animation style.
### 5. Copy the ready `hardware-configuration.nix` to host folder: ### 5. Review module activation options
Open the module files for your host and adjust the `enable` options for the services you need:
```bash
# Homemodules (enable/disable home-scoped applications)
nano hosts/<your-system-hostname>/home-modules.nix
# Systemmodules (enable/disable systemwide services)
nano hosts/<your-system-hostname>/system-modules.nix
```
Set the options to `true` for the components you want active and `false` for those you dont need.
### 6. Copy the ready `hardware-configuration.nix` to host folder:
```bash ```bash
sudo cp /etc/nixos/hardware-configuration.nix hosts/<your-system-hostname>/hardware.nix sudo cp /etc/nixos/hardware-configuration.nix hosts/<your-system-hostname>/hardware.nix
``` ```
### 6. Enable `Flake` functionality in your system. ### 7. Enable `Flake` functionality in your system.
```bash ```bash
NIX_CONFIG="experimental-features = nix-command flakes" NIX_CONFIG="experimental-features = nix-command flakes"
``` ```
### 7. Build system (provide your hostname) ### 8. Build system (provide your hostname)
```bash ```bash
sudo nixos-rebuild switch --flake .#your-system-hostname sudo nixos-rebuild switch --flake .#your-system-hostname
``` ```
### 8. After system rebuild you can use the following aliases instead of repeating the previous command ### 9. After system rebuild you can use the following aliases instead of repeating the previous command
- `pullos` - pull latest commits from my repository. - `pullos` - pull latest commits from my repository.
- `upd` - rebuild system. - `upd` - rebuild system.

12
flake.lock generated
View File

@@ -143,11 +143,11 @@
}, },
"locked": { "locked": {
"dir": "pkgs/firefox-addons", "dir": "pkgs/firefox-addons",
"lastModified": 1763784262, "lastModified": 1763929296,
"narHash": "sha256-bg+MOwWA4GgsHQ2QZQHCixIs0ouPHvN1EVAzMTELPiQ=", "narHash": "sha256-mFTtmYp1gs1y8O9GKGsMWoMCXL5RLejUivBSRbRO34Y=",
"owner": "rycee", "owner": "rycee",
"repo": "nur-expressions", "repo": "nur-expressions",
"rev": "a717a95e58c8dfdb3d07797b97fdedc97697d65c", "rev": "84c6e18e927e4d3281a9afd70bcc0e4cafd8720d",
"type": "gitlab" "type": "gitlab"
}, },
"original": { "original": {
@@ -324,11 +324,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1763845215, "lastModified": 1763906693,
"narHash": "sha256-8W4YByiS3zxwcdDR2sABm1nUCSOEXJwdY/XddRTVjWM=", "narHash": "sha256-inm7paa3myo8gE4TzjM8OPvsEg8xocWreIZBgBPEKgo=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "9a5042a88caea9b729a1d3bc981069159de4fc49", "rev": "3d6c1c8fa0bea3a1a7ba23d6fa5993116766073b",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@@ -2,5 +2,6 @@ _: {
imports = [ imports = [
./hardware.nix ./hardware.nix
./host-packages.nix ./host-packages.nix
./system-modules.nix
]; ];
} }

View File

@@ -0,0 +1,66 @@
_: {
/*
Development editors and IDEs
*/
# VSCodium: a free and open-source "demicrosofted" VSCode
vscodium.enable = false;
# Zed Editor: a modern, highperformance code editor
zed-editor = {
# Enable Zed Editor
enable = true;
# Remote Server: enable remote editing capabilities
remote-server = true;
};
/*
Web browsers
*/
# Librewolf: a privacy-focused Firefox fork
librewolf.enable = true;
# Ungoogled Chromium: a privacy-focused Chromium fork
ungoogled-chromium.enable = true;
/*
System utilities
*/
# Btop: a resource monitor for the terminal
btop.enable = true;
# Cava: terminal audio visualizer
cava.enable = false;
# Fastfetch: a fast system information tool
fastfetch.enable = true;
/*
Communication and synchronization
*/
# KDE Connect: integrate your phone and desktop
kdeconnect.enable = false;
# Nextcloud Client: sync files with a Nextcloud server
nextcloud-client.enable = true;
# Vesktop: a communitydriven Discord client
vesktop.enable = true;
/*
Gaming
*/
# Lutris: an open gaming platform
lutris.enable = false;
/*
Media recording and streaming
*/
# OBS Studio: streaming and recording software
obs-studio.enable = false;
/*
Office suite
*/
# OnlyOffice: an office suite compatible with Microsoft formats
onlyoffice.enable = true;
/*
Learning tools
*/
# Anki: spacedrepetition flashcard program
anki.enable = true;
}

View File

@@ -0,0 +1,87 @@
_: {
/*
Container & Packaging
*/
# Docker: container runtime and management
docker.enable = true;
# Distrobox: containerized development environments
distrobox.enable = false;
# Flatpak: universal packaging system for Linux
flatpak.enable = true;
# Lazydocker: simple TUI for Docker
lazydocker.enable = false;
/*
Gaming
*/
# GameMode: optimizes system performance for gaming
gamemode.enable = true;
# Gamescope: micro-compositor for games
gamescope.enable = false;
# Prism Launcher: Minecraft modded launcher
prismlauncher.enable = false;
# Steam: platform for buying and playing games
steam.enable = true;
# SpaceCadet Pinball: classic pinball game
spaceCadetPinball.enable = true;
# TTY Solitaire: terminal based solitaire game
ttySolitaire.enable = true;
/*
Development Tools
*/
# Exercism: coding practice platform
exercism.enable = true;
# Gedit: GNOME text editor
gedit.enable = false;
# Lazygit: simple TUI for git
lazygit.enable = false;
# OpenCode: tools for coding and development
opencode.enable = true;
/*
Communication & Collaboration
*/
# Mattermost: open-source Slack alternative
mattermost.enable = true;
# Slack: team communication and collaboration tool
slack.enable = true;
# Tutanota: secure email client
tutanota.enable = true;
/*
Productivity / Knowledge Management
*/
# Bitwarden: password manager (desktop)
bitwarden.enable = false;
# Iotas: lightweight notes manager
iotas.enable = true;
# Logseq: knowledge base and outliner
logseq.enable = false;
/*
Media & Graphics
*/
# Affinity: professional graphics suite
affinity.enable = false;
# Eye of GNOME: image viewer
eyeOfGnome.enable = true;
# FreeTube: privacyfriendly YouTube client
freetube.enable = false;
# GIMP: gnu image manipulation program
gimp.enable = false;
# Kdenlive: video editing software
kdenlive.enable = false;
# Plex: media player and server client
plex.enable = true;
/*
Utilities / Misc
*/
# Eddie AirVPN: VPN client
eddieAirVPN.enable = true;
# Galculator: simple calculator
galculator.enable = true;
# Winboat: Windows remote desktop via RDP
winboat.enable = false;
}

View File

@@ -2,5 +2,6 @@ _: {
imports = [ imports = [
./hardware.nix ./hardware.nix
./host-packages.nix ./host-packages.nix
./system-modules.nix
]; ];
} }

View File

@@ -0,0 +1,66 @@
_: {
/*
Development editors and IDEs
*/
# VSCodium: a free and open-source "demicrosofted" VSCode
vscodium.enable = false;
# Zed Editor: a modern, highperformance code editor
zed-editor = {
# Enable Zed Editor
enable = true;
# Remote Server: enable remote editing capabilities
remote-server = true;
};
/*
Web browsers
*/
# Librewolf: a privacy-focused Firefox fork
librewolf.enable = true;
# Ungoogled Chromium: a privacy-focused Chromium fork
ungoogled-chromium.enable = true;
/*
System utilities
*/
# Btop: a resource monitor for the terminal
btop.enable = true;
# Cava: terminal audio visualizer
cava.enable = false;
# Fastfetch: a fast system information tool
fastfetch.enable = true;
/*
Communication and synchronization
*/
# KDE Connect: integrate your phone and desktop
kdeconnect.enable = false;
# Nextcloud Client: sync files with a Nextcloud server
nextcloud-client.enable = true;
# Vesktop: a communitydriven Discord client
vesktop.enable = true;
/*
Gaming
*/
# Lutris: an open gaming platform
lutris.enable = false;
/*
Media recording and streaming
*/
# OBS Studio: streaming and recording software
obs-studio.enable = false;
/*
Office suite
*/
# OnlyOffice: an office suite compatible with Microsoft formats
onlyoffice.enable = true;
/*
Learning tools
*/
# Anki: spacedrepetition flashcard program
anki.enable = true;
}

View File

@@ -0,0 +1,87 @@
_: {
/*
Container & Packaging
*/
# Docker: container runtime and management
docker.enable = true;
# Distrobox: containerized development environments
distrobox.enable = false;
# Flatpak: universal packaging system for Linux
flatpak.enable = true;
# Lazydocker: simple TUI for Docker
lazydocker.enable = false;
/*
Gaming
*/
# GameMode: optimizes system performance for gaming
gamemode.enable = true;
# Gamescope: micro-compositor for games
gamescope.enable = false;
# Prism Launcher: Minecraft modded launcher
prismlauncher.enable = false;
# Steam: platform for buying and playing games
steam.enable = true;
# SpaceCadet Pinball: classic pinball game
spaceCadetPinball.enable = true;
# TTY Solitaire: terminal based solitaire game
ttySolitaire.enable = true;
/*
Development Tools
*/
# Exercism: coding practice platform
exercism.enable = true;
# Gedit: GNOME text editor
gedit.enable = false;
# Lazygit: simple TUI for git
lazygit.enable = false;
# OpenCode: tools for coding and development
opencode.enable = true;
/*
Communication & Collaboration
*/
# Mattermost: open-source Slack alternative
mattermost.enable = true;
# Slack: team communication and collaboration tool
slack.enable = true;
# Tutanota: secure email client
tutanota.enable = true;
/*
Productivity / Knowledge Management
*/
# Bitwarden: password manager (desktop)
bitwarden.enable = false;
# Iotas: lightweight notes manager
iotas.enable = true;
# Logseq: knowledge base and outliner
logseq.enable = false;
/*
Media & Graphics
*/
# Affinity: professional graphics suite
affinity.enable = false;
# Eye of GNOME: image viewer
eyeOfGnome.enable = true;
# FreeTube: privacyfriendly YouTube client
freetube.enable = false;
# GIMP: gnu image manipulation program
gimp.enable = false;
# Kdenlive: video editing software
kdenlive.enable = false;
# Plex: media player and server client
plex.enable = true;
/*
Utilities / Misc
*/
# Eddie AirVPN: VPN client
eddieAirVPN.enable = true;
# Galculator: simple calculator
galculator.enable = true;
# Winboat: Windows remote desktop via RDP
winboat.enable = false;
}

View File

@@ -2,5 +2,6 @@ _: {
imports = [ imports = [
./hardware.nix ./hardware.nix
./host-packages.nix ./host-packages.nix
./system-modules.nix
]; ];
} }

View File

@@ -0,0 +1,66 @@
_: {
/*
Development editors and IDEs
*/
# VSCodium: a free and open-source "demicrosofted" VSCode
vscodium.enable = false;
# Zed Editor: a modern, highperformance code editor
zed-editor = {
# Enable Zed Editor
enable = true;
# Remote Server: enable remote editing capabilities
remote-server = true;
};
/*
Web browsers
*/
# Librewolf: a privacy-focused Firefox fork
librewolf.enable = true;
# Ungoogled Chromium: a privacy-focused Chromium fork
ungoogled-chromium.enable = true;
/*
System utilities
*/
# Btop: a resource monitor for the terminal
btop.enable = true;
# Cava: terminal audio visualizer
cava.enable = false;
# Fastfetch: a fast system information tool
fastfetch.enable = true;
/*
Communication and synchronization
*/
# KDE Connect: integrate your phone and desktop
kdeconnect.enable = false;
# Nextcloud Client: sync files with a Nextcloud server
nextcloud-client.enable = true;
# Vesktop: a communitydriven Discord client
vesktop.enable = true;
/*
Gaming
*/
# Lutris: an open gaming platform
lutris.enable = false;
/*
Media recording and streaming
*/
# OBS Studio: streaming and recording software
obs-studio.enable = false;
/*
Office suite
*/
# OnlyOffice: an office suite compatible with Microsoft formats
onlyoffice.enable = true;
/*
Learning tools
*/
# Anki: spacedrepetition flashcard program
anki.enable = true;
}

View File

@@ -0,0 +1,87 @@
_: {
/*
Container & Packaging
*/
# Docker: container runtime and management
docker.enable = true;
# Distrobox: containerized development environments
distrobox.enable = false;
# Flatpak: universal packaging system for Linux
flatpak.enable = true;
# Lazydocker: simple TUI for Docker
lazydocker.enable = false;
/*
Gaming
*/
# GameMode: optimizes system performance for gaming
gamemode.enable = true;
# Gamescope: micro-compositor for games
gamescope.enable = false;
# Prism Launcher: Minecraft modded launcher
prismlauncher.enable = false;
# Steam: platform for buying and playing games
steam.enable = true;
# SpaceCadet Pinball: classic pinball game
spaceCadetPinball.enable = true;
# TTY Solitaire: terminal based solitaire game
ttySolitaire.enable = true;
/*
Development Tools
*/
# Exercism: coding practice platform
exercism.enable = true;
# Gedit: GNOME text editor
gedit.enable = false;
# Lazygit: simple TUI for git
lazygit.enable = false;
# OpenCode: tools for coding and development
opencode.enable = true;
/*
Communication & Collaboration
*/
# Mattermost: open-source Slack alternative
mattermost.enable = true;
# Slack: team communication and collaboration tool
slack.enable = true;
# Tutanota: secure email client
tutanota.enable = true;
/*
Productivity / Knowledge Management
*/
# Bitwarden: password manager (desktop)
bitwarden.enable = false;
# Iotas: lightweight notes manager
iotas.enable = true;
# Logseq: knowledge base and outliner
logseq.enable = false;
/*
Media & Graphics
*/
# Affinity: professional graphics suite
affinity.enable = false;
# Eye of GNOME: image viewer
eyeOfGnome.enable = true;
# FreeTube: privacyfriendly YouTube client
freetube.enable = false;
# GIMP: gnu image manipulation program
gimp.enable = false;
# Kdenlive: video editing software
kdenlive.enable = false;
# Plex: media player and server client
plex.enable = true;
/*
Utilities / Misc
*/
# Eddie AirVPN: VPN client
eddieAirVPN.enable = true;
# Galculator: simple calculator
galculator.enable = true;
# Winboat: Windows remote desktop via RDP
winboat.enable = false;
}

View File

@@ -3,6 +3,7 @@
./packages ./packages
./auto-cpufreq.nix ./auto-cpufreq.nix
./boot.nix ./boot.nix
./docker.nix
./flatpak.nix ./flatpak.nix
./fonts.nix ./fonts.nix
./hardware.nix ./hardware.nix
@@ -19,7 +20,6 @@
./system.nix ./system.nix
./thunar.nix ./thunar.nix
./user.nix ./user.nix
./virtualisation.nix
./xdg.nix ./xdg.nix
./xserver.nix ./xserver.nix
inputs.stylix.nixosModules.stylix inputs.stylix.nixosModules.stylix

14
modules/core/docker.nix Normal file
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"];
};
}

View File

@@ -1,13 +1,17 @@
_: { {
services = { lib,
flatpak = { config,
...
}: {
options.flatpak.enable = lib.mkEnableOption "Flatpak";
config.services.flatpak = lib.mkIf config.flatpak.enable {
enable = true; enable = true;
update.onActivation = true;
packages = [ packages = [
# "org.vinegarhq.Sober" # "org.vinegarhq.Sober"
"io.github.flattool.Warehouse" "io.github.flattool.Warehouse"
"com.github.tchx84.Flatseal" "com.github.tchx84.Flatseal"
]; ];
update.onActivation = true;
};
}; };
} }

View File

@@ -1,17 +0,0 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
# Communication
slack
mattermost-desktop
# Productivity & Office
# bitwarden-desktop
tutanota-desktop
iotas
# logseq
# Utilities
galculator
gedit
eddie
gnome-text-editor
];
}

View File

@@ -1,13 +1,8 @@
_: { _: {
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
imports = [ imports = [
./essentials.nix
./packages.nix
./programs.nix ./programs.nix
./clients.nix
./development.nix
./gaming.nix
./multimedia.nix
./terminal.nix
./tools.nix
./virtualization.nix
]; ];
} }

View File

@@ -1,8 +0,0 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
# Learning & practice
exercism
# AI coding
opencode
];
}

View File

@@ -1,5 +1,12 @@
{pkgs, ...}: { {pkgs, ...}: {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
mpv
pavucontrol
playerctl
cmatrix
cowsay
sl
fortune
# File management # File management
trash-cli trash-cli
file-roller file-roller

View File

@@ -1,12 +0,0 @@
{
pkgs,
# inputs,
# system,
...
}: {
environment.systemPackages = with pkgs; [
# inputs.prismlauncher-cracked.packages.${system}.default
space-cadet-pinball
tty-solitaire
];
}

View File

@@ -1,26 +0,0 @@
{
pkgs,
# inputs,
# system,
...
}: {
environment.systemPackages = with pkgs; [
# Video & image processing
ffmpeg
ffmpegthumbnailer
mpv
# gimp3
# inputs.affinity-nix.packages.${system}.v3
eog
# kdePackages.kdenlive
# Audio
rhythmbox
plexamp
picard
pavucontrol
playerctl
# Media downloaders & clients
# freetube
# ytmdl
];
}

View File

@@ -0,0 +1,47 @@
{
pkgs,
lib,
config,
inputs,
system,
...
}: let
mkPackage = name: pkgsOrList: {
options.${name}.enable = lib.mkEnableOption name;
config.environment.systemPackages =
lib.mkIf config.${name}.enable
(lib.toList pkgsOrList);
};
packages = with pkgs; {
bitwarden = bitwarden-desktop;
eddieAirVPN = eddie;
galculator = galculator;
gedit = gedit;
iotas = iotas;
logseq = logseq;
mattermost = mattermost-desktop;
slack = slack;
tutanota = tutanota-desktop;
exercism = exercism;
opencode = opencode;
lazygit = lazygit;
prismlauncher = inputs.prismlauncher-cracked.packages.${system}.default;
spaceCadetPinball = space-cadet-pinball;
ttySolitaire = tty-solitaire;
gimp = gimp;
affinity = inputs.affinity-nix.packages.${system}.v3;
eyeOfGnome = eog;
kdenlive = kdePackages.kdenlive;
plex = [
(plex-desktop.override {extraEnv = {QT_QPA_PLATFORM = "xcb";};})
plexamp
];
freetube = freetube;
lazydocker = lazydocker;
distrobox = [distrobox pkgs.boxbuddy];
winboat = [winboat freerdp];
};
in {
imports = builtins.attrValues (builtins.mapAttrs mkPackage packages);
}

View File

@@ -1,10 +0,0 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
cmatrix
cowsay
sl
fortune
lolcat
eza
];
}

View File

@@ -1,11 +0,0 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
virt-viewer
# lazydocker
docker-client
# distrobox
# boxbuddy
# freerdp
# winboat
];
}

View File

@@ -1,20 +1,43 @@
{pkgs, ...}: { {
programs = { pkgs,
steam = { 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; enable = true;
package = pkgs.steam;
remotePlay.openFirewall = true; remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true; dedicatedServer.openFirewall = true;
gamescopeSession.enable = true; gamescopeSession = lib.mkIf config.gamescope.enable {
enable = true;
args = [
"--rt"
"--expose-wayland"
];
};
extraCompatPackages = [pkgs.proton-ge-bin]; extraCompatPackages = [pkgs.proton-ge-bin];
}; };
# gamescope = {
# enable = true; gamescope = lib.mkIf config.gamescope.enable {
# capSysNice = true; enable = true;
# args = [ capSysNice = true;
# "--rt" args = [
# "--expose-wayland" "--rt"
# ]; "--expose-wayland"
# }; ];
gamemode.enable = true; };
gamemode = lib.mkIf config.gamemode.enable {
enable = true;
enableRenice = true;
};
}; };
} }

View File

@@ -1,11 +1,9 @@
{pkgs, ...}: { {pkgs, ...}: {
programs = { programs.thunar = {
thunar = {
enable = true; enable = true;
plugins = with pkgs.xfce; [ plugins = with pkgs.xfce; [
thunar-archive-plugin thunar-archive-plugin
thunar-volman thunar-volman
]; ];
}; };
};
} }

View File

@@ -24,7 +24,7 @@ in {
; ;
}; };
users.${username} = { users.${username} = {
imports = [./../home]; imports = [./../home ../../hosts/${host}/home-modules.nix];
home = { home = {
username = "${username}"; username = "${username}";
homeDirectory = "/home/${username}"; homeDirectory = "/home/${username}";
@@ -32,8 +32,9 @@ in {
}; };
}; };
}; };
users.mutableUsers = true; users = {
users.users.${username} = { mutableUsers = true;
users.${username} = {
isNormalUser = true; isNormalUser = true;
description = "${gitUsername}"; description = "${gitUsername}";
extraGroups = [ extraGroups = [
@@ -49,6 +50,8 @@ in {
]; ];
shell = pkgs.bash; shell = pkgs.bash;
ignoreShellProgramCheck = true; ignoreShellProgramCheck = true;
linger = true;
};
}; };
nix.settings.allowed-users = ["${username}"]; nix.settings.allowed-users = ["${username}"];
} }

View File

@@ -1,15 +0,0 @@
_: {
# Only enable either docker or podman -- Not both
virtualisation = {
docker.enable = true;
podman.enable = false;
libvirtd.enable = true;
virtualbox.host = {
enable = false;
enableExtensionPack = true;
};
};
programs.virt-manager.enable = false;
}

View File

@@ -7,5 +7,6 @@
xdg-desktop-portal-gtk xdg-desktop-portal-gtk
]; ];
configPackages = [pkgs.hyprland]; configPackages = [pkgs.hyprland];
xdgOpenUsePortal = true;
}; };
} }

View File

@@ -1,9 +1,13 @@
{ {
pkgs, pkgs,
username, username,
lib,
config,
... ...
}: { }: {
programs.anki = { options.anki.enable = lib.mkEnableOption "Anki";
config.programs.anki = lib.mkIf config.anki.enable {
enable = true; enable = true;
package = pkgs.anki; package = pkgs.anki;
language = "pl_PL"; language = "pl_PL";

View File

@@ -1,5 +1,12 @@
{pkgs, ...}: { {
programs.btop = { pkgs,
lib,
config,
...
}: {
options.btop.enable = lib.mkEnableOption "Btop";
config.programs.btop = lib.mkIf config.btop.enable {
enable = true; enable = true;
package = pkgs.btop.override { package = pkgs.btop.override {
rocmSupport = true; rocmSupport = true;

View File

@@ -1,6 +1,12 @@
_: { {
programs.cava = { lib,
enable = false; config,
...
}: {
options.cava.enable = lib.mkEnableOption "Cava";
config.programs.cava = lib.mkIf config.cava.enable {
enable = true;
settings = { settings = {
general = { general = {
bar_spacing = 1; bar_spacing = 1;

View File

@@ -1,5 +1,12 @@
{pkgs, ...}: { {
programs.chromium = { pkgs,
lib,
config,
...
}: {
options.ungoogled-chromium.enable = lib.mkEnableOption "Ungoogled Chromium";
config.programs.chromium = lib.mkIf config.ungoogled-chromium.enable {
enable = true; enable = true;
package = pkgs.ungoogled-chromium; package = pkgs.ungoogled-chromium;
# commandLineArgs = [ ]; # commandLineArgs = [ ];

View File

@@ -1,184 +1,17 @@
{ {
programs.fastfetch = { pkgs,
lib,
config,
...
}: {
options.fastfetch.enable = lib.mkEnableOption "FastFetch";
config.programs.fastfetch = lib.mkIf config.fastfetch.enable {
enable = true; enable = true;
package = pkgs.fastfetch;
settings = {
display = {
color = {
keys = "35";
output = "90";
};
separator = " ";
}; };
logo = { imports = [
source = ./garandos.png; ./settings
type = "kitty-direct";
height = 15;
width = 30;
padding = {
top = 3;
left = 3;
};
};
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"
]; ];
};
};
} }

View File

@@ -0,0 +1,7 @@
_: {
imports = [
./display.nix
./logo.nix
./modules.nix
];
}

View File

@@ -0,0 +1,9 @@
_: {
programs.fastfetch.settings.display = {
color = {
keys = "35";
output = "90";
};
separator = " ";
};
}

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;
};
};
}

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"
];
}

View File

@@ -12,14 +12,19 @@ in {
# APLIKACJE - GŁÓWNE # APLIKACJE - GŁÓWNE
# ============================================================================= # =============================================================================
"$modifier, A, exec, anki" "$modifier, A, exec, anki"
"$modifier, B, exec, bitwarden"
"$modifier, C, exec, chromium" "$modifier, C, exec, chromium"
"$modifier, D, exec, vesktop" "$modifier, D, exec, vesktop"
"$modifier, G, exec, affinity-v3"
"$modifier, I, exec, iotas" "$modifier, I, exec, iotas"
"$modifier, L, exec, logseq"
"$modifier, M, exec, plexamp" "$modifier, M, exec, plexamp"
"$modifier, N, exec, dex ${desktopEntriesPath}/garandcloud.desktop" "$modifier, N, exec, dex ${desktopEntriesPath}/garandcloud.desktop"
"$modifier, O, exec, obs"
"$modifier, Return, exec, ${terminal}" "$modifier, Return, exec, ${terminal}"
"$modifier, S, exec, steam" "$modifier, S, exec, steam"
"$modifier, T, exec, thunar" "$modifier, T, exec, thunar"
"$modifier, V, exec, codium"
"$modifier, W, exec, ${browser}" "$modifier, W, exec, ${browser}"
"$modifier, Z, exec, zeditor" "$modifier, Z, exec, zeditor"
@@ -42,11 +47,12 @@ in {
"$modifier ALT, G, exec, dex ${desktopEntriesPath}/glance.desktop" "$modifier ALT, G, exec, dex ${desktopEntriesPath}/glance.desktop"
"$modifier ALT, M, exec, dex ${desktopEntriesPath}/mastodon.desktop" "$modifier ALT, M, exec, dex ${desktopEntriesPath}/mastodon.desktop"
"$modifier ALT, S, exec, slack" "$modifier ALT, S, exec, slack"
"$modifier ALT, T, exec, gnome-text-editor" "$modifier ALT, T, exec, gedit"
# ============================================================================= # =============================================================================
# APLIKACJE - Z CONTROL # APLIKACJE - Z CONTROL
# ============================================================================= # =============================================================================
"$modifier CONTROL, G, exec, gimp"
"$modifier CONTROL, M, exec, mattermost-desktop" "$modifier CONTROL, M, exec, mattermost-desktop"
# ============================================================================= # =============================================================================
@@ -142,12 +148,6 @@ in {
# ============================================================================= # =============================================================================
# NIEUŻYWANE KEYBINDY # NIEUŻYWANE KEYBINDY
# ============================================================================= # =============================================================================
# "$modifier, B, exec, bitwarden"
# "$modifier, G, exec, affinity-v3"
# "$modifier, L, exec, logseq"
# "$modifier, O, exec, obs"
# "$modifier, V, exec, codium"
# "$modifier SHIFT, N, exec, swaync-client -rs" # "$modifier SHIFT, N, exec, swaync-client -rs"
# "$modifier, P, pseudo," # "$modifier, P, pseudo,"
# "$modifier SHIFT,F, togglefloating," # "$modifier SHIFT,F, togglefloating,"

View File

@@ -54,7 +54,7 @@ _: {
"float, tag:settings*" "float, tag:settings*"
"float, class:^([Ff]erdium)$" "float, class:^([Ff]erdium)$"
"float, title:^(Picture-in-Picture)$" "float, title:^(Picture-in-Picture)$"
"float, class:^(mpv|com.github.rafostar.Clapper)$" "float, class:^(mpv)$"
"float, title:^(Authentication Required)$" "float, title:^(Authentication Required)$"
"float, title:^(War in Tunnels)$" "float, title:^(War in Tunnels)$"
"float, class:(codium|codium-url-handler|VSCodium), title:negative:(.*codium.*|.*VSCodium.*)" "float, class:(codium|codium-url-handler|VSCodium), title:negative:(.*codium.*|.*VSCodium.*)"
@@ -71,6 +71,7 @@ _: {
"size 70% 60%, initialTitle:(Add Folder to Workspace)" "size 70% 60%, initialTitle:(Add Folder to Workspace)"
"size 70% 70%, tag:settings*" "size 70% 70%, tag:settings*"
"size 60% 70%, class:^([Ff]erdium)$" "size 60% 70%, class:^([Ff]erdium)$"
"size 70% 70%, class:^(mpv)$"
# Tile rules # Tile rules
"tile, class:^(affinity.exe)$" "tile, class:^(affinity.exe)$"

View File

@@ -1,5 +1,12 @@
{pkgs, ...}: { {
services.kdeconnect = { pkgs,
lib,
config,
...
}: {
options.kdeconnect.enable = lib.mkEnableOption "KDE Connect";
config.services.kdeconnect = lib.mkIf config.kdeconnect.enable {
enable = true; enable = true;
indicator = true; indicator = true;
package = pkgs.kdePackages.kdeconnect-kde; package = pkgs.kdePackages.kdeconnect-kde;

View File

@@ -1,6 +1,12 @@
{pkgs, ...}: { {
programs = { pkgs,
librewolf = { lib,
config,
...
}: {
options.librewolf.enable = lib.mkEnableOption "LibreWolf";
config.programs.librewolf = lib.mkIf config.librewolf.enable {
enable = true; enable = true;
package = pkgs.librewolf; package = pkgs.librewolf;
# nativeMessagingHosts = [pkgs.firefoxpwa]; # nativeMessagingHosts = [pkgs.firefoxpwa];
@@ -18,7 +24,6 @@
# Policies (about:policies#documentation) # Policies (about:policies#documentation)
}; };
}; };
};
imports = [ imports = [
./profiles ./profiles

View File

@@ -1,14 +1,17 @@
{ {
pkgs, pkgs,
osConfig, lib,
config,
... ...
}: { }: {
programs.lutris = { options.lutris.enable = lib.mkEnableOption "Lutris";
enable = false;
config.programs.lutris = lib.mkIf config.lutris.enable {
enable = true;
package = pkgs.lutris; package = pkgs.lutris;
protonPackages = [pkgs.proton-ge-bin]; protonPackages = [pkgs.proton-ge-bin];
winePackages = [pkgs.wineWowPackages.waylandFull]; winePackages = [pkgs.wineWowPackages.waylandFull];
defaultWinePackage = pkgs.wineWowPackages.waylandFull; defaultWinePackage = pkgs.wineWowPackages.waylandFull;
steamPackage = osConfig.programs.steam.package; steamPackage = pkgs.steam;
}; };
} }

View File

@@ -1,5 +1,12 @@
{pkgs, ...}: { {
services.nextcloud-client = { pkgs,
lib,
config,
...
}: {
options.nextcloud-client.enable = lib.mkEnableOption "Nextcloud Client";
config.services.nextcloud-client = lib.mkIf config.nextcloud-client.enable {
enable = true; enable = true;
startInBackground = true; startInBackground = true;
package = pkgs.nextcloud-client; package = pkgs.nextcloud-client;

View File

@@ -1,6 +1,13 @@
{pkgs, ...}: { {
programs.obs-studio = { pkgs,
enable = false; lib,
config,
...
}: {
options.obs-studio.enable = lib.mkEnableOption "OBS Studio";
config.programs.obs-studio = lib.mkIf config.obs-studio.enable {
enable = true;
plugins = with pkgs.obs-studio-plugins; [ plugins = with pkgs.obs-studio-plugins; [
wlrobs wlrobs
obs-pipewire-audio-capture obs-pipewire-audio-capture

View File

@@ -1,5 +1,12 @@
{pkgs, ...}: { {
programs.onlyoffice = { pkgs,
lib,
config,
...
}: {
options.onlyoffice.enable = lib.mkEnableOption "OnlyOffice";
config.programs.onlyoffice = lib.mkIf config.onlyoffice.enable {
enable = true; enable = true;
package = pkgs.onlyoffice-desktopeditors; package = pkgs.onlyoffice-desktopeditors;
settings = { settings = {

View File

@@ -1,5 +1,12 @@
{pkgs, ...}: { {
programs.vesktop = { pkgs,
lib,
config,
...
}: {
options.vesktop.enable = lib.mkEnableOption "Vesktop";
config.programs.vesktop = lib.mkIf config.vesktop.enable {
enable = true; enable = true;
package = pkgs.vesktop; package = pkgs.vesktop;
}; };

View File

@@ -1,8 +1,19 @@
{pkgs, ...}: { {
programs.vscode = { pkgs,
enable = false; lib,
config,
...
}: {
options.vscodium.enable = lib.mkEnableOption "VsCodium";
config = {
nixpkgs.config.allowUnfree = true;
programs.vscode = lib.mkIf config.vscodium.enable {
enable = true;
package = pkgs.vscodium; package = pkgs.vscodium;
}; };
};
imports = [ imports = [
./profiles ./profiles

View File

@@ -1,9 +1,20 @@
{pkgs, ...}: { {
programs.zed-editor = { pkgs,
lib,
config,
...
}: {
options.zed-editor = {
enable = lib.mkEnableOption "Zed Editor";
remote-server = lib.mkEnableOption "Zed Editor Remote Server";
};
config.programs.zed-editor = lib.mkIf config.zed-editor.enable {
enable = true; enable = true;
package = pkgs.zed-editor; package = pkgs.zed-editor;
installRemoteServer = true; installRemoteServer = lib.mkIf config.zed-editor.remote-server true;
}; };
imports = [ imports = [
./user-settings ./user-settings
./extensions.nix ./extensions.nix