From 74e4e7d6f85e93e188c9e6dac8747a65056aa4c4 Mon Sep 17 00:00:00 2001 From: krizej <60076189+krizej@users.noreply.github.com> Date: Thu, 4 Jul 2024 01:14:24 +0200 Subject: [PATCH] changes --- .idea/.gitignore | 3 + .idea/codeStyles/Project.xml | 10 + .idea/codeStyles/codeStyleConfig.xml | 5 + .idea/inspectionProfiles/Project_Default.xml | 36 ++ .../inspectionProfiles/profiles_settings.xml | 6 + .idea/misc.xml | 7 + .idea/modules.xml | 8 + .idea/nix.iml | 8 + .idea/vcs.xml | 6 + configuration.nix | 209 +--------- flake.lock | 118 +++--- flake.nix | 11 +- misc/default.nix | 10 +- misc/documentation.nix | 23 ++ misc/networking.nix | 5 + misc/nix.nix | 5 +- misc/sudo.nix | 6 + misc/system.nix | 44 +++ misc/theme.nix | 45 +++ misc/xdg.nix | 3 +- pkgs/arc-mono-gtk-theme.nix | 31 +- pkgs/darkcold-gtk-theme.nix | 11 +- pkgs/default.nix | 1 - pkgs/e17gtk-revolved.nix | 9 +- pkgs/ezquake-fork.nix | 40 +- pkgs/oxylite-icon-theme.nix | 35 +- pkgs/sddm-i3-theme.nix | 36 +- pkgs/vim-darcula-theme.nix | 5 +- pkgs/win7-cursors.nix | 7 +- pkgs/winvista-cursors.nix | 7 +- pkgs/winxp-cursors.nix | 20 +- pkgs/winxp-icons.nix | 16 +- programs/alacritty.nix | 75 ++-- programs/autorandr.nix | 51 ++- programs/default.nix | 101 ++++- programs/firefox.nix | 151 ++++---- programs/fish.nix | 107 ++++- programs/git.nix | 14 +- programs/i3.nix | 366 +++++++++++------- programs/ssh.nix | 41 +- programs/vim.nix | 98 +++-- readme.txt | 3 + services/default.nix | 15 +- services/dunst.nix | 25 +- services/flameshot.nix | 14 +- services/sddm.nix | 12 + services/xserver.nix | 49 +++ 47 files changed, 1151 insertions(+), 757 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/codeStyles/Project.xml create mode 100644 .idea/codeStyles/codeStyleConfig.xml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/nix.iml create mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..664f8f1 --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..79ee123 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..53e683b --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,36 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..1356700 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..a70e656 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/nix.iml b/.idea/nix.iml new file mode 100644 index 0000000..d0876a7 --- /dev/null +++ b/.idea/nix.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/configuration.nix b/configuration.nix index 8cfc248..918d0a2 100644 --- a/configuration.nix +++ b/configuration.nix @@ -1,210 +1,9 @@ -{ pkgs, ...}: +{ ... }: { imports = [ ./hardware-configuration.nix + ./programs + ./services + ./misc ]; - - boot = { - loader = { - timeout = 2; - grub = { - enable = true; - device = "/dev/disk/by-id/ata-Samsung_SSD_860_EVO_500GB_S4CNNE0M700172J"; - gfxmodeBios = "auto"; # 1920x1080 did not work - splashImage = null; - font = null; - }; - }; - # doesn't even work, todo when fixed: remove xrandr from i3 autostart - kernelParams = [ - "video=DP-3:1920x1080@240" - "video=HDMI-3:1920x1080@75" - ]; - }; - - nix.settings.experimental-features = [ "nix-command" "flakes" ]; - - nixpkgs.config.permittedInsecurePackages = [ - "freeimage-unstable-2021-11-01" - "openssl-1.1.1w" - ]; - - networking.hostName = "krizej-pc"; - networking.networkmanager.enable = true; - - time.timeZone = "Europe/Warsaw"; - - # services.libinput = { - # enable = true; - # touchpad = { - # naturalScrolling = false; # it's reversed on my laptop for some reason - # tapping = true; - # tappingButtonMap = "lmr"; - # scrollMethod = "edge"; - # }; - # }; - - programs.sway.enable = true; - - services = { - xserver = { - enable = true; - xkb.layout = "pl"; - - windowManager.i3.enable = true; - - displayManager = { - sessionCommands = '' - xrandr --output DP-3 --mode 1920x1080 --rate 239.76 --primary - xrandr --output HDMI-3 --mode 1920x1080 --rate 74.97 --right-of DP-3 - xset r rate 180 50 - ''; - }; - - autoRepeatDelay = 180; - autoRepeatInterval = 50; - }; - - displayManager = { - defaultSession = "none+i3"; - sddm = { - enable = true; - theme = "sddm-i3-theme"; - }; - }; - }; - - fonts = { - enableDefaultPackages = true; - packages = with pkgs; [ - jetbrains-mono - dejavu_fonts - corefonts - vistafonts - ]; - fontconfig.defaultFonts = { - serif = [ "JetBrains Mono NL" ]; - sansSerif = [ "JetBrains Mono NL" ]; - monospace = [ "JetBrains Mono NL" ]; - }; - }; - - sound.enable = true; - hardware.pulseaudio.enable = true; - - # fucking stupid android shit man -# users.groups.plugdev.members = [ "krizej" ]; -# services.udev.extraRules = '' -# SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="2e76", MODE="0666", GROUP="plugdev" -# ''; - - users.users.krizej = { - isNormalUser = true; - extraGroups = [ "wheel" ]; - shell = pkgs.fish; - }; - - qt = { - enable = true; - platformTheme = "gnome"; - style = "adwaita-dark"; - }; - - programs.nano.enable = false; - programs.dconf.enable = true; - - # any-nix-shell - programs.fish.enable = true; - programs.fish.promptInit = '' - ${pkgs.any-nix-shell}/bin/any-nix-shell fish --info-right | source - ''; - - programs.steam = { - enable = true; - }; - - environment.systemPackages = with pkgs; [ - ed # is the standard text editor. - vim - file - wget - btop - git - gcc - unzip - python311 - python39 - ripgrep - gnomeExtensions.user-themes - xdg-user-dirs - man-pages - man-pages-posix - ntfs3g - gnumake - xclip - tcl - pkg-config - fish - tree - openssl_1_1 - sddm-i3-theme - ]; - - documentation = { - enable = true; - dev.enable = true; - doc.enable = false; - info.enable = false; - man = { - enable = true; - generateCaches = false; - man-db.enable = false; - mandoc.enable = true; - }; - }; - - programs.gnupg.agent = { - enable = true; - enableSSHSupport = true; - }; - - services.openssh.enable = true; - - security.sudo.extraConfig = '' - Defaults pwfeedback - ''; - - hardware = { - opengl = { - enable = true; - driSupport = true; - driSupport32Bit = true; - extraPackages = with pkgs; [ - mesa - amdvlk - libdrm - libva - vaapiVdpau - libvdpau-va-gl - rocmPackages.clr.icd - ]; - extraPackages32 = with pkgs; [ - driversi686Linux.mesa - driversi686Linux.amdvlk - driversi686Linux.vaapiVdpau - driversi686Linux.libvdpau-va-gl - ]; - }; - }; - - boot.initrd.kernelModules = [ "amdgpu" ]; - - environment.sessionVariables = { - AMD_VULKAN_ICD = "RADV"; - }; - - nixpkgs.overlays = import ./pkgs pkgs; - nixpkgs.config.allowUnfree = true; - system.stateVersion = "23.11"; } - diff --git a/flake.lock b/flake.lock index b829668..c81a576 100644 --- a/flake.lock +++ b/flake.lock @@ -1,64 +1,64 @@ { "nodes": { - "home-manager": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1718243258, - "narHash": "sha256-abBpj2VU8p6qlRzTU8o22q68MmOaZ4v8zZ4UlYl5YRU=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "8d5e27b4807d25308dfe369d5a923d87e7dbfda3", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1718318537, - "narHash": "sha256-4Zu0RYRcAY/VWuu6awwq4opuiD//ahpc2aFHg2CWqFY=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "e9ee548d90ff586a6471b4ae80ae9cfcbceb3420", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nur": { - "locked": { - "lastModified": 1715942738, - "narHash": "sha256-85fVkx0bFqblV89A/KLGuJd0IsxCT0wOTIFBQWM1p0o=", - "owner": "nix-community", - "repo": "NUR", - "rev": "cbe245e7ed40f92a6d40bb4a458f9003bbe612d7", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "NUR", - "type": "github" - } - }, - "root": { - "inputs": { - "home-manager": "home-manager", - "nixpkgs": "nixpkgs", - "nur": "nur" - } - } + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1719827439, + "narHash": "sha256-tneHOIv1lEavZ0vQ+rgz67LPNCgOZVByYki3OkSshFU=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "59ce796b2563e19821361abbe2067c3bb4143a7d", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1719848872, + "narHash": "sha256-H3+EC5cYuq+gQW8y0lSrrDZfH71LB4DAf+TDFyvwCNA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "00d80d13810dbfea8ab4ed1009b09100cca86ba8", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nur": { + "locked": { + "lastModified": 1719938409, + "narHash": "sha256-GzmLs/YaKAzpTQr9u4VpU0ISGtBluAyx9qTZC/86wb4=", + "owner": "nix-community", + "repo": "NUR", + "rev": "1ec5b968d5751a0c817b7e56974059d01b348bf2", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "nixpkgs": "nixpkgs", + "nur": "nur" + } + } }, "root": "root", "version": 7 -} + } diff --git a/flake.nix b/flake.nix index d492c09..a0e0144 100644 --- a/flake.nix +++ b/flake.nix @@ -14,18 +14,11 @@ system = "x86_64-linux"; modules = [ { nixpkgs.overlays = [ nur.overlay ]; } - ./configuration.nix nur.nixosModules.nur - home-manager.nixosModules.home-manager { - home-manager = { - useGlobalPkgs = true; - useUserPackages = true; - users.krizej = import ./home.nix; - }; - } + home-manager.nixosModules.home-manager + ./configuration.nix ]; }; }; }; } - diff --git a/misc/default.nix b/misc/default.nix index c79ee4b..2ca44ab 100644 --- a/misc/default.nix +++ b/misc/default.nix @@ -1,8 +1,12 @@ { ... }: { imports = [ - ./dunst.nix - ./flameshot.nix - ./picom.nix + ./documentation.nix + ./networking.nix + ./nix.nix + ./sudo.nix + ./system.nix + ./theme.nix + ./xdg.nix ]; } diff --git a/misc/documentation.nix b/misc/documentation.nix index e69de29..c2b0ff7 100644 --- a/misc/documentation.nix +++ b/misc/documentation.nix @@ -0,0 +1,23 @@ +{ pkgs, ... }: +{ + documentation = { + enable = true; + dev.enable = true; + doc.enable = false; + info.enable = false; + man = { + enable = true; + generateCaches = false; + man-db.enable = false; + mandoc.enable = true; + }; + }; + home-manager.users.krizej.home.sessionVariables = { + # c docs first + "MANSECT" = "2:3:3p:3type:1:1p:n:l:8:0:0p:5:4:9:6:7"; + }; + environment.systemPackages = with pkgs; [ + man-pages + man-pages-posix + ]; +} \ No newline at end of file diff --git a/misc/networking.nix b/misc/networking.nix index e69de29..ed68569 100644 --- a/misc/networking.nix +++ b/misc/networking.nix @@ -0,0 +1,5 @@ +{ ... }: +{ + networking.hostName = "krizej-pc"; + networking.networkmanager.enable = true; +} \ No newline at end of file diff --git a/misc/nix.nix b/misc/nix.nix index 7110d35..be6d2f2 100644 --- a/misc/nix.nix +++ b/misc/nix.nix @@ -1,12 +1,11 @@ -{ ... }: +{ pkgs, ... }: { nix.settings.experimental-features = [ "nix-command" "flakes" ]; nixpkgs.config.permittedInsecurePackages = [ "freeimage-unstable-2021-11-01" - "openssl-1.1.1w" ]; - nixpkgs.overlays = import ./pkgs pkgs; + nixpkgs.overlays = import ../pkgs pkgs; nixpkgs.config.allowUnfree = true; } diff --git a/misc/sudo.nix b/misc/sudo.nix index e69de29..0e2b551 100644 --- a/misc/sudo.nix +++ b/misc/sudo.nix @@ -0,0 +1,6 @@ +{ ... }: +{ + security.sudo.extraConfig = '' + Defaults pwfeedback + ''; +} diff --git a/misc/system.nix b/misc/system.nix index e69de29..f2393ef 100644 --- a/misc/system.nix +++ b/misc/system.nix @@ -0,0 +1,44 @@ +{ pkgs, ... }: +{ + boot = { + loader = { + timeout = 2; + grub = { + enable = true; + device = "/dev/disk/by-id/ata-Samsung_SSD_860_EVO_500GB_S4CNNE0M700172J"; + gfxmodeBios = "auto"; # 1920x1080 did not work, this doesn't either + splashImage = null; + font = null; + }; + }; + # this doesn't even work + kernelParams = [ + "video=DP-3:1920x1080@240" + "video=HDMI-1:1920x1080@75" + ]; + initrd.kernelModules = [ "amdgpu" ]; + }; + + time.timeZone = "Europe/Warsaw"; + + sound.enable = true; + hardware.pulseaudio.enable = true; + + system.stateVersion = "23.11"; + + users.users.krizej = { + isNormalUser = true; + extraGroups = ["wheel" "input"]; + }; + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + users.krizej = rec { + home.stateVersion = "23.11"; + home.username = "krizej"; + home.homeDirectory = "/home/krizej"; + }; + }; + + environment.systemPackages = [ pkgs.ntfs3g ]; +} diff --git a/misc/theme.nix b/misc/theme.nix index e69de29..fabe30d 100644 --- a/misc/theme.nix +++ b/misc/theme.nix @@ -0,0 +1,45 @@ +{ pkgs, ... }: +{ + environment.systemPackages = [ + pkgs.gnomeExtensions.user-themes + ]; + + fonts = { + enableDefaultPackages = true; + packages = with pkgs; [ + jetbrains-mono + ]; + fontconfig.defaultFonts = { + serif = [ "JetBrains Mono NL" ]; + sansSerif = [ "JetBrains Mono NL" ]; + monospace = [ "JetBrains Mono NL" ]; + }; + }; + + qt = { + enable = true; + platformTheme = "gnome"; + style = "adwaita-dark"; + }; + + home-manager.users.krizej = { + home.pointerCursor = { + gtk.enable = true; + x11.enable = true; + name = "aero-drop"; + package = pkgs.win7-cursors; + }; + + gtk = { + enable = true; + iconTheme = { + name = "Arc"; + package = pkgs.arc-icon-theme; + }; + theme = { + name = "Arc-Mono"; + package = pkgs.arc-mono-gtk-theme; + }; + }; + }; +} \ No newline at end of file diff --git a/misc/xdg.nix b/misc/xdg.nix index b4da5ba..d44a7bd 100644 --- a/misc/xdg.nix +++ b/misc/xdg.nix @@ -1,9 +1,10 @@ -{ config, pkgs, ... }: +{ config, lib, pkgs, ... }: let HOME = config.home-manager.users.krizej.home.homeDirectory; in { home-manager.users.krizej = { home.packages = with pkgs; [ + xdg-user-dirs xdg-desktop-portal xdg-desktop-portal-gnome ]; diff --git a/pkgs/arc-mono-gtk-theme.nix b/pkgs/arc-mono-gtk-theme.nix index 7559dee..caaffbf 100644 --- a/pkgs/arc-mono-gtk-theme.nix +++ b/pkgs/arc-mono-gtk-theme.nix @@ -1,17 +1,18 @@ -{ lib, stdenv -, fetchFromGitHub -, sassc -, meson -, ninja -, glib -, gnome -, gtk-engine-murrine -, inkscape -, cinnamon -, makeFontsConf -, python3 +{ + lib, + stdenv, + fetchFromGitHub, + sassc, + meson, + ninja, + glib, + gnome, + gtk-engine-murrine, + inkscape, + cinnamon, + makeFontsConf, + python3, }: - stdenv.mkDerivation rec { pname = "arc-theme"; version = "i don't care"; @@ -47,7 +48,7 @@ stdenv.mkDerivation rec { ''; # Fontconfig error: Cannot load default config file: No such file: (null) - FONTCONFIG_FILE = makeFontsConf { fontDirectories = [ ]; }; + FONTCONFIG_FILE = makeFontsConf {fontDirectories = [];}; mesonFlags = [ "-Dthemes=gtk2,gtk3,gtk4" @@ -63,6 +64,6 @@ stdenv.mkDerivation rec { homepage = "https://github.com/jnsh/arc-theme"; license = licenses.gpl3Only; platforms = platforms.linux; - maintainers = with maintainers; [ simonvandel romildo ]; + maintainers = with maintainers; [simonvandel romildo]; }; } diff --git a/pkgs/darkcold-gtk-theme.nix b/pkgs/darkcold-gtk-theme.nix index 764f7ba..fbdf9d0 100644 --- a/pkgs/darkcold-gtk-theme.nix +++ b/pkgs/darkcold-gtk-theme.nix @@ -1,4 +1,8 @@ -{ lib, stdenv, fetchFromGitHub, }: +{ + lib, + stdenv, + fetchFromGitHub, +}: stdenv.mkDerivation { pname = "darkcold-gtk-theme"; version = "v5.1.0"; @@ -14,8 +18,8 @@ stdenv.mkDerivation { runHook preInstall mkdir -p "$out/share/themes/darkcold/" - cp -r * "$out/share/themes/darkcold/"; - cp userContent.css "$out/"; + cp -r * "$out/share/themes/darkcold/"; + cp userContent.css "$out/"; runHook postInstall ''; @@ -27,4 +31,3 @@ stdenv.mkDerivation { platforms = platforms.linux; }; } - diff --git a/pkgs/default.nix b/pkgs/default.nix index d4ec932..c5d676a 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -12,4 +12,3 @@ pkgs: [ sddm-i3-theme = pkgs.callPackage ./sddm-i3-theme.nix {}; }) ] - diff --git a/pkgs/e17gtk-revolved.nix b/pkgs/e17gtk-revolved.nix index 04949e1..42b5b76 100644 --- a/pkgs/e17gtk-revolved.nix +++ b/pkgs/e17gtk-revolved.nix @@ -1,4 +1,8 @@ -{ lib, stdenv, fetchFromGitea }: +{ + lib, + stdenv, + fetchFromGitea, +}: stdenv.mkDerivation { pname = "e17gtk-revolved"; version = "2023-06-13"; @@ -16,7 +20,7 @@ stdenv.mkDerivation { install -d $out/share/themes/E17gtk-revolved cp -r * $out/share/themes/E17gtk-revolved - + runHook postInstall ''; @@ -27,4 +31,3 @@ stdenv.mkDerivation { platforms = platforms.linux; }; } - diff --git a/pkgs/ezquake-fork.nix b/pkgs/ezquake-fork.nix index dd945e4..e53ef85 100644 --- a/pkgs/ezquake-fork.nix +++ b/pkgs/ezquake-fork.nix @@ -1,8 +1,22 @@ -{ lib, stdenv, fetchFromGitHub, curl, expat -, jansson, libpng, libjpeg, libGLU, libGL -, libsndfile, libXxf86vm, pcre, pkg-config, SDL2 -, vim, speex }: - +{ + lib, + stdenv, + fetchFromGitHub, + curl, + expat, + jansson, + libpng, + libjpeg, + libGLU, + libGL, + libsndfile, + libXxf86vm, + pcre, + pkg-config, + SDL2, + vim, + speex, +}: stdenv.mkDerivation rec { pname = "ezquake"; version = "3.6.5"; @@ -15,9 +29,21 @@ stdenv.mkDerivation rec { hash = "sha256-Ldv//lsukn985IljXHXDClsYY+Sk1fh41s1NySWkvuE="; }; - nativeBuildInputs = [ pkg-config ]; + nativeBuildInputs = [pkg-config]; buildInputs = [ - expat curl jansson libpng libjpeg libGLU libGL libsndfile libXxf86vm pcre SDL2 vim speex + expat + curl + jansson + libpng + libjpeg + libGLU + libGL + libsndfile + libXxf86vm + pcre + SDL2 + vim + speex ]; installPhase = with lib; let diff --git a/pkgs/oxylite-icon-theme.nix b/pkgs/oxylite-icon-theme.nix index 1282948..1588c08 100644 --- a/pkgs/oxylite-icon-theme.nix +++ b/pkgs/oxylite-icon-theme.nix @@ -1,4 +1,10 @@ -{ lib, stdenv, fetchFromGitHub, gtk3, hicolor-icon-theme }: +{ + lib, + stdenv, + fetchFromGitHub, + gtk3, + hicolor-icon-theme, +}: stdenv.mkDerivation { pname = "oxylite-icon-theme"; version = "2024-04-22"; @@ -10,10 +16,10 @@ stdenv.mkDerivation { hash = "sha256-syjFs2gkscdlpOmWgraj4l1+WwIaIVFZlhDY4nP99Oo="; }; -# propagatedBuildInputs = [ hicolor-icon-theme ]; + # propagatedBuildInputs = [ hicolor-icon-theme ]; - nativeBuildInputs = [ gtk3 ]; -# dontDropIconThemeCache = true; + nativeBuildInputs = [gtk3]; + # dontDropIconThemeCache = true; buildPhase = '' runHook preBuild @@ -23,20 +29,20 @@ stdenv.mkDerivation { installPhase = '' runHook preInstall - prefix="$out/share/icons/oxylite"; - mkdir -p "$prefix"; + prefix="$out/share/icons/oxylite"; + mkdir -p "$prefix"; for d in actions apps categories devices emblems emotes mimetypes places status ui; do - install -d "$prefix/$d"; - cp -ar "$d" "$prefix"; - chmod -R u=rwX,g=rX,o=rX "$prefix/$d"; - done; + install -d "$prefix/$d"; + cp -ar "$d" "$prefix"; + chmod -R u=rwX,g=rX,o=rX "$prefix/$d"; + done; - install -m 644 index.theme "$prefix/index.theme"; - install -m 644 licenses.yml "$prefix/licenses.yml"; - install -m 644 README.md "$prefix/README.md"; + install -m 644 index.theme "$prefix/index.theme"; + install -m 644 licenses.yml "$prefix/licenses.yml"; + install -m 644 README.md "$prefix/README.md"; gtk-update-icon-cache --force "$prefix" - + runHook postInstall ''; @@ -47,4 +53,3 @@ stdenv.mkDerivation { platforms = platforms.linux; }; } - diff --git a/pkgs/sddm-i3-theme.nix b/pkgs/sddm-i3-theme.nix index 49dc9a2..8564ea6 100644 --- a/pkgs/sddm-i3-theme.nix +++ b/pkgs/sddm-i3-theme.nix @@ -1,21 +1,25 @@ -{ lib, stdenv, fetchzip }: +{ + lib, + stdenv, + fetchzip, +}: stdenv.mkDerivation rec { - pname = "sddm-i3-theme"; - version = "1"; + pname = "sddm-i3-theme"; + version = "1"; - src = fetchzip { - # lol - url = "http://192.168.1.12/${pname}.tar.gz"; - hash = "sha256-WGvjW3Z8TfJhAsbxUyYRKSYFucEwYzTIbpDZsLTPbyo="; - }; + src = fetchzip { + # lol + url = "http://192.168.1.12/${pname}.tar.gz"; + hash = "sha256-WGvjW3Z8TfJhAsbxUyYRKSYFucEwYzTIbpDZsLTPbyo="; + }; - installPhase = '' - mkdir -p $out/share/sddm/themes/${pname}/ - cp -r $src/* $out/share/sddm/themes/${pname}/ - ''; + installPhase = '' + mkdir -p $out/share/sddm/themes/${pname}/ + cp -r $src/* $out/share/sddm/themes/${pname}/ + ''; - meta = { - license = lib.licenses.mit; - platforms = lib.platforms.linux; - }; + meta = { + license = lib.licenses.mit; + platforms = lib.platforms.linux; + }; } diff --git a/pkgs/vim-darcula-theme.nix b/pkgs/vim-darcula-theme.nix index 1b0751e..a950f1d 100644 --- a/pkgs/vim-darcula-theme.nix +++ b/pkgs/vim-darcula-theme.nix @@ -1,4 +1,7 @@ -{ lib, pkgs }: +{ + lib, + pkgs, +}: pkgs.vimUtils.buildVimPlugin { name = "vim-darcula-theme"; src = pkgs.fetchFromGitHub { diff --git a/pkgs/win7-cursors.nix b/pkgs/win7-cursors.nix index d337894..c0b29bd 100644 --- a/pkgs/win7-cursors.nix +++ b/pkgs/win7-cursors.nix @@ -1,4 +1,8 @@ -{ lib, stdenv, fetchzip }: +{ + lib, + stdenv, + fetchzip, +}: stdenv.mkDerivation rec { pname = "win7-cursors"; version = "1"; @@ -28,4 +32,3 @@ stdenv.mkDerivation rec { platforms = platforms.linux; }; } - diff --git a/pkgs/winvista-cursors.nix b/pkgs/winvista-cursors.nix index 8553070..3a8be21 100644 --- a/pkgs/winvista-cursors.nix +++ b/pkgs/winvista-cursors.nix @@ -1,4 +1,8 @@ -{ lib, stdenv, fetchFromGitHub }: +{ + lib, + stdenv, + fetchFromGitHub, +}: stdenv.mkDerivation { pname = "winvista-cursors"; version = "1"; @@ -23,4 +27,3 @@ stdenv.mkDerivation { platforms = platforms.linux; }; } - diff --git a/pkgs/winxp-cursors.nix b/pkgs/winxp-cursors.nix index c6b6590..c71b2c5 100644 --- a/pkgs/winxp-cursors.nix +++ b/pkgs/winxp-cursors.nix @@ -1,4 +1,12 @@ -{ lib, stdenv, fetchFromGitHub, cmake, python3, xorg, shadows ? false }: +{ + lib, + stdenv, + fetchFromGitHub, + cmake, + python3, + xorg, + shadows ? false, +}: stdenv.mkDerivation rec { pname = "winxp-cursors"; version = "2023-11-22"; @@ -11,10 +19,13 @@ stdenv.mkDerivation rec { hash = "sha256-bvkoe/L9KjMcCj5SlcNGoZKZtQwZHGYPFVSZbRfLztY="; }; - nativeBuildInputs = [ cmake python3 xorg.xcursorgen ]; + nativeBuildInputs = [cmake python3 xorg.xcursorgen]; dontUseCmakeConfigure = true; - cursor_variant = if shadows then "with-shadow" else "no-shadow"; + cursor_variant = + if shadows + then "with-shadow" + else "no-shadow"; buildPhase = '' cd packaging @@ -34,8 +45,7 @@ stdenv.mkDerivation rec { meta = with lib; { description = "Windows XP Cursors"; homepage = "https://github.com/rozniak/xfce-winxp-tc"; - license = with licenses; [ unfreeRedistributable gpl2Plus ]; + license = with licenses; [unfreeRedistributable gpl2Plus]; platforms = platforms.linux; }; } - diff --git a/pkgs/winxp-icons.nix b/pkgs/winxp-icons.nix index 74afe35..c6e3613 100644 --- a/pkgs/winxp-icons.nix +++ b/pkgs/winxp-icons.nix @@ -1,4 +1,11 @@ -{ lib, stdenv, fetchFromGitHub, cmake, python3, gtk3 }: +{ + lib, + stdenv, + fetchFromGitHub, + cmake, + python3, + gtk3, +}: stdenv.mkDerivation { pname = "winxp-icons"; version = "2024-03-27"; @@ -11,8 +18,8 @@ stdenv.mkDerivation { hash = "sha256-bvkoe/L9KjMcCj5SlcNGoZKZtQwZHGYPFVSZbRfLztY="; }; - nativeBuildInputs = [ cmake python3 gtk3 ]; - dontUseCmakeConfigure = true; + nativeBuildInputs = [cmake python3 gtk3]; + dontUseCmakeConfigure = true; buildPhase = '' cd packaging @@ -33,8 +40,7 @@ stdenv.mkDerivation { meta = with lib; { description = "Windows XP Icons"; homepage = "https://github.com/rozniak/xfce-winxp-tc"; - license = with licenses; [ unfreeRedistributable gpl2Plus ]; + license = with licenses; [unfreeRedistributable gpl2Plus]; platforms = platforms.linux; }; } - diff --git a/programs/alacritty.nix b/programs/alacritty.nix index dfb4c0c..6ca7c41 100644 --- a/programs/alacritty.nix +++ b/programs/alacritty.nix @@ -1,41 +1,46 @@ -{...}: +{ ... }: { - enable = true; - settings = { - font.size = 10; - window.padding = { x = 2; y = 2; }; - cursor = { - style = { - shape = "Beam"; - blinking = "On"; + home-manager.users.krizej.programs.alacritty = { + enable = true; + settings = { + font.size = 10; + window.padding = { + x = 2; + y = 2; }; - blink_timeout = 0; - unfocused_hollow = false; - }; - colors = { - primary = { - foreground = "#e4e4ef"; - background = "#181818"; + cursor = { + style = { + shape = "Beam"; + blinking = "On"; + }; + blink_timeout = 0; + unfocused_hollow = false; }; - normal = { - black = "#202020"; - red = "#f43841"; - green = "#73c936"; - yellow = "#ffdd33"; - blue = "#5a81ce"; - magenta = "#ae65b7"; - cyan = "#71afcf"; - white = "#dddddd"; - }; - bright = { - black = "#282828"; - red = "#ff4f58"; - green = "#91d956"; - yellow = "#ffee55"; - blue = "#71afe8"; - magenta = "#ce85e7"; - cyan = "#91dfef"; - white = "#f4f4ff"; + colors = { + primary = { + foreground = "#e4e4ef"; + background = "#181818"; + }; + normal = { + black = "#202020"; + red = "#f43841"; + green = "#73c936"; + yellow = "#ffdd33"; + blue = "#5a81ce"; + magenta = "#ae65b7"; + cyan = "#71afcf"; + white = "#dddddd"; + }; + bright = { + black = "#282828"; + red = "#ff4f58"; + green = "#91d956"; + yellow = "#ffee55"; + blue = "#71afe8"; + magenta = "#ce85e7"; + cyan = "#91dfef"; + white = "#f4f4ff"; + }; }; }; }; diff --git a/programs/autorandr.nix b/programs/autorandr.nix index 1582ae3..2444ec0 100644 --- a/programs/autorandr.nix +++ b/programs/autorandr.nix @@ -1,34 +1,33 @@ { pkgs, ... }: { - enable = true; - hooks.postswitch = { - "notify-i3" = "${pkgs.i3}/bin/i3-msg restart"; - }; - profiles = { - "main" = { - fingerprint = { - "DP-3" = "00ffffffffffff0026cd5961830600001d1f0104b5361e783b4c70a5574ea4260b5054a56b80710081408180a940b3009500950fd1c0023a801871382d40582c4500202f2100001e000000ff0031313737393132393031363637000000fd0030f0ffff3c010a202020202020000000fc00504c3235393048530a20202020019202033bf1529005040302011112131f203f140607151640e200d52309070783010000e305c301e60605016666006d1a0000020130f00000000000005a8780a070384d4030203500202f2100001ad09480a070381e4008203500202f2100001a23e88078703887401c40980c202f2100001a000000000000000000000000000063"; - "HDMI-3" = "00ffffffffffff0026cd326162190000291c010380361e782a9055a75553a028135054a56b80710081408180a940b3009500950fd1c0023a801871382d40582c4500202f2100001e000000ff0031313534333834313036343938000000fd00374c1e5312000a202020202020000000fc00504c32353330480a2020202020016202032bf14f90050403020111121314060715161f230907078301000065030c001000681a00000101284be6023a801871382d40582c4500202f2100001f011d8018711c1620582c2500202f2100009e011d007251d01e206e285500202f2100001e2a4480a07038274030203500202f2100001a000000000000000000000000ab"; - }; - config = { - "DP-3" = { - enable = true; - mode = "1920x1080"; - rate = "239.76"; - position = "0x0"; + # TODO: this shit ain't working + home-manager.users.krizej.programs.autorandr = { + enable = true; + hooks.postswitch = { + "notify-i3" = "${pkgs.i3}/bin/i3-msg restart"; + }; + profiles = { + "main" = { + fingerprint = { + "DP-3" = "00ffffffffffff0026cd5961830600001d1f0104b5361e783b4c70a5574ea4260b5054a56b80710081408180a940b3009500950fd1c0023a801871382d40582c4500202f2100001e000000ff0031313737393132393031363637000000fd0030f0ffff3c010a202020202020000000fc00504c3235393048530a20202020019202033bf1529005040302011112131f203f140607151640e200d52309070783010000e305c301e60605016666006d1a0000020130f00000000000005a8780a070384d4030203500202f2100001ad09480a070381e4008203500202f2100001a23e88078703887401c40980c202f2100001a000000000000000000000000000063"; + "HDMI-3" = "00ffffffffffff0026cd326162190000291c010380361e782a9055a75553a028135054a56b80710081408180a940b3009500950fd1c0023a801871382d40582c4500202f2100001e000000ff0031313534333834313036343938000000fd00374c1e5312000a202020202020000000fc00504c32353330480a2020202020016202032bf14f90050403020111121314060715161f230907078301000065030c001000681a00000101284be6023a801871382d40582c4500202f2100001f011d8018711c1620582c2500202f2100009e011d007251d01e206e285500202f2100001e2a4480a07038274030203500202f2100001a000000000000000000000000ab"; }; - "HDMI-3" = { - enable = true; - mode = "1920x1080"; - rate = "74.97"; - primary = true; - position = "1920x0"; + config = { + "DP-3" = { + enable = true; + mode = "1920x1080"; + rate = "239.76"; + position = "0x0"; + }; + "HDMI-3" = { + enable = true; + mode = "1920x1080"; + rate = "74.97"; + primary = true; + position = "1920x0"; + }; }; }; }; }; } - - - - diff --git a/programs/default.nix b/programs/default.nix index 1854b04..2c3133c 100644 --- a/programs/default.nix +++ b/programs/default.nix @@ -1,16 +1,87 @@ -[ - # i3 is not here because it goes into xsession.windowManager instead of into programs - "home-manager" - "firefox" - "alacritty" - "fish" - "eza" - "yt-dlp" - "rofi" - "autorandr" - "i3status" - "ssh" - "git" - "vim" -] +{ pkgs, ... }: +{ + imports = [ + ./alacritty.nix + ./autorandr.nix + ./firefox.nix + ./fish.nix + ./git.nix + ./i3.nix + ./ssh.nix + ./vim.nix + ]; + config = { + programs = { + dconf.enable = true; + steam.enable = true; + }; + + environment.systemPackages = with pkgs; [ + ed # is the standard text editor. + ripgrep + eza + file + tree + btop + unzip + wget + gcc + gnumake + pkg-config + python39 + ]; + + # maybe i can just put it into the packages but idk whatever + home-manager.users.krizej.programs = { + home-manager.enable = true; + eza.enable = true; + yt-dlp.enable = true; + }; + home-manager.users.krizej.home.packages = with pkgs; [ + fortune + + xarchiver + gvfs + yad + pcmanfm + + pavucontrol + pamixer + + element-desktop + discord + + gamemode + ezquake + vkquake + ericw-tools + trenchbroom + r2modman + + libreoffice-qt + gimp + sqlitebrowser + feh + + wineWowPackages.stable + winetricks + + gdb + ccls + clang-tools + tcl + + gpu-screen-recorder # todo: config this shit so it works + gpu-screen-recorder-gtk + obs-studio + + jetbrains.pycharm-community + jetbrains.clion + (pkgs.writeShellScriptBin "clion-nix" '' + cd ~/projects/$1 + nix-shell --run "clion ." + '') + ]; + }; +} diff --git a/programs/firefox.nix b/programs/firefox.nix index fe6de22..f4e837a 100644 --- a/programs/firefox.nix +++ b/programs/firefox.nix @@ -1,26 +1,27 @@ { pkgs, ... }: { - enable = true; - policies = { - DisableTelemetry = true; - DisableFirefoxStudies = true; - EnableTrackingProtection = { - Value = true; - Locked = true; - Cryptomining = true; - Fingerprinting = true; - }; - DisablePocket = true; - DisableFirefoxAccounts = true; - DisableAccounts = true; - DisableFirefoxScreenshots = true; - OverridePostUpdatePage = ""; - DontCheckDefaultBrowser = true; - DisplayBookmarksToolbar = "always"; - DisplayMenuBar = "default-off"; - SearchBar = "unified"; - DefaultDownloadDirectory = "$HOME/downloads"; - ExtensionSettings = { + home-manager.users.krizej.programs.firefox = { + enable = true; + policies = { + DisableTelemetry = true; + DisableFirefoxStudies = true; + EnableTrackingProtection = { + Value = true; + Locked = true; + Cryptomining = true; + Fingerprinting = true; + }; + DisablePocket = true; + DisableFirefoxAccounts = true; + DisableAccounts = true; + DisableFirefoxScreenshots = true; + OverridePostUpdatePage = ""; + DontCheckDefaultBrowser = true; + DisplayBookmarksToolbar = "always"; + DisplayMenuBar = "default-off"; + SearchBar = "unified"; + DefaultDownloadDirectory = "$HOME/downloads"; + ExtensionSettings = { # ublock origin "uBlock0@raymondhill.net" = { install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; @@ -36,60 +37,62 @@ install_url = "https://addons.mozilla.org/firefox/downloads/file/4251917/latest.xpi"; installation_mode = "force_installed"; }; - }; - }; - profiles.krizej = { - id = 0; - isDefault = true; - search = { - default = "envs.net - SearXNG"; - force = true; - engines = { - "envs.net - SearXNG" = { - urls = [{ template = "https://searx.envs.net/searxng/search?q={searchTerms}"; }]; - icon = "https://envs.net/favicon.ico"; - iconUpdateURL = "https://envs.net/favicon.ico"; - updateInterval = 24 * 60 * 60 * 1000; - definedAliases = [ "@sx" ]; - }; - - "Wikipedia (en)".metaData.alias = "@w"; - # searx sometimes sucks - "Google".metaData.alias = "@g"; - - "Nix Packages" = { - urls = [{ template = "https://search.nixos.org/packages?channel=unstable&query={searchTerms}"; }]; - icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; - definedAliases = [ "@np" ]; - }; - "Nix Options" = { - urls = [{ template = "https://search.nixos.org/options?channel=unstable&query={searchTerms}"; }]; - icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; - definedAliases = [ "@no" ]; - }; - "Home Manger" = { - urls = [{ template = "https://home-manager-options.extranix.com/?release=master&query={searchTerms}"; }]; - icon = "https://home-manager-options.extranix.com/images/favicon.png"; - iconUpdateURL = "https://home-manager-options.extranix.com/images/favicon.png"; - updateInterval = 24 * 60 * 60 * 1000; - definedAliases = [ "@hm" ]; - }; - "Arch Wiki" = { - urls = [{ template = "https://wiki.archlinux.org/index.php?search={searchTerms}"; }]; - icon = "https://wiki.archlinux.org/favicon.ico"; - iconUpdateURL = "https://wiki.archlinux.org/favicon.ico"; - updateInterval = 24 * 60 * 60 * 1000; - definedAliases = [ "@aw" ]; - }; - - # the rest can fuck off - "Bing".metaData.hidden = true; - "DuckDuckGo".metaData.hidden = true; }; }; - settings = { - "extensions.activeThemeID" = "firefox-compact-dark@mozilla.org"; - "services.sync.prefs.sync.extensions.activeThemeID" = "false"; + profiles.krizej = { + id = 0; + isDefault = true; + search = { + default = "envs.net - SearXNG"; + force = true; + engines = { + "envs.net - SearXNG" = { + urls = [{template = "https://searx.envs.net/searxng/search?q={searchTerms}";}]; + icon = "https://envs.net/favicon.ico"; + iconUpdateURL = "https://envs.net/favicon.ico"; + updateInterval = 24 * 60 * 60 * 1000; + definedAliases = ["@sx"]; + }; + + # searx sometimes sucks + "Google".metaData.alias = "@g"; + + "Wikipedia (en)".metaData.alias = "@w"; + + "Nix Packages" = { + urls = [{template = "https://search.nixos.org/packages?channel=unstable&query={searchTerms}";}]; + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = ["@np"]; + }; + "Nix Options" = { + urls = [{template = "https://search.nixos.org/options?channel=unstable&query={searchTerms}";}]; + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = ["@no"]; + }; + "Home Manger" = { + urls = [{template = "https://home-manager-options.extranix.com/?release=master&query={searchTerms}";}]; + icon = "https://home-manager-options.extranix.com/images/favicon.png"; + iconUpdateURL = "https://home-manager-options.extranix.com/images/favicon.png"; + updateInterval = 24 * 60 * 60 * 1000; + definedAliases = ["@hm"]; + }; + "Arch Wiki" = { + urls = [{template = "https://wiki.archlinux.org/index.php?search={searchTerms}";}]; + icon = "https://wiki.archlinux.org/favicon.ico"; + iconUpdateURL = "https://wiki.archlinux.org/favicon.ico"; + updateInterval = 24 * 60 * 60 * 1000; + definedAliases = ["@aw"]; + }; + + # the rest can fuck off + "Bing".metaData.hidden = true; + "DuckDuckGo".metaData.hidden = true; + }; + }; + settings = { + "extensions.activeThemeID" = "firefox-compact-dark@mozilla.org"; + "services.sync.prefs.sync.extensions.activeThemeID" = "false"; + }; }; - }; + }; } diff --git a/programs/fish.nix b/programs/fish.nix index fe67b2b..a6e6c82 100644 --- a/programs/fish.nix +++ b/programs/fish.nix @@ -1,21 +1,96 @@ -{...}: +{ pkgs, ... }: { - enable = true; - - shellAliases = { - "ls" = "eza -lhs type"; - "cp" = "cp -v"; - "mv" = "mv -v"; - "ytmp3" = "yt-dlp -o '%(title)s.%(ext)s' -x --audio-format mp3"; - "myip" = "curl ifconfig.me"; - }; + environment.systemPackages = [ pkgs.fish ]; + programs.fish.enable = true; + users.users.krizej.shell = pkgs.fish; - shellAbbrs = { - "2clip" = "xclip -selection clipboard"; - }; + programs.fish.promptInit = '' + ${pkgs.any-nix-shell}/bin/any-nix-shell fish --info-right | source + ''; - functions = { - "fish_greeting" = "fortune"; - "fish_prompt" = builtins.readFile ../files/prompt.fish; + home-manager.users.krizej.programs.fish = { + enable = true; + + shellAliases = { + "ls" = "eza -lhs type"; + "cp" = "cp -v"; + "mv" = "mv -v"; + "ytmp3" = "yt-dlp -o '%(title)s.%(ext)s' -x --audio-format mp3"; + "myip" = "curl ifconfig.me"; + }; + + shellAbbrs = { + "2clip" = "xclip -selection clipboard"; + }; + + functions = { + "fish_greeting" = "fortune"; + "fish_prompt" = '' + # name: Informative Vcs + # author: Mariusz Smykula + + # function fish_prompt --description 'Write out the prompt' + set -l last_pipestatus $pipestatus + set -lx __fish_last_status $status # Export for __fish_print_pipestatus. + + if not set -q __fish_git_prompt_show_informative_status + set -g __fish_git_prompt_show_informative_status 1 + end + if not set -q __fish_git_prompt_hide_untrackedfiles + set -g __fish_git_prompt_hide_untrackedfiles 1 + end + if not set -q __fish_git_prompt_color_branch + set -g __fish_git_prompt_color_branch magenta --bold + end + if not set -q __fish_git_prompt_showupstream + set -g __fish_git_prompt_showupstream informative + end + if not set -q __fish_git_prompt_color_dirtystate + set -g __fish_git_prompt_color_dirtystate blue + end + if not set -q __fish_git_prompt_color_stagedstate + set -g __fish_git_prompt_color_stagedstate yellow + end + if not set -q __fish_git_prompt_color_invalidstate + set -g __fish_git_prompt_color_invalidstate red + end + if not set -q __fish_git_prompt_color_untrackedfiles + set -g __fish_git_prompt_color_untrackedfiles $fish_color_normal + end + if not set -q __fish_git_prompt_color_cleanstate + set -g __fish_git_prompt_color_cleanstate green --bold + end + + set -l color_cwd + set -l suffix + if functions -q fish_is_root_user; and fish_is_root_user + if set -q fish_color_cwd_root + set color_cwd $fish_color_cwd_root + else + set color_cwd $fish_color_cwd + end + set suffix '#' + else + set color_cwd $fish_color_cwd + set suffix '$' + end + + # PWD + set_color $color_cwd + echo -n (prompt_pwd) + set_color normal + + printf '%s ' (fish_vcs_prompt) + + set -l status_color (set_color $fish_color_status) + set -l statusb_color (set_color --bold $fish_color_status) + set -l prompt_status (__fish_print_pipestatus "[" "]" "|" "$status_color" "$statusb_color" $last_pipestatus) + echo -n $prompt_status + set_color normal + + echo -n "$suffix " + # end + ''; + }; }; } diff --git a/programs/git.nix b/programs/git.nix index 4e95606..cbad85b 100644 --- a/programs/git.nix +++ b/programs/git.nix @@ -1,8 +1,10 @@ -{...}: +{ pkgs, ... }: { - enable = true; - userName = "krizej"; - userEmail = "60076189+krizej@users.noreply.github.com"; -# init.defaultBranch = "master"; -# push.autoSetupRemote = true; + environment.systemPackages = [ pkgs.git ]; + home-manager.users.krizej.programs.git = { + enable = true; + userName = "krizej"; + userEmail = "60076189+krizej@users.noreply.github.com"; + extraConfig.init.defaultBranch = "master"; + }; } diff --git a/programs/i3.nix b/programs/i3.nix index 0c8ba1d..643a5df 100644 --- a/programs/i3.nix +++ b/programs/i3.nix @@ -1,167 +1,247 @@ -{ pkgs, ... }: -{ - enable = true; - config = rec { - assigns = { - "2" = [ - { class = "discord"; } - { class = "SchildiChat"; } - { class = "element"; } - ]; - }; - - window = { - border = 1; - titlebar = false; - }; +{ config, pkgs, ... }: +let + HOME = config.home-manager.users.krizej.home.homeDirectory; +in { + services.xserver.windowManager.i3.enable = true; + home-manager.users.krizej = { + xsession.windowManager.i3 = { + enable = true; + config = rec { + assigns = { + "2" = [ + { class = "discord"; } + { class = "SchildiChat"; } + { class = "element"; } + ]; + }; - floating = { - border = 1; - titlebar = true; - criteria = [ - { class = "zenity"; } - { class = "fceux"; } - { title = "Friends List"; } # steam - ]; - }; + window = { + border = 1; + titlebar = true; + }; - gaps = { - inner = 0; - outer = 0; - }; - - fonts = { - names = ["JetBrains Mono NL"]; - size = 10.0; - }; + floating = { + border = 1; + titlebar = true; + criteria = [ + { class = "zenity"; } + { class = "fceux"; } + { title = "Friends List"; } + ]; + }; - bars = [{ - inherit fonts; - trayOutput = "primary"; - statusCommand = "${pkgs.i3status}/bin/i3status"; - }]; + gaps = { + inner = 0; + outer = 0; + }; - defaultWorkspace = "workspace number 1"; - workspaceOutputAssign = [ - { workspace = "1"; output = "DP-3"; } - { workspace = "2"; output = "HDMI-3"; } - ]; + fonts = { + names = [ "JetBrains Mono NL" ]; + size = 10.0; + }; - focus = { - followMouse = true; - mouseWarping = true; - newWindow = "urgent"; - }; - - startup = [ -# { command = "picom &"; notification = false; } - { command = "mpd &"; notification = false; } - { command = "dunst &"; notification = false; } - { command = "flameshot &"; notification = false; } + bars = [ + { + inherit fonts; + trayOutput = "primary"; + statusCommand = "${pkgs.i3status}/bin/i3status"; + } + ]; - # { command = "lcd-bar startdaemon 192.168.1.12 &"; notification = false; } - # { command = "lcd-bar-status &"; notification = false; } + defaultWorkspace = "workspace number 1"; + workspaceOutputAssign = [ + { workspace = "1"; output = "DP-3"; } + { workspace = "2"; output = "HDMI-3"; } + ]; - { command = "i3bar-mouse &"; notification = false; } + focus = { + followMouse = true; + mouseWarping = true; + newWindow = "urgent"; + }; - # { command = "hydration.sh &"; notification = false; } + startup = [ + # { command = "mpd &"; notification = false; } + { command = "dunst &"; notification = false; } + { command = "flameshot &"; notification = false; } - { command = "i3-msg \"workspace 2; append_layout ~/.config/i3/workspace2.json\""; notification = false; } - { command = "discord &"; notification = false; } - { command = "element-desktop &"; notification = false; } - -# { command = "xrandr --output DP-3 --mode 1920x1080 --rate 239.76 --primary --output HDMI-3 --mode 1920x1080 --rate 74.97 --right-of DP-3 &"; notification = false; } - ]; + { command = "i3-msg \"workspace 2; append_layout ~/.config/i3/workspace2.json\""; notification = false; } + { command = "discord &"; notification = false; } + { command = "element-desktop &"; notification = false; } - modes = let - cmd_and_center = (cmd: "exec --no-startup-id i3-msg '${cmd}' && i3-center-mouse-on-focus"); - in { - resize = { - "Left" = cmd_and_center "resize shrink width 10 px or 10 ppt"; - "Right" = cmd_and_center "resize grow width 10 px or 10 ppt"; - "Up" = cmd_and_center "resize shrink height 10 px or 10 ppt"; - "Down" = cmd_and_center "resize grow height 10 px or 10 ppt"; - "Escape" = "mode default"; + # { command = "xrandr --output DP-3 --mode 1920x1080 --rate 239.76 --primary --output HDMI-3 --mode 1920x1080 --rate 74.97 --right-of DP-3 &"; notification = false; } + ]; + + modes = let + cmd_and_center = cmd: "exec --no-startup-id i3-msg '${cmd}' && i3-center-mouse-on-focus"; + in { + resize = { + "Left" = cmd_and_center "resize shrink width 10 px or 10 ppt"; + "Right" = cmd_and_center "resize grow width 10 px or 10 ppt"; + "Up" = cmd_and_center "resize shrink height 10 px or 10 ppt"; + "Down" = cmd_and_center "resize grow height 10 px or 10 ppt"; + "Escape" = "mode default"; + }; + }; + + modifier = "Mod4"; + floating.modifier = "Mod4"; + + keybindings = let + mod = modifier; + execns = "exec --no-startup-id"; + cmd_and_center = cmd: "${execns} i3-msg '${cmd}' && i3custom-center-mouse-on-focus"; + in { + # Program keybinds + "${mod}+Return" = "${execns} alacritty"; + "${mod}+Shift+s" = "${execns} flameshot gui"; + "${mod}+b" = "${execns} firefox"; + "${mod}+d" = "${execns} dmenu_run"; + "--release ${mod}+k" = "${execns} xkill"; + + # Volume control + "Ctrl+F9" = "${execns} pamixer --toggle-mute"; + "Ctrl+F10" = "${execns} pamixer --decrease 5"; + "Ctrl+F11" = "${execns} pamixer --increase 5"; + + # MPD controls + # "Ctrl+F5" = "exec ~/music/select_music.sh"; + # "Ctrl+F6" = "exec mpc prev"; + # "Ctrl+F7" = "exec mpc toggle"; + # "Ctrl+F8" = "exec mpc next"; + # "Ctrl+Shift+F6" = "exec mpc seek -3"; + # "Ctrl+Shift+F7" = "exec mpc clear"; + # "Ctrl+Shift+F8" = "exec mpc seek +3"; + # "Ctrl+Shift+F10" = ''exec mpc volume -5 && dunstify "mpc $(mpc volume)" -r 420''; + # "Ctrl+Shift+F11" = ''exec mpc volume +5 && dunstify "mpc $(mpc volume)" -r 420''; + + # General i3 keybindings + "${mod}+f" = cmd_and_center "fullscreen toggle"; + "${mod}+r" = "mode resize"; + "${mod}+Shift+q" = cmd_and_center "kill"; + "${mod}+Shift+r" = "restart"; + "${mod}+Shift+e" = "${execns} i3-nagbar -t warning -m 'exit?' -b 'yes' 'i3-msg exit'"; + # Mouse bindings + "--border button3" = "${execns} i3custom-window-actions"; + + "${mod}+Left" = cmd_and_center "focus left"; + "${mod}+Right" = cmd_and_center "focus right"; + "${mod}+Up" = cmd_and_center "focus up"; + "${mod}+Down" = cmd_and_center "focus down"; + "${mod}+Shift+Left" = cmd_and_center "move left"; + "${mod}+Shift+Right" = cmd_and_center "move right"; + "${mod}+Shift+Up" = cmd_and_center "move up"; + "${mod}+Shift+Down" = cmd_and_center "move down"; + + "${mod}+q" = cmd_and_center "layout stacking"; + "${mod}+w" = cmd_and_center "layout tabbed"; + "${mod}+e" = cmd_and_center "layout toggle split"; + + "${mod}+Shift+space" = "floating toggle; ${execns} i3custom-center-mouse-on-focus"; + "${mod}+space" = cmd_and_center "focus mode_toggle"; + + "${mod}+1" = cmd_and_center "workspace number 1"; + "${mod}+2" = cmd_and_center "workspace number 2"; + "${mod}+3" = cmd_and_center "workspace number 3"; + "${mod}+4" = cmd_and_center "workspace number 4"; + "${mod}+5" = cmd_and_center "workspace number 5"; + "${mod}+6" = cmd_and_center "workspace number 6"; + "${mod}+7" = cmd_and_center "workspace number 7"; + "${mod}+8" = cmd_and_center "workspace number 8"; + "${mod}+9" = cmd_and_center "workspace number 9"; + "${mod}+0" = cmd_and_center "workspace number 10"; + + "${mod}+Shift+1" = cmd_and_center "move container to workspace number 1"; + "${mod}+Shift+2" = cmd_and_center "move container to workspace number 2"; + "${mod}+Shift+3" = cmd_and_center "move container to workspace number 3"; + "${mod}+Shift+4" = cmd_and_center "move container to workspace number 4"; + "${mod}+Shift+5" = cmd_and_center "move container to workspace number 5"; + "${mod}+Shift+6" = cmd_and_center "move container to workspace number 6"; + "${mod}+Shift+7" = cmd_and_center "move container to workspace number 7"; + "${mod}+Shift+8" = cmd_and_center "move container to workspace number 8"; + "${mod}+Shift+9" = cmd_and_center "move container to workspace number 9"; + "${mod}+Shift+0" = cmd_and_center "move container to workspace number 10"; + }; }; }; - modifier = "Mod4"; - floating.modifier = "Mod4"; - keybindings = let - mod = modifier; - execns = "exec --no-startup-id"; - cmd_and_center = (cmd: "${execns} i3-msg '${cmd}' && i3custom-center-mouse-on-focus"); - in { - # Program keybinds - "${mod}+Return" = "${execns} alacritty"; - "${mod}+Shift+s" = "${execns} flameshot gui"; - "${mod}+b" = "${execns} firefox"; - "${mod}+d" = "${execns} rofi -show drun"; - # hack, see i3 user doc for --release flag - "--release ${mod}+k" = "exec xkill"; + programs.i3status = { + enable = true; + enableDefault = false; - # Volume control - "Ctrl+F9" = "${execns} pamixer --toggle-mute"; - "Ctrl+F10" = "${execns} pamixer --decrease 5"; - "Ctrl+F11" = "${execns} pamixer --increase 5"; + general = { + interval = 1; + colors = true; + color_good = "#91d956"; + color_bad = "#f43841"; + color_degraded = "#ffdd33"; + output_format = "i3bar"; + }; - # MPD controls - # "Ctrl+F5" = "exec ~/music/select_music.sh"; - # "Ctrl+F6" = "exec mpc prev"; - # "Ctrl+F7" = "exec mpc toggle"; - # "Ctrl+F8" = "exec mpc next"; - # "Ctrl+Shift+F6" = "exec mpc seek -3"; - # "Ctrl+Shift+F7" = "exec mpc clear"; - # "Ctrl+Shift+F8" = "exec mpc seek +3"; - # "Ctrl+Shift+F10" = ''exec mpc volume -5 && dunstify "mpc $(mpc volume)" -r 420''; - # "Ctrl+Shift+F11" = ''exec mpc volume +5 && dunstify "mpc $(mpc volume)" -r 420''; + modules = { + "cpu_usage" = { + position = 0; + settings = { + format = "cpu: %usage"; + }; + }; - # General i3 keybindings - "${mod}+f" = cmd_and_center "fullscreen toggle"; - "${mod}+r" = "mode resize"; - "${mod}+Shift+q" = cmd_and_center "kill"; - "${mod}+Shift+r" = "restart"; - "${mod}+Shift+e" = "${execns} i3-nagbar -t warning -m 'exit?' -b 'yes' 'i3-msg exit'"; - # Mouse bindings - # "--border --whole-window button8" = "${execns} i3custom-window-actions"; + "memory" = { + position = 1; + settings = { + format = "mem: %used"; + threshold_degraded = "1G"; + format_degraded = "MEMORY < %available"; + }; + }; - "${mod}+Left" = cmd_and_center "focus left"; - "${mod}+Right" = cmd_and_center "focus right"; - "${mod}+Up" = cmd_and_center "focus up"; - "${mod}+Down" = cmd_and_center "focus down"; - "${mod}+Shift+Left" = cmd_and_center "move left"; - "${mod}+Shift+Right" = cmd_and_center "move right"; - "${mod}+Shift+Up" = cmd_and_center "move up"; - "${mod}+Shift+Down" = cmd_and_center "move down"; + "volume master" = { + position = 2; + settings = { + color_degraded = "#333333"; + format = "vol: %volume"; + format_muted = "vol: ---"; + }; + }; - "${mod}+q" = cmd_and_center "layout stacking"; - "${mod}+w" = cmd_and_center "layout tabbed"; - "${mod}+e" = cmd_and_center "layout toggle split"; + "tztime local" = { + position = 3; + settings = { + format = "%Y-%m-%d %H:%M:%S (%A)"; + }; + }; + }; + }; - "${mod}+Shift+space" = "${execns} i3custom-floating-toggle && i3custom-center-mouse-on-focus"; - "${mod}+space" = cmd_and_center "focus mode_toggle"; + home.packages = with pkgs; [ + (pkgs.writeShellScriptBin "i3custom-center-mouse-on-focus" '' + eval $(xdotool getwindowfocus getwindowgeometry --shell) + MX=$(($X + $WIDTH / 2)) + MY=$(($Y + $HEIGHT / 2)) + xdotool mousemove $MX $MY + '') - "${mod}+1" = cmd_and_center "workspace number 1"; - "${mod}+2" = cmd_and_center "workspace number 2"; - "${mod}+3" = cmd_and_center "workspace number 3"; - "${mod}+4" = cmd_and_center "workspace number 4"; - "${mod}+5" = cmd_and_center "workspace number 5"; - "${mod}+6" = cmd_and_center "workspace number 6"; - "${mod}+7" = cmd_and_center "workspace number 7"; - "${mod}+8" = cmd_and_center "workspace number 8"; - "${mod}+9" = cmd_and_center "workspace number 9"; - "${mod}+0" = cmd_and_center "workspace number 10"; + (pkgs.writeShellScriptBin "i3custom-window-actions" '' + yad --splash --mouse --title="i3 window actions" \ + --gtkrc="${HOME}/.config/i3/i3gtk.css" \ + --text="i3 window actions" \ + --button float:0 --button kill:1 - "${mod}+Shift+1" = cmd_and_center "move container to workspace number 1"; - "${mod}+Shift+2" = cmd_and_center "move container to workspace number 2"; - "${mod}+Shift+3" = cmd_and_center "move container to workspace number 3"; - "${mod}+Shift+4" = cmd_and_center "move container to workspace number 4"; - "${mod}+Shift+5" = cmd_and_center "move container to workspace number 5"; - "${mod}+Shift+6" = cmd_and_center "move container to workspace number 6"; - "${mod}+Shift+7" = cmd_and_center "move container to workspace number 7"; - "${mod}+Shift+8" = cmd_and_center "move container to workspace number 8"; - "${mod}+Shift+9" = cmd_and_center "move container to workspace number 9"; - "${mod}+Shift+0" = cmd_and_center "move container to workspace number 10"; + case $? in + 0) i3-msg "floating toggle";; + 1) i3-msg "kill";; + -1) ;; + esac + '') + + (pkgs.writeShellScriptBin "i3custom-floating-toggle" '' + i3-msg "mark --add _; [con_mark=f] floating disable, border pixel 1, mark --add --toggle _; [con_mark=_] floating enable, border normal; mark --add --toggle f;" + '') + ]; + + home.file = { + ".config/i3/workspace2.json".source = ../files/workspace2.json; + ".config/i3/i3gtk.css".source = ../files/i3gtk.css; }; }; } diff --git a/programs/ssh.nix b/programs/ssh.nix index 23fe842..7bbb78b 100644 --- a/programs/ssh.nix +++ b/programs/ssh.nix @@ -1,24 +1,27 @@ -{...}: +{ ... }: { - enable = true; + services.openssh.enable = true; - matchBlocks = { - "github.com" = { - user = "git"; - identityFile = "~/.ssh/github"; - }; - "192.168.1.12" = { - identityFile = "~/.ssh/raspi"; - }; - "git.jacekpoz.pl" = { - user = "forgejo"; - identityFile = "~/.ssh/jacekgit"; - }; - "zasadzka.pl" = { - user = "discord"; - identityFile = "~/.ssh/zasadzka"; - setEnv = { - "TERM" = "xterm-256color"; + home-manager.users.krizej.programs.ssh = { + enable = true; + matchBlocks = { + "github.com" = { + user = "git"; + identityFile = "~/.ssh/github"; + }; + "192.168.1.12" = { + identityFile = "~/.ssh/raspi"; + }; + "git.jacekpoz.pl" = { + user = "forgejo"; + identityFile = "~/.ssh/jacekgit"; + }; + "zasadzka.pl" = { + user = "discord"; + identityFile = "~/.ssh/zasadzka"; + setEnv = { + "TERM" = "xterm-256color"; + }; }; }; }; diff --git a/programs/vim.nix b/programs/vim.nix index 2888f53..0f87e3c 100644 --- a/programs/vim.nix +++ b/programs/vim.nix @@ -1,47 +1,59 @@ { pkgs, ... }: { - enable = true; - defaultEditor = true; - plugins = [ - pkgs.vimPlugins.indentLine - pkgs.vimPlugins.vim-gitgutter - ]; - settings = let - vimCache = "~/.cache/vim"; - in { - background = "dark"; - backupdir = [ "${vimCache}/backup/" ]; - copyindent = false; - directory = [ "~/.cache/vim/swap/" ]; - expandtab = true; - hidden = false; - history = 420; - ignorecase = false; - modeline = true; - mouse = "a"; - mousefocus = false; - mousehide = false; - mousemodel = "popup_setpos"; - number = true; - relativenumber = true; - shiftwidth = 4; - smartcase = false; - tabstop = 4; - undodir = [ "~/.cache/vim/undo/" ]; - undofile = false; + environment.systemPackages = [ pkgs.vim ]; + + home-manager.users.krizej = { + home.sessionVariables = { "EDITOR" = "vim"; }; + # fixme: not .vim + home.file = { ".vim/colors/darcula.vim".source = ../files/darcula.vim; }; + programs.vim = { + enable = true; + defaultEditor = true; + plugins = [ + pkgs.vimPlugins.indentLine + pkgs.vimPlugins.vim-gitgutter + ]; + settings = let + vimCache = "~/.cache/vim"; + in { + background = "dark"; + backupdir = ["${vimCache}/backup/"]; + copyindent = false; + directory = ["~/.cache/vim/swap/"]; + expandtab = true; + hidden = false; + history = 420; + ignorecase = false; + modeline = true; + mouse = "a"; + mousefocus = false; + mousehide = false; + mousemodel = "popup_setpos"; + number = true; + relativenumber = true; + shiftwidth = 4; + smartcase = false; + tabstop = 4; + undodir = ["~/.cache/vim/undo/"]; + undofile = false; + }; + extraConfig = '' + set updatetime=100 + set signcolumn=yes + set termguicolors + set cursorline + colorscheme darcula + let g:indentLine_char = '▏' + let g:c_no_ansi = 1 + let g:c_functions = 1 + let g:c_no_c99 = 1 + let g:c_no_bsd = 1 + let g:c_no_c11 = 1 + let g:c_gnu = 1 + ''; + }; }; - extraConfig = '' - set updatetime=100 - set signcolumn=yes - set termguicolors - set cursorline - colorscheme darcula - let g:indentLine_char = '▏' - let g:c_no_ansi = 1 - let g:c_functions = 1 - let g:c_no_c99 = 1 - let g:c_no_bsd = 1 - let g:c_no_c11 = 1 - let g:c_gnu = 1 - ''; + + # fuck you + programs.nano.enable = false; } diff --git a/readme.txt b/readme.txt index 0af0634..8f13987 100644 --- a/readme.txt +++ b/readme.txt @@ -1,2 +1,5 @@ i have no idea what i'm doing +todo: +- fix formatting in pkgs/ +- laptop config diff --git a/services/default.nix b/services/default.nix index 27cebff..1bc1a7f 100644 --- a/services/default.nix +++ b/services/default.nix @@ -1,6 +1,9 @@ -[ - "picom" - "flameshot" - "dunst" -] - +{ ... }: +{ + imports = [ + ./dunst.nix + ./flameshot.nix + ./sddm.nix + ./xserver.nix + ]; +} diff --git a/services/dunst.nix b/services/dunst.nix index d8936da..29989b8 100644 --- a/services/dunst.nix +++ b/services/dunst.nix @@ -1,15 +1,16 @@ -{...}: +{ ... }: { - enable = true; - settings = { - global = { - origin = "bottom-right"; - frame_width = 1; - background = "#333333"; - foreground = "#feeeee"; - font = "JetBrains Mono NL 10"; - frame_color = "#4c7899"; - }; + home-manager.users.krizej.services.dunst = { + enable = true; + settings = { + global = { + origin = "bottom-right"; + frame_width = 1; + background = "#333333"; + foreground = "#feeeee"; + font = "JetBrains Mono NL 10"; + frame_color = "#4c7899"; + }; + }; }; } - diff --git a/services/flameshot.nix b/services/flameshot.nix index 726e729..e838fe6 100644 --- a/services/flameshot.nix +++ b/services/flameshot.nix @@ -1,10 +1,12 @@ -{...}: +{ ... }: { - enable = true; - settings = { - General = { - disabledTrayIcon = true; - showStartupLaunchMessage = false; + home-manager.users.krizej.services.flameshot = { + enable = true; + settings = { + General = { + disabledTrayIcon = true; + showStartupLaunchMessage = false; + }; }; }; } diff --git a/services/sddm.nix b/services/sddm.nix index e69de29..a4218a0 100644 --- a/services/sddm.nix +++ b/services/sddm.nix @@ -0,0 +1,12 @@ +{ pkgs, ... }: +{ + services.displayManager = { + defaultSession = "none+i3"; + sddm = { + enable = true; + theme = "sddm-i3-theme"; + }; + }; + + environment.systemPackages = [ pkgs.sddm-i3-theme ]; +} diff --git a/services/xserver.nix b/services/xserver.nix index e69de29..3ea9213 100644 --- a/services/xserver.nix +++ b/services/xserver.nix @@ -0,0 +1,49 @@ +{ config, lib, pkgs, ... }: +{ + services = { + xserver = { + enable = true; + xkb.layout = "pl"; + + displayManager = { + # THIS SHIT DOESN'T WORK!!! + setupCommands = '' + xrandr --output DP-3 --mode 1920x1080 --rate 239.76 --primary + xrandr --output HDMI-1 --off + xset r rate 180 50 + ''; + sessionCommands = '' + xrandr --output DP-3 --mode 1920x1080 --rate 239.76 --primary + xrandr --output HDMI-1 --mode 1920x1080 --rate 74.97 --right-of DP-3 + xset r rate 180 50 + ''; + }; + + # THIS SHIT DOESN'T WORK!!! + autoRepeatDelay = 180; + autoRepeatInterval = 50; + }; + }; + + home-manager.users.krizej.xsession.enable = true; + + environment.systemPackages = with pkgs; [ + xclip + xorg.xkill + xorg.xev + xdotool + ]; + + # https://www.reddit.com/r/linux_gaming/comments/1dkbh5t/games_behaving_differently_on_xorg_than_on/ + # FUCK YOU LIBINPUT + services.libinput.enable = lib.mkForce false; + # services.libinput = { + # enable = true; + # touchpad = { + # naturalScrolling = false; # it's reversed on my laptop for some reason + # tapping = true; + # tappingButtonMap = "lmr"; + # scrollMethod = "edge"; + # }; + # }; +} \ No newline at end of file