summaryrefslogtreecommitdiff
path: root/configuration.nix
diff options
context:
space:
mode:
Diffstat (limited to 'configuration.nix')
-rwxr-xr-xconfiguration.nix268
1 files changed, 268 insertions, 0 deletions
diff --git a/configuration.nix b/configuration.nix
new file mode 100755
index 0000000..2271492
--- /dev/null
+++ b/configuration.nix
@@ -0,0 +1,268 @@
+{ config, lib, pkgs, ... }:
+
+let
+ get_spotify_status = pkgs.writeShellScript "get_spotify_status.sh" ''
+ #!/bin/bash
+ PARENT_BAR="example"
+ PARENT_BAR_PID=$(pgrep -a "polybar" | grep "$PARENT_BAR" | cut -d" " -f1)
+ PLAYER="playerctld"
+ FORMAT="{{ title }} - {{ artist }}"
+
+ update_hooks() {
+ while IFS= read -r id; do
+ polybar-msg -p "$id" hook spotify-play-pause $2 1>/dev/null 2>&1
+ done < <(echo "$1")
+ }
+
+ PLAYERCTL_STATUS=$(playerctl --player=$PLAYER status 2>/dev/null)
+ EXIT_CODE=$?
+
+ if [ $EXIT_CODE -eq 0 ]; then
+ STATUS=$PLAYERCTL_STATUS
+ else
+ STATUS="No player is running"
+ fi
+
+ if [ "$1" == "--status" ]; then
+ echo "$STATUS"
+ else
+ if [ "$STATUS" = "Stopped" ]; then
+ echo "Music Stopped"
+ elif [ "$STATUS" = "Paused" ]; then
+ update_hooks "$PARENT_BAR_PID" 2
+ playerctl --player=$PLAYER metadata --format "$FORMAT"
+ elif [ "$STATUS" = "No player is running" ]; then
+ echo "Music Off"
+ else
+ update_hooks "$PARENT_BAR_PID" 1
+ playerctl --player=$PLAYER metadata --format "$FORMAT"
+ fi
+ fi
+ '';
+
+ hidePolybarInFullscreen = pkgs.writeShellScript "hidePolybarInFullscreen.sh" ''
+ #!/usr/bin/env bash
+ sleep 1
+ i3-msg -t subscribe -m '[ "window" ]' | while read -r event; do
+ if echo "$event" | grep -q '"fullscreen_mode":[[:space:]]*1'; then
+ polybar-msg cmd hide
+ elif echo "$event" | grep -q '"fullscreen_mode":[[:space:]]*0'; then
+ polybar-msg cmd show
+ fi
+ done
+ '';
+in
+{
+ imports = [
+ ./hardware-configuration.nix
+ ];
+
+ nix.settings = {
+ substituters = [
+ "https://cache.nixos.org/"
+ ];
+
+ trusted-public-keys = [
+ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
+ ];
+ experimental-features = [
+ "nix-command"
+ "flakes"
+ ];
+ };
+
+
+ # === System Settings ===
+ boot = {
+ kernelPackages = pkgs.linuxPackages_latest;
+ initrd = {
+ kernelModules = [ "i915" ];
+ systemd.enable = true;
+ };
+ loader = {
+ # Hide the OS choice for bootloaders.
+ # It's still possible to open the bootloader list by pressing any key
+ # It will just not appear on screen unless a key is pressed
+ timeout = 0;
+
+ efi = {
+ canTouchEfiVariables = true;
+ efiSysMountPoint = "/boot";
+ };
+ grub = {
+ enable = false;
+ device = "nodev";
+ useOSProber = true;
+ efiSupport = true;
+ };
+ systemd-boot = {
+ enable = true;
+ consoleMode = "keep";
+ configurationLimit = 5;
+ };
+ };
+ plymouth = {
+ enable = true;
+ theme = "deus_ex";
+ themePackages = with pkgs; [
+ # By default we would install all themes
+ (adi1090x-plymouth-themes.override {
+ selected_themes = [ "deus_ex" ];
+ })
+ ];
+ logo = pkgs.fetchurl {
+ url = "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fcdn.icon-icons.com%2Ficons2%2F2699%2FPNG%2F512%2Fnixos_logo_icon_170910.png&f=1&nofb=1&ipt=71345d68f1fc864748db54e81111d5853a24fba1d39bdee7cc6fda3e58181bc0";
+ sha256 = "sha256-fr1ZnKdX9EeXl2eTIrxEd17DkVKZL8BV9RGmluSgFfk=";
+ };
+ extraConfig = ''
+ DeviceScale=1
+ '';
+ };
+
+ # Enable "Silent boot"
+ consoleLogLevel = 3;
+ initrd.verbose = false;
+ kernelParams = [
+ "quiet"
+ "splash"
+ "udev.log_level=3"
+ "systemd.show_status=auto"
+ ];
+ };
+ networking.hostName = "kronos";
+ networking.networkmanager.enable = true;
+
+ fileSystems."/boot".options = [ "fmask=0077" "dmask=0077" ];
+
+ hardware.bluetooth = {
+ enable = true;
+ powerOnBoot = true;
+ settings = {
+ General = {
+ Experimental = true;
+ Enable = "Source,Sink,Media,Socket";
+ AutoConnect = true;
+ FastConnectabke = true;
+ };
+ Policy.AutoEnable = true;
+ };
+ };
+
+ security.pam.sshAgentAuth.enable = true;
+
+# In your configuration.nix
+environment.variables = {
+ JAVA_HOME = "${pkgs.jdk17}/lib/openjdk"; # adjust path based on version
+};
+
+ time.timeZone = "Europe/Prague";
+
+ services.xserver = {
+ wacom.enable = true;
+ enable = true;
+ windowManager.i3 = {
+ enable = true;
+ extraPackages = with pkgs; [ polybar i3lock-fancy-rapid ];
+ };
+
+ };
+
+ services.displayManager.defaultSession = "none+i3";
+ services.displayManager.ly = {
+ enable = true;
+ };
+ services.xserver.xkb.layout = "cz";
+ services.xserver.xkb.options = "eurosign:e,caps:escape";
+
+ services.printing.enable = true;
+ services.pipewire = { enable = true; pulse.enable = true; };
+ services.libinput.enable = true;
+
+ users.users = {
+ mun = {
+ isNormalUser = true;
+ extraGroups = [ "wheel" "bluetooth" "networkmanager" "kvm" "nixos" ];
+ packages = with pkgs; [ tree ];
+ shell = pkgs.zsh;
+ };
+ };
+
+ programs.firefox.enable = true;
+ programs.zsh.enable = true;
+ nixpkgs.config.allowUnfree = true;
+
+ environment.systemPackages = with pkgs; [
+ neovim wget stdenv tree-sitter discord kitty xfce.thunar thunderbird
+ flameshot libreoffice spotify tor-browser alsa-utils helvum
+ blueman bluez cava i3status i3lock-fancy-rapid xss-lock polybar
+ rofi feh clipman tree git lazygit killall acpi wirelesstools
+ brightnessctl fastfetch auto-cpufreq btop cargo gnome-boxes
+ clippy xclip texstudio godotPackages_4_5.godot
+ clang tree-sitter ripgrep fd unzip lua-language-server stylua
+ rust-analyzer rustfmt cargo rustc zathura krita
+ ruff vtsls pyright imagemagick ghostscript ruff python314 ly
+ prismlauncher vlc lua53Packages.luarocks mermaid-cli lua nil obsidian
+ wine bottles comic-mono playerctl zscroll espeak qbittorrent perl bzip2
+ libresprite audacity libgcc celestia lutris vscodium peazip vscode
+
+ (texlive.combine {
+ inherit (texlive) scheme-full;
+ notestex = texlivePackages.notestex;
+ })
+
+
+ (retroarch.withCores (cores: with cores; [
+ # --- NES --- #
+ fceumm
+
+ # --- GBA --- #
+ mgba
+
+ # --- GB / GBC --- #
+ gambatte
+ sameboy
+ ]))
+
+ ];
+
+ fonts = {
+ enableDefaultPackages = true;
+ packages = with pkgs; [ fira-code noto-fonts noto-fonts-color-emoji blackout beon];
+ };
+
+ programs.steam = {
+ enable = true;
+ remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
+ dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
+ localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
+ };
+
+ # enable Java support
+ programs.java = {
+ enable = true;
+ package = pkgs.jdk17; # or pkgs.jdk11, pkgs.jdk8, whatever you need
+ };
+
+ services.xserver.videoDrivers = [ "intel" ];
+
+ hardware.graphics = {
+ enable = true;
+ extraPackages = with pkgs; [
+ intel-vaapi-driver # for video acceleration on Intel
+ intel-media-driver
+ intel-compute-runtime
+ mesa
+ ];
+ };
+
+
+
+ services.openssh.enable = true;
+
+
+
+ system.stateVersion = "25.11";
+
+}
+
+