Moved modules into a new Modules subdirectory. Started config of install.sh script. Moved home manager config out of flake.

This commit is contained in:
2025-11-21 16:32:49 +01:00
parent ea197269fa
commit 3bc1d1e246
19 changed files with 759 additions and 56 deletions

22
modules/boot-splash.nix Normal file
View File

@ -0,0 +1,22 @@
{ config, lib, pkgs, ... }:
{
boot = {
# silence first boot output
consoleLogLevel = 3;
initrd.verbose = false;
initrd.systemd.enable = true;
kernelParams = [
"quiet"
"splash"
"intremap=on"
"boot.shell_on_fail"
"udev.log_priority=3"
"rd.systemd.show_status=auto"
];
# plymouth, showing after LUKS unlock
plymouth.enable = true;
plymouth.font = "${pkgs.hack-font}/share/fonts/truetype/Hack-Regular.ttf";
plymouth.logo = "${pkgs.nixos-icons}/share/icons/hicolor/128x128/apps/nix-snowflake.png";
};
}

288
modules/configuration.nix Normal file
View File

@ -0,0 +1,288 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
#Access Internet using:
#nmcli device wifi list
#nmcli device wifi connect <ssid> password <password>
# or if no password (open wifi)
#nmcli device wifi connect <ssid>
#Nix flake file limit: ulimit -n 500000
{ inputs, config, pkgs, lib, username, version, system, ... }:
{
# stylix.enable = true;
# stylix.image = /etc/nixos/other/wallpaper.png;
# in configuration.nix
#Assign Swap to the PC
#swapDevices = [{
# device = "/swapfile";
# size = 16 * 1024; # 16GB
#}];
imports =
[
inputs.home-manager.nixosModules.home-manager
./hardware-configuration.nix
];
specialisation = {
"plasma" = {
configuration = {
imports = [
../plasma/plasma.nix
];
programs.gamemode.enable = true;
};
};
"hyprland" = {
configuration = {
imports = [
../hyprland/hyprland.nix
];
};
};
#"minimal" = {
# inheritParentConfig = false;
# configuration = {
# imports = [
# ./minimal.nix
# ];
# };
#};
};
# Bootloader.
boot.loader = {
systemd-boot.enable = false;
efi.canTouchEfiVariables = true;
#boot.loader.efi.efiSysMountPoint = "/boot/efi";
grub = {
enable = true;
device = "/dev/nvme0n1"; #Needs to be changed when using a new computer! (Make grub partition - look below!)
#devices = [ "nodev" ];
efiSupport = true;
useOSProber = true;
};
grub2-theme = {
enable = true;
theme = "whitesur";
footer = true;
};
timeout = 10;
};
#Ensure there is a grub_bios partition: (gparted)
#Create a new parititon. File System: Unformatted - Size: ~5 Mib
#Apply
#Manage flags -> Add bios_grub
networking.hostName = "nixos";
# Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
users.${username} = ./home.nix;
backupFileExtension = "backup"; # Automatically backs up conflicting files during activation
extraSpecialArgs = { inherit inputs username version system; };
};
# Enable networking
networking.networkmanager.enable = true;
networking.extraHosts = ''
100.89.141.79 tail-rpi
'';
# Set your time zone.
time.timeZone = "Europe/Berlin";
# Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "de_DE.UTF-8";
LC_IDENTIFICATION = "de_DE.UTF-8";
LC_MEASUREMENT = "de_DE.UTF-8";
LC_MONETARY = "de_DE.UTF-8";
LC_NAME = "de_DE.UTF-8";
LC_NUMERIC = "de_DE.UTF-8";
LC_PAPER = "de_DE.UTF-8";
LC_TELEPHONE = "de_DE.UTF-8";
LC_TIME = "de_DE.UTF-8";
};
# List services that you want to enable:
services = {
ollama = {
enable = true;
# Optional: load models on startup
#loadModels = [ ... ];
};
fprintd.enable = true;
fprintd.tod.enable = true;
fprintd.tod.driver = pkgs.libfprint-2-tod1-goodix;
fwupd.enable = true; #Allows BIOS updates
locate = {
enable = true;
package = pkgs.plocate;
};
tailscale = {
enable = true;
useRoutingFeatures = "client";
extraSetFlags = [
"--operator=${username}"
"--accept-routes"
];
};
#Enable CUPS to print documents.
printing.enable = true;
# Enable the OpenSSH daemon.
openssh.enable = true;
};
fonts.packages = with pkgs; [
font-awesome
nerd-fonts.jetbrains-mono
meslo-lgs-nf
];
#In order for dynamically linked executables to work
programs.nix-ld.enable = true;
programs.ssh.askPassword = lib.mkForce "${pkgs.kdePackages.ksshaskpass}/bin/ksshaskpass";
programs.steam.enable = true;
# Configure console keymap
console.keyMap = "de";
hardware.enableRedistributableFirmware = true;
#Enables proprietary, redistributable firmware so hardware devices function properly
hardware.graphics = {
enable = true;
# Mesa should be enabled by default for Vulkan, but you can be explicit
enable32Bit = true; # For 32-bit applications
};
hardware.cpu.amd.updateMicrocode = true;
hardware.bluetooth = {
enable = true;
powerOnBoot = true;
settings = {
General = {
# Shows battery charge of connected devices on supported
# Bluetooth adapters. Defaults to 'false'.
Experimental = true;
# When enabled other devices can connect faster to us, however
# the tradeoff is increased power consumption. Defaults to
# 'false'.
FastConnectable = true;
};
Policy = {
# Enable all controllers when they are found. This includes
# adapters present on start as well as adapters that are plugged
# in later on. Defaults to 'true'.
AutoEnable = true;
};
};
};
# security.rtkit.enable = true;
# services.pipewire = {
# enable = true;
# alsa.enable = true;
# alsa.support32Bit = true;
# pulse.enable = true;
# # If you want to use JACK applications, uncomment this
# #jack.enable = true;
#
# # use the example session manager (no others are packaged yet so this is enabled by default,
# # no need to redefine it in your config for now)
# #media-session.enable = true;
# };
# Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true;
# Define a user account. Don't forget to set a password with passwd.
users.users."{$username}" = {
isNormalUser = true;
description = "Cookiez";
extraGroups = [ "networkmanager" "wheel" "docker" ];
packages = with pkgs; [
#User Packages Here
];
};
virtualisation.docker.enable = true;
environment.etc."gitconfig".text = ''
[init]
defaultBranch = main
'';
#So no user in the group Wheel has to input the password in order to use sudo
security.sudo.wheelNeedsPassword = false;
#Allow Nix Commands
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
environment.variables = {
EDITOR = "nvim";
# XKB_DEFAULT_LAYOUT = "de";
};
environment.sessionVariables = {
NIXOS_OZONE_WL = "1"; #For chromium to work under wayland and with virtual Keyboards (Only really needed for virtual keyboards, but doest hurt ...)
TERMINAL = "kitty";
};
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = version; # Did you read the comment?
}

11
modules/default.nix Normal file
View File

@ -0,0 +1,11 @@
{ ... }:
{
imports = [
./configuration.nix
./firefox.nix
./boot-splash.nix
./zsh.nix
./neovim.nix
./packages.nix
];
}

View File

@ -0,0 +1,94 @@
{ pkgs, ...}:
{
xdg = {
desktopEntries.youtube = {
name = "YouTube";
exec = "chromium --app=https://www.youtube.com";
terminal = false;
type = "Application";
icon = "applications-multimedia";
categories = [ "AudioVideo" "Player" "Network" ];
};
desktopEntries."org.kde.konsole" = {
name = "Konsole";
noDisplay = true;
};
desktopEntries.kitty = {
name = "kitty";
genericName = "Terminal emulator";
comment = "Fast, feature-rich, GPU based terminal";
exec = "kitty";
terminal = false;
categories = [ "System" "TerminalEmulator" ];
icon = "/etc/nixos/other/kitty.app.png";
};
desktopEntries."org.kde.kinfocenter" = {
name = "Info Center";
noDisplay = true;
};
desktopEntries."org.kde.khelpcenter" = {
name = "Help Center";
noDisplay = true;
};
desktopEntries."org.kde.kmenuedit" = {
name = "Menu Editor";
noDisplay = true;
};
desktopEntries."micro" = {
name = "Micro";
noDisplay = true;
};
desktopEntries."nvim" = {
name = "Neovim";
noDisplay = true;
};
desktopEntries."btop" = {
name = "btop++";
noDisplay = true;
};
desktopEntries."chromium-desktop" = {
name = "Chromium";
noDisplay = true;
};
desktopEntries."nixos-manual" = {
name = "NixOS Manual";
noDisplay = true;
};
desktopEntries."org.freedesktop.IBus.Setup" = {
name = "IBus Preferences";
noDisplay = true;
};
desktopEntries."org.kde.drkonqi" = {
name = "Crashed Processes Viewer";
noDisplay = true;
};
desktopEntries."com.cloudflare.WarpTaskbar" = {
name = "Cloudflare Zero Trust";
noDisplay = true;
};
desktopEntries."org.kde.kwrite" = {
name = "KWrite";
noDisplay = true;
};
desktopEntries."org.kde.discover" = {
name = "Discover";
noDisplay = true;
};
};
}

100
modules/firefox.nix Normal file
View File

@ -0,0 +1,100 @@
{ config, pkgs, ... }:
let
lock-false = {
Value = false;
Status = "locked";
};
lock-true = {
Value = true;
Status = "locked";
};
in
{
programs = {
firefox = {
enable = true;
languagePacks = [ "de" "en-US" ];
/* ---- POLICIES ---- */
# Check about:policies#documentation for options.
policies = {
PasswordManagerEnabled = false;
DisableTelemetry = true;
DisableFirefoxStudies = true;
EnableTrackingProtection = {
Value= true;
Locked = true;
Cryptomining = true;
Fingerprinting = true;
};
DisablePocket = true;
#DisableFirefoxAccounts = true;
#DisableAccounts = true;
#DisableFirefoxScreenshots = true;
OverrideFirstRunPage = "";
OverridePostUpdatePage = "";
DontCheckDefaultBrowser = true;
DisplayBookmarksToolbar = "always"; # alternatives: "always" or "newtab"
DisplayMenuBar = "default-off"; # alternatives: "always", "never" or "default-on"
SearchBar = "unified"; # alternative: "separate"
/* ---- EXTENSIONS ---- */
# Check about:support for extension/add-on ID strings.
# Valid strings for installation_mode are "allowed", "blocked",
# "force_installed" and "normal_installed".
# How to: https://discourse.nixos.org/t/declare-firefox-extensions-and-settings/36265
ExtensionSettings =
with builtins;
let
extension = shortId: uuid: {
name = uuid;
value = {
install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/${shortId}/latest.xpi";
installation_mode = "normal_installed";
};
};
in
listToAttrs [
(extension "ublock-origin" "uBlock0@raymondhill.net")
(extension "bitwarden-password-manager" "{446900e4-71c2-419f-a6a7-df9c091e268b}")
#(extension "2fas-two-factor-authentication" "admin@2fas.com")
(extension "sponsorblock" "sponsorBlocker@ajay.app")
#(extension "dearrow" "deArrow@ajay.app")
#(extension "enhancer-for-youtube" "enhancerforyoutube@maximerf.addons.mozilla.org")
#(extension "tabliss" "extension@tabliss.io")
#(extension "don-t-fuck-with-paste" "DontFuckWithPaste@raim.ist")
#(extension "clearurls" "{74145f27-f039-47ce-a470-a662b129930a}")
#(extension "react-devtools" "@react-devtools")
(extension "keepa" "amptra@keepa.com")
(extension "redditUntranslate" "reddit-url-redirector@kichkoupi.com")
];
/* ---- PREFERENCES ---- */
# Check about:config for options.
Preferences = {
"browser.contentblocking.category" = { Value = "strict"; Status = "locked"; };
"extensions.pocket.enabled" = lock-false;
"extensions.screenshots.disabled" = lock-true;
"browser.topsites.contile.enabled" = lock-false;
#"browser.formfill.enable" = lock-false;
#"browser.search.suggest.enabled" = lock-false;
#"browser.search.suggest.enabled.private" = lock-false;
#"browser.urlbar.suggest.searches" = lock-false;
"browser.urlbar.showSearchSuggestionsFirst" = lock-false;
"browser.newtabpage.activity-stream.feeds.section.topstories" = lock-false;
"browser.newtabpage.activity-stream.feeds.snippets" = lock-false;
"browser.newtabpage.activity-stream.section.highlights.includePocket" = lock-false;
"browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = lock-false;
"browser.newtabpage.activity-stream.section.highlights.includeDownloads" = lock-false;
"browser.newtabpage.activity-stream.section.highlights.includeVisited" = lock-false;
"browser.newtabpage.activity-stream.showSponsored" = lock-false;
"browser.newtabpage.activity-stream.system.showSponsored" = lock-false;
"browser.newtabpage.activity-stream.showSponsoredTopSites" = lock-false;
};
};
};
};
}

View File

@ -0,0 +1,39 @@
# 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, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "uas" "usbhid" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/af8fdb25-74d8-4b33-8413-bdcb66e0d22a";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/58D5-0C06";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices = [ ];
# 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.eth0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp1s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

122
modules/home.nix Normal file
View File

@ -0,0 +1,122 @@
{ lib, inputs, config, pkgs, username, version, ... }:
{
# Home Manager needs a bit of information about you and the
# paths it should manage.
home.username = username;
home.homeDirectory = "/home/${username}";
imports = [
inputs.zen-browser.homeModules.beta
# or inputs.zen-browser.homeModules.twilight
# or inputs.zen-browser.homeModules.twilight-official
#./neovim-home.nix
./desktop-entries.nix
];
# This value determines the Home Manager release that your
# configuration is compatible with. This helps avoid breakage
# when a new Home Manager release introduces backwards
# incompatible changes.
#
# You can update Home Manager without changing this value. See
# the Home Manager release notes for a list of state version
# changes in each release.
home.stateVersion = version;
# Let Home Manager install and manage itself.
programs = {
home-manager = { enable = true; };
kitty = {
enable = true;
settings = {
background_opacity = "0.2"; #The higher the value, the darker the console
background_blur = 10;
};
};
git = {
enable = true;
userName = "Cookiez";
userEmail = "jaden-puerkenauer@web.de";
extraConfig = {
init.defaultBranch = "main";
credentials.helper = "store";
};
};
zen-browser = {
enable = true;
#package = inputs.zen-browser.packages.${pkgs.system}.default;
profiles = {
${username} = {
id = 0;
name = username;
# profileAvatarPath = "chrome://browser/content/zen-avatars/avatar-57.svg";
path = "${username}.default";
isDefault = true;
settings = {
};
};
};
policies = {
AutofillAddressEnabled = false;
AutofillCreditCardEnabled = false;
PasswordManagerEnabled = false;
NoDefaultBookmarks = true;
DisableAppUpdate = true;
DisableFirefoxStudies = true;
DontCheckDefaultBrowser = true;
EnableTrackingProtection = {
Value = true;
Locked = true;
Cryptomining = true;
Fingerprinting = true;
};
OfferToSaveLogins = false;
DisplayBookmarksToolbar = "always"; # alternatives: "always" or "newtab"
ExtensionSettings =
with builtins;
let
extension = shortId: uuid: {
name = uuid;
value = {
install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/${shortId}/latest.xpi";
installation_mode = "force_installed";
};
};
in
listToAttrs [
(extension "ublock-origin" "uBlock0@raymondhill.net")
(extension "bitwarden-password-manager" "{446900e4-71c2-419f-a6a7-df9c091e268b}")
#(extension "2fas-two-factor-authentication" "admin@2fas.com")
(extension "sponsorblock" "sponsorBlocker@ajay.app")
#(extension "dearrow" "deArrow@ajay.app")
#(extension "enhancer-for-youtube" "enhancerforyoutube@maximerf.addons.mozilla.org")
#(extension "tabliss" "extension@tabliss.io")
#(extension "don-t-fuck-with-paste" "DontFuckWithPaste@raim.ist")
#(extension "clearurls" "{74145f27-f039-47ce-a470-a662b129930a}")
#(extension "react-devtools" "@react-devtools")
(extension "keepa" "amptra@keepa.com")
(extension "redditUntranslate" "reddit-url-redirector@kichkoupi.com")
];
# To add additional extensions, find it on addons.mozilla.org, find
# the short ID in the url (like https=//addons.mozilla.org/en-US/firefox/addon/!SHORT_ID!/)
# Then, download the XPI by filling it in to the install_url template, unzip it,
# run `jq .browser_specific_settings.gecko.id manifest.json` or
# `jq .applications.gecko.id manifest.json` to get the UUID
Preferences = {
#"browser.contentblocking.category" = { Value = "strict"; Status = "locked"; };
"browser.urlbar.showSearchSuggestionsFirst" = false;
"browser.sessionstore.resume_session_once" = false;
};
};
};
}; #End of programs = {};
}

81
modules/minimal.nix Normal file
View File

@ -0,0 +1,81 @@
#Access Internet using:
#nmcli device wifi list
#nmcli device wifi connect <ssid> password <password>
# or if no password (open wifi)
#nmcli device wifi connect <ssid>
{ config, pkgs, lib, username, version, ... }:
{
imports =
[
./hardware-configuration.nix
./zsh.nix
#./neovim.nix
./packages.nix
];
#networking.hostName = "nixos";
# Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "Europe/Berlin";
# Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "de_DE.UTF-8";
LC_IDENTIFICATION = "de_DE.UTF-8";
LC_MEASUREMENT = "de_DE.UTF-8";
LC_MONETARY = "de_DE.UTF-8";
LC_NAME = "de_DE.UTF-8";
LC_NUMERIC = "de_DE.UTF-8";
LC_PAPER = "de_DE.UTF-8";
LC_TELEPHONE = "de_DE.UTF-8";
LC_TIME = "de_DE.UTF-8";
};
services = {
# Enable the OpenSSH daemon.
openssh.enable = true;
};
# Configure console keymap
console.keyMap = "de";
# Define a user account. Don't forget to set a password with passwd.
users.users.cookiez = {
isNormalUser = true;
description = "Cookiez";
extraGroups = [ "networkmanager" "wheel" "docker" ];
packages = with pkgs; [
#User Packages Here
];
};
virtualisation.docker.enable = true;
#So no user in the group Wheel has to input the password in order to use sudo
security.sudo.wheelNeedsPassword = false;
#Allow Nix Commands
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
environment.variables = {
EDITOR = "nvim";
# XKB_DEFAULT_LAYOUT = "de";
};
environment.sessionVariables = {
NIXOS_OZONE_WL = "1"; #For chromium to work under wayland and with virtual Keyboards (Only really needed for virtual keyboards, but doest hurt ...)
TERMINAL = "kitty";
};
system.stateVersion = version;
}

95
modules/neovim-home.nix Normal file
View File

@ -0,0 +1,95 @@
{ config, lib, pkgs, ... }:
{
programs.neovim = {
enable = true;
# ...
extraPackages = with pkgs.vimPlugins; [
lazy-nvim
LazyVim
bufferline-nvim
# stylua
# ripgrep
];
extraLuaConfig =
let
plugins = with pkgs.vimPlugins; [
LazyVim
bufferline-nvim
cmp-buffer
cmp-nvim-lsp
cmp-path
cmp_luasnip
conform-nvim
dashboard-nvim
dressing-nvim
flash-nvim
friendly-snippets
gitsigns-nvim
indent-blankline-nvim
lualine-nvim
neo-tree-nvim
neoconf-nvim
neodev-nvim
noice-nvim
nui-nvim
nvim-cmp
nvim-lint
nvim-lspconfig
nvim-notify
nvim-spectre
nvim-treesitter
nvim-treesitter-context
nvim-treesitter-textobjects
nvim-ts-autotag
nvim-ts-context-commentstring
nvim-web-devicons
persistence-nvim
plenary-nvim
telescope-fzf-native-nvim
telescope-nvim
todo-comments-nvim
tokyonight-nvim
trouble-nvim
vim-illuminate
vim-startuptime
which-key-nvim
{ name = "LuaSnip"; path = luasnip; }
{ name = "catppuccin"; path = catppuccin-nvim; }
];
mkEntryFromDrv = drv:
if lib.isDerivation drv then { name = "${lib.getName drv}"; path = drv; }
else drv;
lazyPath = pkgs.linkFarm "lazy-plugins" (builtins.map mkEntryFromDrv plugins);
in
''
vim.opt.clipboard = "unnamedplus"
vim.opt.shiftwidth = 2
vim.opt.mousescroll = "ver:0,hor:0"
vim.opt.rtp:prepend("${pkgs.vimPlugins.lazy-nvim}")
require("lazy").setup({
defaults = { lazy = true },
dev = {
path = "${lazyPath}",
patterns = { "" },
fallback = true,
},
spec = {
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
{ "nvim-telescope/telescope-fzf-native.nvim", enabled = true },
{ "williamboman/mason-lspconfig.nvim", enabled = false },
{ "williamboman/mason.nvim", enabled = false },
{ import = "plugins" },
{ "nvim-treesitter/nvim-treesitter", opts = { ensure_installed = {} } },
},
})
'';
};
}

20
modules/neovim.nix Normal file
View File

@ -0,0 +1,20 @@
{ inputs, config, lib, pkgs, ... }:
{
environment.systemPackages = with pkgs;
[
neovim
vimPlugins.LazyVim
vimPlugins.lazygit-nvim
wl-clipboard
xclip
];
home-manager.sharedModules = [
./neovim-home.nix
];
# programs.neovim = {
# enable = true;
#};
}

119
modules/packages.nix Normal file
View File

@ -0,0 +1,119 @@
{config, pkgs, libs, inputs, nix-flatpak, ...}:
{
environment.systemPackages = with pkgs; [
#Essenteals (CLI Only)
wget #A tool for quickly downloading things from the Web
micro-with-xclip #Micro text editor with xclip for clipboard
thefuck #Error correction in case commands are wrong. Type: 'fuck'
jdk23 #Java Development Kit 23
python312 #Python 3.12
python312Packages.pip #Pip for Python 3.12
python312Packages.cmake #The CMake tool to manage project build configurations
fastfetch #A utility to see information about your machine
btop #A replacement for htop to see your machines resources
git #Git ... no need to explain
efibootmgr
zip #A utility for ZIP archives
unzip #A utility for ZIP archives
rar #A utility for RAR archives
gnutar #A utility for .tar archives
cron #A tool to set up commands to run scheduled
tmux #A tool to let command windows contiune to run in the background
home-manager #A package to also edit the user Configuration, like with nix
konsave #A package to transfer the look and feel of KDE Plasma to other machines
ocs-url
kdePackages.plasma-workspace
kdePackages.kdialog
openssh #SSH
zoxide #Alternatice to cd, browse files
fzf-zsh #Search for file names
coreutils-full
multipath-tools
docker
docker-compose
plymouth
mesa
fprintd
#Programming
#jetbrains.pycharm-community #The PyCharm IDE to edit Python code
jetbrains.idea-community #The IntelliJ IDE to edit Java code
#jetbrains.clion #The CLion IDE to edit and compile c/c++ code
#racket #The racket Programming language, with DrRacket IDE, for University (*Not* because it's my favourite)
rustup #Rust Programming Toolchain
#go #Go Programming Language
gcc
pkg-config
vscode #Editor for all kinds of programms
nodejs_22
#Desktop Applications
ryubing
vlc
#steam
#heroic
lutris
#putty Need to find alternative as it sucks on linux
mission-center
trayscale
spotify
rpi-imager
kdePackages.yakuake
#atlauncher
discord
wineWowPackages.stagingFull
winetricks
#whatsapp-for-linux
#obs-studio
#i2p
gparted #Disk partition Manager
#rustdesk
realvnc-vnc-viewer
eddie #AirVPN desktop client
chromium #For Youtube app to work
kdePackages.bluez-qt
moonlight-qt
kitty
tdrop
wmctrl #To Force windows into fullscreen
kdePackages.dolphin
persepolis #Download Manager
libreoffice-still
#CLI tools
pdftk
yt-dlp
tailscale
speedtest-cli
#duplicati
#ollama
cloudflare-warp
ddrescue
texliveFull #LaTeX PDF maker
lazygit
gtypist
];
nixpkgs.config.permittedInsecurePackages = [
"dotnet-sdk-6.0.428"
"dotnet-runtime-6.0.36"
];
# services.flatpak = {
# enable = false;
#
# remotes = [
# {
# name = "flathub";
# location = "https://dl.flathub.org/repo/flathub.flatpakrepo";
# }
# ];
# packages = [
# {
# appId = "org.vinegarhq.Sober";
# origin = "flathub";
# #commit = "e28fd81675b0871614ccdc8fc66c6da6761dd11333a65900a0451edf07ef0ea6";
# }
# ];
# };
}

29
modules/zsh.nix Normal file
View File

@ -0,0 +1,29 @@
{ config, pkgs, ... }: {
programs.zsh = {
enable = true;
ohMyZsh = {
enable = true;
plugins = [ "git" ];
};
shellInit = ''
source /etc/nixos/other/aliases
'';
#To reset powerlevel10k, write 'p10k configure' in shell!
promptInit = ''
source ${pkgs.zsh-powerlevel10k}/share/zsh-powerlevel10k/powerlevel10k.zsh-theme
'';
};
users.users.cookiez.shell = pkgs.zsh;
environment.systemPackages = [
pkgs.oh-my-zsh
pkgs.zsh
pkgs.zsh-completions
pkgs.zsh-powerlevel10k
pkgs.zsh-syntax-highlighting
pkgs.zsh-autocomplete
];
}