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:
22
modules/boot-splash.nix
Normal file
22
modules/boot-splash.nix
Normal 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
288
modules/configuration.nix
Normal 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. It‘s 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
11
modules/default.nix
Normal file
@ -0,0 +1,11 @@
|
||||
{ ... }:
|
||||
{
|
||||
imports = [
|
||||
./configuration.nix
|
||||
./firefox.nix
|
||||
./boot-splash.nix
|
||||
./zsh.nix
|
||||
./neovim.nix
|
||||
./packages.nix
|
||||
];
|
||||
}
|
||||
94
modules/desktop-entries.nix
Normal file
94
modules/desktop-entries.nix
Normal 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
100
modules/firefox.nix
Normal 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;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
39
modules/hardware-configuration.nix
Normal file
39
modules/hardware-configuration.nix
Normal 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
122
modules/home.nix
Normal 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
81
modules/minimal.nix
Normal 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
95
modules/neovim-home.nix
Normal 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
20
modules/neovim.nix
Normal 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
119
modules/packages.nix
Normal 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
29
modules/zsh.nix
Normal 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
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user