From 99566b2c3de2fbe2e9ececf1e5c1cc262e878f7b Mon Sep 17 00:00:00 2001 From: krizej <60076189+krizej@users.noreply.github.com> Date: Sat, 15 Jun 2024 21:59:32 +0200 Subject: [PATCH] desktop changes !! --- .gitignore | 1 - configuration.nix | 61 ++++++++++++++++++++++------------ files/workspace2.json | 44 +++++++++++++++++++++++++ flake.lock | 15 ++++----- flake.nix | 6 ++-- hardware-configuration.nix | 34 +++++++++++++++++++ home.nix | 65 +++++++++++++++++++------------------ pkgs/darkcold-gtk-theme.nix | 30 +++++++++++++++++ pkgs/default.nix | 1 + pkgs/win7-cursors.nix | 29 ++++++++++------- programs/autorandr.nix | 16 ++++----- programs/default.nix | 3 ++ programs/firefox.nix | 6 ++-- programs/git.nix | 8 +++++ programs/i3.nix | 45 +++++++++++++++---------- programs/i3status.nix | 48 +++++++++++++++++++++++++++ programs/ssh.nix | 15 +++++++++ 17 files changed, 324 insertions(+), 103 deletions(-) delete mode 100644 .gitignore create mode 100644 files/workspace2.json create mode 100644 hardware-configuration.nix create mode 100644 pkgs/darkcold-gtk-theme.nix create mode 100644 programs/git.nix create mode 100644 programs/i3status.nix create mode 100644 programs/ssh.nix diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 577b0a0..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -hardware-configuration.nix diff --git a/configuration.nix b/configuration.nix index 7cb27fd..02f7456 100644 --- a/configuration.nix +++ b/configuration.nix @@ -1,34 +1,44 @@ -{ pkgs, ... }: { +{ pkgs, ...}: { imports = [ ./hardware-configuration.nix ]; - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; + boot = { + loader.grub = { + enable = true; + device = "/dev/disk/by-id/ata-Samsung_SSD_860_EVO_500GB_S4CNNE0M700172J"; + }; +# kernelParams = [ + # "video=DP-3:1920x1080@240" + # "video=HDMI-3:1920x1080@75" + # ]; + }; nix.settings.experimental-features = [ "nix-command" "flakes" ]; - networking.hostName = "laptop"; + 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"; + }; + }; + services.xserver = { enable = true; + displayManager.gdm.enable = true; windowManager.i3.enable = true; xkb.layout = "pl"; - libinput = { - enable = true; - touchpad = { - naturalScrolling = false; # it's reversed on my laptop for some reason - tapping = true; - tappingButtonMap = "lmr"; - scrollMethod = "edge"; - }; - }; - # this shit doesn't actually work + # this shit doesn't actually work autoRepeatDelay = 180; autoRepeatInterval = 50; # this does @@ -52,10 +62,10 @@ 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.groups.plugdev.members = [ "krizej" ]; +# services.udev.extraRules = '' +# SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="2e76", MODE="0666", GROUP="plugdev" +# ''; users.users.krizej = { isNormalUser = true; @@ -77,21 +87,32 @@ 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 - python312 + python311 ripgrep gnomeExtensions.user-themes xdg-user-dirs man-pages man-pages-posix + ntfs3g + gnumake + xclip + tcl + pkg-config + tree ]; documentation.dev.enable = true; diff --git a/files/workspace2.json b/files/workspace2.json new file mode 100644 index 0000000..0455863 --- /dev/null +++ b/files/workspace2.json @@ -0,0 +1,44 @@ +// vim:ts=4:sw=4:et +{ + "border": "pixel", + "current_border_width": 1, + "floating": "auto_off", + "geometry": { + "height": 1054, + "width": 940, + "x": 1921, + "y": 1 + }, + "marks": [], + "name": "Friends - Discord", + "percent": 0.6, + "swallows": [ + { + "class": "^discord$", + "title": "^(?!.*Updater)" + } + ], + "type": "con" +} + +{ + "border": "pixel", + "current_border_width": 1, + "floating": "auto_off", + "geometry": { + "height": 1054, + "width": 1918, + "x": 1921, + "y": 1 + }, + "marks": [], + "name": "Element * | the idiot room", + "percent": 0.4, + "swallows": [ + { + "class": "^Element$" + } + ], + "type": "con" +} + diff --git a/flake.lock b/flake.lock index 51fd89d..b829668 100644 --- a/flake.lock +++ b/flake.lock @@ -7,32 +7,31 @@ ] }, "locked": { - "lastModified": 1714043624, - "narHash": "sha256-Xn2r0Jv95TswvPlvamCC46wwNo8ALjRCMBJbGykdhcM=", + "lastModified": 1718243258, + "narHash": "sha256-abBpj2VU8p6qlRzTU8o22q68MmOaZ4v8zZ4UlYl5YRU=", "owner": "nix-community", "repo": "home-manager", - "rev": "86853e31dc1b62c6eeed11c667e8cdd0285d4411", + "rev": "8d5e27b4807d25308dfe369d5a923d87e7dbfda3", "type": "github" }, "original": { "owner": "nix-community", - "ref": "release-23.11", "repo": "home-manager", "type": "github" } }, "nixpkgs": { "locked": { - "lastModified": 1714531828, - "narHash": "sha256-ILsf3bdY/hNNI/Hu5bSt2/KbmHaAVhBbNUOdGztTHEg=", + "lastModified": 1718318537, + "narHash": "sha256-4Zu0RYRcAY/VWuu6awwq4opuiD//ahpc2aFHg2CWqFY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "0638fe2715d998fa81d173aad264eb671ce2ebc1", + "rev": "e9ee548d90ff586a6471b4ae80ae9cfcbceb3420", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixos-23.11", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } diff --git a/flake.nix b/flake.nix index 217cdb7..d492c09 100644 --- a/flake.nix +++ b/flake.nix @@ -1,16 +1,16 @@ { description = ":-)"; inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; home-manager = { - url = "github:nix-community/home-manager/release-23.11"; + url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; nur.url = "github:nix-community/NUR"; }; outputs = { nixpkgs, home-manager, nur, ... }: { nixosConfigurations = { - laptop = nixpkgs.lib.nixosSystem { + "krizej-pc" = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ { nixpkgs.overlays = [ nur.overlay ]; } diff --git a/hardware-configuration.nix b/hardware-configuration.nix new file mode 100644 index 0000000..fd210e8 --- /dev/null +++ b/hardware-configuration.nix @@ -0,0 +1,34 @@ +# 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 = [ "xhci_pci" "ehci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/a146cbcb-a384-48d8-af3b-85e818302894"; + fsType = "ext4"; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/365d77bf-8a9f-49fa-a96d-1eaa2aa4c275"; } + ]; + + # 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..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp0s25.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/home.nix b/home.nix index c6fa1c4..487cb55 100644 --- a/home.nix +++ b/home.nix @@ -11,7 +11,7 @@ let ) ) ); -in { +in rec { home.stateVersion = "23.11"; home.username = "krizej"; home.homeDirectory = "/home/krizej"; @@ -31,9 +31,9 @@ in { xarchiver fortune vim-full - jetbrains.pycharm-professional - android-studio - android-tools + jetbrains.pycharm-community +# android-studio +# android-tools feh element-desktop lxappearance @@ -42,7 +42,11 @@ in { discord libreoffice-qt wineWowPackages.stable + jetbrains.clion winetricks + pamixer + gimp + xorg.xkill # # It is sometimes useful to fine-tune packages, for example, by applying # # overrides. You can do that directly here, just don't forget the # # parentheses. Maybe you want to install Nerd Fonts with a limited number of @@ -57,9 +61,8 @@ in { # '') ]; - # Home Manager is pretty good at managing dotfiles. The primary way to manage - # plain files is through 'home.file'. home.file = { + ".config/i3/workspace2.json".source = files/workspace2.json; # # Building this configuration will create a copy of 'dotfiles/screenrc' in # # the Nix store. Activating the configuration will then make '~/.screenrc' a # # symlink to the Nix store copy. @@ -72,29 +75,29 @@ in { # ''; }; - home.sessionVariables = { + home.sessionVariables = let HOME = home.homeDirectory; in rec { EDITOR = "vim"; MANSECT = "2:3:3p:3type:1:1p:n:l:8:0:0p:5:4:9:6:7"; # xdg crap thx poz - XDG_DATA_HOME = "$HOME/.local/share"; - XDG_CONFIG_HOME = "$HOME/.config"; - XDG_STATE_HOME = "$HOME/.local/state"; - XDG_CACHE_HOME = "$HOME/.cache"; - ANDROID_USER_HOME = "$XDG_DATA_HOME/android"; - ANDROID_HOME = "$XDG_DATA_HOME/android/sdk"; - GRADLE_USER_HOME = "$XDG_DATA_HOME/gradle"; - PYTHONSTARTUP = "$XDG_CONFIG_HOME/python/pythonrc"; - HISTFILE = "$XDG_CACHE_HOME/bash/history"; - CARGO_HOME = "$XDG_DATA_HOME/cargo"; - _JAVA_OPTIONS = "-Djava.utils.prefs.userRoot=$XDG_CONFIG_HOME/java"; - GNUPGHOME = "$XDG_DATA_HOME/cargo"; - WINEPREFIX = "$XDG_DATA_HOME/wine"; - RUSTUP_HOME = "$XDG_DATA_HOME/rustup"; - NUGET_PACKAGES = "$XDG_CACHE_HOME/NuGetPackages"; - FCEUX_HOME = "$XDG_CONFIG_HOME/fceux"; - DOTNET_CLI_HOME = "$XDG_CONFIG_HOME/dotnet"; - GTK2_RC_FILES = lib.mkForce "$XDG_CONFIG_HOME/gtk-2.0/gtkrc"; + XDG_DATA_HOME = "${HOME}/.local/share"; + XDG_CONFIG_HOME = "${HOME}/.config"; + XDG_STATE_HOME = "${HOME}/.local/state"; + XDG_CACHE_HOME = "${HOME}/.cache"; + ANDROID_USER_HOME = "${XDG_DATA_HOME}/android"; + ANDROID_HOME = "${XDG_DATA_HOME}/android/sdk"; + GRADLE_USER_HOME = "${XDG_DATA_HOME}/gradle"; + PYTHONSTARTUP = "${XDG_CONFIG_HOME}/python/pythonrc"; + HISTFILE = "${XDG_CACHE_HOME}/bash/history"; + CARGO_HOME = "${XDG_DATA_HOME}/cargo"; + _JAVA_OPTIONS = "-Djava.utils.prefs.userRoot=${XDG_CONFIG_HOME}/java"; + GNUPGHOME = "${XDG_DATA_HOME}/gnupg"; + WINEPREFIX = "${XDG_DATA_HOME}/wine"; + RUSTUP_HOME = "${XDG_DATA_HOME}/rustup"; + NUGET_PACKAGES = "${XDG_CACHE_HOME}/NuGetPackages"; + FCEUX_HOME = "${XDG_CONFIG_HOME}/fceux"; + DOTNET_CLI_HOME = "${XDG_CONFIG_HOME}/dotnet"; + GTK2_RC_FILES = lib.mkForce "${XDG_CONFIG_HOME}/gtk-2.0/gtkrc"; }; xdg.userDirs = let @@ -119,12 +122,12 @@ in { windowManager.i3 = (import ./programs/i3.nix args); }; -# home.pointerCursor = { -# gtk.enable = true; -# x11.enable = true; -# name = "Windows-7-Aero-Cursors_Default"; -# package = pkgs.win7-cursors; -# }; + home.pointerCursor = { + gtk.enable = true; + x11.enable = true; + name = "aero-drop"; + package = pkgs.win7-cursors; + }; gtk = { enable = true; diff --git a/pkgs/darkcold-gtk-theme.nix b/pkgs/darkcold-gtk-theme.nix new file mode 100644 index 0000000..764f7ba --- /dev/null +++ b/pkgs/darkcold-gtk-theme.nix @@ -0,0 +1,30 @@ +{ lib, stdenv, fetchFromGitHub, }: +stdenv.mkDerivation { + pname = "darkcold-gtk-theme"; + version = "v5.1.0"; + + src = fetchFromGitHub { + owner = "originalseed"; + repo = "darkcold"; + rev = "71f8fec1fbd62e1bf94fae839efea0acbcd30c0d"; + hash = "sha256-Wk0TAGRUqAJn7PxyqKV3WnZXx2krEQKF/6KZ+R8ld+U="; + }; + + installPhase = '' + runHook preInstall + + mkdir -p "$out/share/themes/darkcold/" + cp -r * "$out/share/themes/darkcold/"; + cp userContent.css "$out/"; + + runHook postInstall + ''; + + meta = with lib; { + description = "DarkCold GTK2/3 + Firefox theme"; + homepage = "https://github.com/${src.owner}/${src.repo}"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} + diff --git a/pkgs/default.nix b/pkgs/default.nix index 8fe14fa..fc5a321 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -6,6 +6,7 @@ pkgs: [ winxp-icons = pkgs.callPackage ./winxp-icons.nix {}; oxylite-icon-theme = pkgs.callPackage ./oxylite-icon-theme.nix {}; e17gtk-revolved = pkgs.callPackage ./e17gtk-revolved.nix {}; + darkcold-gtk-theme = pkgs.callPackage ./darkcold-gtk-theme.nix {}; }) ] diff --git a/pkgs/win7-cursors.nix b/pkgs/win7-cursors.nix index 11d19ad..d337894 100644 --- a/pkgs/win7-cursors.nix +++ b/pkgs/win7-cursors.nix @@ -1,25 +1,30 @@ -{ lib, stdenv, fetchFromGitHub }: -stdenv.mkDerivation { +{ lib, stdenv, fetchzip }: +stdenv.mkDerivation rec { pname = "win7-cursors"; version = "1"; - src = fetchFromGitHub { - owner = "lLexian"; - repo = "Windows-7-Aero-Cursors_Linux"; - rev = "f14c659082d38be7cbde2101ea5ab71987ead64e"; - hash = "sha256-aG+iHqwTZxgWLg0qkJtTIW+byxUszHR9HN3TDnR1i7Y="; + src = fetchzip { + url = "https://gitgud.io/wackyideas/aerothemeplasma/-/raw/master/Icons%20and%20cursors/aero-drop.tar.gz?ref_type=heads&inline=false"; + hash = "sha256-4IY6ZE/nSLJ3HGfzEp2rxBah8Z9lUNQdGncRTjv2Jtg="; }; installPhase = '' - thedir="$out/share/icons/" - install -d $thedir - cp -r * $thedir + thedir="$out/share/icons/aero-drop" + mkdir -p $thedir/cursors + for f in $(find $src \( -type f -or -type l \) -and -not -name "*move" -and -not -name "*fleur" -and -not -name "*.theme"); do + cp $f $thedir/cursors + done + cp $src/index.theme $thedir/index.theme + cp $src/cursors/fleur_actual $thedir/cursors/move + cp $src/cursors/fleur_actual $thedir/cursors/fleur + cp $src/cursors/crosshair $thedir/cursors/kill + cp $src/cursors/crosshair $thedir/cursors/pirate ''; meta = with lib; { description = "Windows 7 Cursors"; - homepage = "https://github.com/lLexian/Windows-7-Aero-Cursors_Linux"; - license = licenses.gpl2Only; + homepage = "https://gitgud.io/wackyideas/aerothemeplasma"; + license = licenses.agpl3Plus; platforms = platforms.linux; }; } diff --git a/programs/autorandr.nix b/programs/autorandr.nix index a71bab3..1582ae3 100644 --- a/programs/autorandr.nix +++ b/programs/autorandr.nix @@ -1,4 +1,4 @@ -{ pkgs, ...}: +{ pkgs, ... }: { enable = true; hooks.postswitch = { @@ -7,22 +7,22 @@ profiles = { "main" = { fingerprint = { - "HDMI-1" = "00ffffffffffff0026cd5861830600001d1f010380361e782a4c70a5574ea4260b5054a56b80710081408180a940b3009500950fd1c0023a801871382d40582c4500202f2100001e000000ff0031313737393132393031363637000000fd0038f01fff3c000a202020202020000000fc00504c3235393048530a2020202001b3020345f14c90040302011112131f203f40e200d5230907078301000067030c001000384467d85dc4017880006d1a0000020130f0e60000000000e305c301e60605016666005a8780a070384d4030203500202f2100001a23e88078703887401c40980c202f2100001a00000000000000000000000000000000000000000000e0"; - "eDP-1" = "00ffffffffffff003870400000000000011c01049522137803f285975c588f281d5054000000010101010101010101010101010101012e3680a070381f403020350058c21000001a182480a070381f403020350058c21000001a00000000000000000000000000000000000000000002000c42f90b3c6a0c13237d0000000034"; + "DP-3" = "00ffffffffffff0026cd5961830600001d1f0104b5361e783b4c70a5574ea4260b5054a56b80710081408180a940b3009500950fd1c0023a801871382d40582c4500202f2100001e000000ff0031313737393132393031363637000000fd0030f0ffff3c010a202020202020000000fc00504c3235393048530a20202020019202033bf1529005040302011112131f203f140607151640e200d52309070783010000e305c301e60605016666006d1a0000020130f00000000000005a8780a070384d4030203500202f2100001ad09480a070381e4008203500202f2100001a23e88078703887401c40980c202f2100001a000000000000000000000000000063"; + "HDMI-3" = "00ffffffffffff0026cd326162190000291c010380361e782a9055a75553a028135054a56b80710081408180a940b3009500950fd1c0023a801871382d40582c4500202f2100001e000000ff0031313534333834313036343938000000fd00374c1e5312000a202020202020000000fc00504c32353330480a2020202020016202032bf14f90050403020111121314060715161f230907078301000065030c001000681a00000101284be6023a801871382d40582c4500202f2100001f011d8018711c1620582c2500202f2100009e011d007251d01e206e285500202f2100001e2a4480a07038274030203500202f2100001a000000000000000000000000ab"; }; config = { - "HDMI-1" = { + "DP-3" = { enable = true; mode = "1920x1080"; rate = "239.76"; - position = "1920x0"; + position = "0x0"; }; - "eDP-1" = { + "HDMI-3" = { enable = true; mode = "1920x1080"; - rate = "60.02"; + rate = "74.97"; primary = true; - position = "0x0"; + position = "1920x0"; }; }; }; diff --git a/programs/default.nix b/programs/default.nix index a71edab..d847f65 100644 --- a/programs/default.nix +++ b/programs/default.nix @@ -8,5 +8,8 @@ "yt-dlp" "rofi" "autorandr" + "i3status" + "ssh" + "git" ] diff --git a/programs/firefox.nix b/programs/firefox.nix index e6121bf..fe6de22 100644 --- a/programs/firefox.nix +++ b/programs/firefox.nix @@ -58,17 +58,17 @@ "Google".metaData.alias = "@g"; "Nix Packages" = { - urls = [{ template = "https://search.nixos.org/packages?query={searchTerms}"; }]; + 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?query={searchTerms}"; }]; + 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=release-23.11&query={searchTerms}"; }]; + 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; diff --git a/programs/git.nix b/programs/git.nix new file mode 100644 index 0000000..4e95606 --- /dev/null +++ b/programs/git.nix @@ -0,0 +1,8 @@ +{...}: +{ + enable = true; + userName = "krizej"; + userEmail = "60076189+krizej@users.noreply.github.com"; +# init.defaultBranch = "master"; +# push.autoSetupRemote = true; +} diff --git a/programs/i3.nix b/programs/i3.nix index e461028..8e17d3c 100644 --- a/programs/i3.nix +++ b/programs/i3.nix @@ -1,10 +1,7 @@ -{...}: +{ pkgs, ... }: { enable = true; config = rec { - modifier = "Mod4"; - floating.modifier = "Mod4"; - assigns = { "2" = [ { class = "discord"; } @@ -33,10 +30,17 @@ names = ["JetBrains Mono NL"]; size = 10.0; }; - + + bars = [{ + inherit fonts; + trayOutput = "primary"; + statusCommand = "${pkgs.i3status}/bin/i3status"; + }]; + + defaultWorkspace = "workspace number 1"; workspaceOutputAssign = [ - { workspace = "1"; output = "DisplayPort-2"; } - { workspace = "2"; output = "HDMI-A-2"; } + { workspace = "1"; output = "DP-3"; } + { workspace = "2"; output = "HDMI-3"; } ]; focus = { @@ -67,24 +71,30 @@ # { command = "hydration.sh &"; 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 = "sleep 1 && i3-msg \"workspace 1\""; notification = false; } ]; + modifier = "Mod4"; + floating.modifier = "Mod4"; keybindings = let mod = modifier; in { # Program keybinds - "${mod}+Return" = "exec alacritty"; - "${mod}+Shift+s" = "exec flameshot gui"; - "${mod}+b" = "exec firefox"; - "${mod}+d" = "exec rofi -show drun"; + "${mod}+Return" = "exec --no-startup-id alacritty"; + "${mod}+Shift+s" = "exec --no-startup-id flameshot gui"; + "${mod}+b" = "exec --no-startup-id firefox"; + "${mod}+d" = "exec --no-startup-id rofi -show drun"; # Volume control - "Ctrl+F9" = "pamixer --toggle-mute"; - "Ctrl+F10" = "pamixer --decrease 5"; - "Ctrl+F11" = "pamixer --increase 5"; + "Ctrl+F9" = "exec --no-startup-id pamixer --toggle-mute"; + "Ctrl+F10" = "exec --no-startup-id pamixer --decrease 5"; + "Ctrl+F11" = "exec --no-startup-id pamixer --increase 5"; # MPD controls # "Ctrl+F5" = "exec ~/music/select_music.sh"; @@ -101,8 +111,9 @@ "${mod}+f" = "fullscreen toggle"; "${mod}+r" = "mode resize"; "${mod}+Shift+q" = "kill"; + "${mod}+k" = "exec xkill"; "${mod}+Shift+r" = "restart"; - "${mod}+Shift+e" = "exec i3-nagbar -t warning -m 'exit?' -b 'yes' 'i3-msg exit'"; + "${mod}+Shift+e" = "exec --no-startup-id i3-nagbar -t warning -m 'exit?' -b 'yes' 'i3-msg exit'"; "${mod}+Left" = "focus left"; "${mod}+Right" = "focus right"; @@ -117,8 +128,8 @@ "${mod}+w" = "layout tabbed"; "${mod}+e" = "layout toggle split"; - "${mod}+Shift+Space" = "floating toggle"; - "${mod}+Space" = "focus mode_toggle"; + "${mod}+Shift+space" = "floating toggle"; + "${mod}+space" = "focus mode_toggle"; "${mod}+1" = "workspace number 1"; "${mod}+2" = "workspace number 2"; diff --git a/programs/i3status.nix b/programs/i3status.nix new file mode 100644 index 0000000..9ebc7f3 --- /dev/null +++ b/programs/i3status.nix @@ -0,0 +1,48 @@ +{...}: +{ + enable = true; + enableDefault = false; + + general = { + interval = 1; + colors = true; + color_good = "#91d956"; + color_bad = "#f43841"; + color_degraded = "#ffdd33"; + output_format = "i3bar"; + }; + + modules = { + "cpu_usage" = { + position = 0; + settings = { + format = "cpu: %usage"; + }; + }; + + "memory" = { + position = 1; + settings = { + format = "mem: %used"; + threshold_degraded = "1G"; + format_degraded = "MEMORY < %available"; + }; + }; + + "volume master" = { + position = 2; + settings = { + color_degraded = "#333333"; + format = "vol: %volume"; + format_muted = "vol: ---"; + }; + }; + + "tztime local" = { + position = 3; + settings = { + format = "%Y-%m-%d %H:%M:%S (%A)"; + }; + }; + }; +} diff --git a/programs/ssh.nix b/programs/ssh.nix new file mode 100644 index 0000000..c3147e8 --- /dev/null +++ b/programs/ssh.nix @@ -0,0 +1,15 @@ +{...}: +{ + enable = true; + + matchBlocks = { + "github.com" = { + user = "git"; + identityFile = "~/.ssh/github"; + }; + "192.168.1.12" = { + identityFile = "~/.ssh/raspi"; + }; + + }; +}