├── .gitignore ├── modules ├── dev │ ├── ruby │ │ ├── guardrc │ │ ├── pryrc │ │ ├── rspec │ │ ├── rdebugrc │ │ ├── gas │ │ │ └── users │ │ ├── bundle │ │ │ └── config │ │ ├── gemrc │ │ ├── irbrc │ │ ├── erdconfig │ │ ├── aprc │ │ └── default.nix │ ├── haskell │ │ ├── hspec │ │ ├── hindent.yaml │ │ ├── hoogle.nix │ │ ├── haskeline │ │ ├── stack │ │ │ └── config.yaml │ │ ├── default.nix │ │ ├── summoner.toml │ │ ├── hlint.yaml │ │ └── ghci │ ├── agda │ │ ├── defaults │ │ └── default.nix │ ├── rust │ │ ├── rustfmt.toml │ │ └── default.nix │ ├── js │ │ ├── packages │ │ │ ├── README.md │ │ │ ├── packages.json │ │ │ └── default.nix │ │ ├── npmrc │ │ └── default.nix │ ├── ocaml │ │ ├── ocamlinit │ │ ├── default.nix │ │ └── utoprc │ ├── base.nix │ ├── blockchain.nix │ ├── formal.nix │ ├── clojure │ │ ├── default.nix │ │ └── lein │ │ │ └── profiles.clj │ ├── default.nix │ ├── cxx │ │ └── default.nix │ └── python │ │ └── default.nix ├── users │ ├── authorized-keys.nix │ ├── vyorkin.nix │ └── default.nix ├── workspace │ ├── i3 │ │ ├── rofi │ │ │ ├── config │ │ │ └── themes │ │ │ │ ├── styles │ │ │ │ └── colors.rasi │ │ │ │ ├── dmenu.rasi │ │ │ │ ├── sidebar-dark.rasi │ │ │ │ ├── white.rasi │ │ │ │ ├── ribbon.rasi │ │ │ │ ├── black.rasi │ │ │ │ ├── white-border.rasi │ │ │ │ ├── white-no-border.rasi │ │ │ │ ├── shadow.rasi │ │ │ │ ├── onedark.rasi │ │ │ │ ├── dark-sidebar.rasi │ │ │ │ ├── gruvbox-dark.rasi │ │ │ │ ├── gruvbox-dark-soft.rasi │ │ │ │ ├── gruvbox-light.rasi │ │ │ │ ├── gruvbox-light-hard.rasi │ │ │ │ ├── gruvbox-light-soft.rasi │ │ │ │ ├── material.rasi │ │ │ │ ├── sidebar.rasi │ │ │ │ ├── paper-float.rasi │ │ │ │ ├── shadow-sidebar.rasi │ │ │ │ ├── flat-orange.rasi │ │ │ │ ├── sidetab.rasi │ │ │ │ ├── fancy.rasi │ │ │ │ ├── Pop-Dark.rasi │ │ │ │ └── hack.rasi │ │ ├── default.nix │ │ ├── config │ │ │ ├── scripts │ │ │ │ ├── free.nix │ │ │ │ ├── temperature.nix │ │ │ │ ├── weather.nix │ │ │ │ ├── emacs.nix │ │ │ │ ├── free.hs │ │ │ │ ├── brightness.nix │ │ │ │ ├── bluetooth.nix │ │ │ │ ├── sound.nix │ │ │ │ ├── connections.nix │ │ │ │ ├── network.hs │ │ │ │ ├── default.nix │ │ │ │ ├── temperature.hs │ │ │ │ └── battery.nix │ │ │ ├── blocks │ │ │ │ ├── bluetooth │ │ │ │ ├── brightness │ │ │ │ ├── sound │ │ │ │ └── battery │ │ │ ├── env.nix │ │ │ └── i3blocks.conf │ │ ├── packages │ │ │ └── bumblebee-status.nix │ │ └── base.nix │ ├── gnome │ │ ├── default.nix │ │ └── base.nix │ ├── default.nix │ ├── plasma.nix │ ├── sway │ │ ├── default.nix │ │ ├── packages.nix │ │ ├── mako.nix │ │ └── wofi │ │ │ └── default.nix │ ├── qt.nix │ ├── services.nix │ ├── ssh.nix │ ├── laptop-x11 │ │ ├── default.nix │ │ └── xbindkeysrc │ ├── cursor.nix │ ├── base.nix │ ├── gtk.nix │ └── fonts.nix ├── apps │ ├── reading │ │ ├── default.nix │ │ └── zathura │ │ │ └── default.nix │ ├── monitoring │ │ ├── default.nix │ │ ├── ksysguard │ │ │ ├── default.nix │ │ │ └── monitoring.sgrd │ │ └── htop.nix │ ├── web │ │ ├── other.nix │ │ ├── brave.nix │ │ ├── default.nix │ │ ├── google-chrome.nix │ │ └── firefox.nix │ ├── terminal │ │ ├── default.nix │ │ ├── tmux.nix │ │ ├── alacritty.nix │ │ └── kitty.nix │ ├── tools │ │ ├── blogging.nix │ │ ├── json.nix │ │ ├── disk.nix │ │ ├── raspberry.nix │ │ ├── screencasting.nix │ │ ├── aws.nix │ │ ├── finance.nix │ │ ├── http.nix │ │ ├── url.nix │ │ ├── network.nix │ │ ├── media.nix │ │ ├── compression.nix │ │ ├── base.nix │ │ ├── search.nix │ │ ├── default.nix │ │ └── nix.nix │ ├── pentest │ │ ├── bluetooth.nix │ │ ├── vulnerability.nix │ │ ├── web.nix │ │ ├── stego.nix │ │ ├── crypto.nix │ │ ├── forensics.nix │ │ ├── fuzzing.nix │ │ ├── hardware.nix │ │ ├── rfid.nix │ │ ├── default.nix │ │ ├── explotation.nix │ │ ├── sniffing.nix │ │ ├── database.nix │ │ ├── sdr.nix │ │ ├── passwords.nix │ │ ├── reversing.nix │ │ ├── wireless.nix │ │ └── backdoor.nix │ ├── editor │ │ ├── vscode.nix │ │ ├── gamedev.nix │ │ ├── office.nix │ │ ├── default.nix │ │ ├── emacs.nix │ │ └── vim.nix │ ├── media │ │ └── default.nix │ ├── torrent.nix │ ├── gaming │ │ └── default.nix │ ├── db │ │ ├── default.nix │ │ └── postgresql │ │ │ ├── default.nix │ │ │ └── psqlrc │ ├── shell │ │ ├── fish.nix │ │ └── zsh.nix │ ├── streaming │ │ └── default.nix │ ├── messaging │ │ └── default.nix │ ├── fm │ │ └── default.nix │ ├── devops │ │ └── default.nix │ ├── scm │ │ └── git.nix │ └── default.nix ├── x11 │ ├── default.nix │ ├── packages.nix │ ├── xserver │ │ ├── sddm.nix │ │ ├── libinput.nix │ │ ├── base.nix │ │ └── lightdm.nix │ ├── autorandr │ │ ├── mobile │ │ │ ├── config │ │ │ └── setup │ │ ├── work │ │ │ ├── config │ │ │ └── setup │ │ ├── tv │ │ │ ├── config │ │ │ └── setup │ │ └── home │ │ │ ├── config │ │ │ └── setup │ ├── files.nix │ └── Xmodmap ├── hardware │ ├── base.nix │ ├── default.nix │ ├── firmware.nix │ ├── bluetooth.nix │ ├── opengl.nix │ └── sound.nix ├── nixpkgs.nix ├── security.nix ├── network.nix ├── home.nix ├── virtualisation.nix ├── locale.nix ├── system.nix ├── boot │ ├── plymouth │ │ └── angular.nix │ └── default.nix ├── default.nix ├── themes.nix ├── nix.nix ├── services.nix └── overlay.nix ├── hosts ├── autism │ ├── system │ ├── hardware │ │ ├── video.nix │ │ ├── power.nix │ │ ├── boot.nix │ │ ├── default.nix │ │ └── fs.nix │ ├── nix.nix │ ├── services.nix │ └── default.nix └── notbad │ ├── system │ ├── hardware │ ├── power.nix │ ├── boot.nix │ ├── default.nix │ └── fs.nix │ ├── nix.nix │ ├── services.nix │ └── default.nix ├── profiles ├── server.nix ├── desktop-sway.nix ├── desktop-plasma.nix ├── desktop-i3.nix ├── default.nix ├── base.nix └── desktop.nix └── Makefile /.gitignore: -------------------------------------------------------------------------------- 1 | result/* 2 | -------------------------------------------------------------------------------- /modules/dev/ruby/guardrc: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /hosts/autism/system: -------------------------------------------------------------------------------- 1 | x86_64-linux 2 | -------------------------------------------------------------------------------- /hosts/notbad/system: -------------------------------------------------------------------------------- 1 | x86_64-linux 2 | -------------------------------------------------------------------------------- /modules/dev/haskell/hspec: -------------------------------------------------------------------------------- 1 | --color 2 | -------------------------------------------------------------------------------- /modules/dev/agda/defaults: -------------------------------------------------------------------------------- 1 | standard-library 2 | -------------------------------------------------------------------------------- /modules/users/authorized-keys.nix: -------------------------------------------------------------------------------- 1 | [ 2 | ] 3 | -------------------------------------------------------------------------------- /modules/dev/rust/rustfmt.toml: -------------------------------------------------------------------------------- 1 | edition = "2018" 2 | -------------------------------------------------------------------------------- /modules/workspace/i3/rofi/config: -------------------------------------------------------------------------------- 1 | rofi.theme: hack 2 | -------------------------------------------------------------------------------- /modules/dev/ruby/pryrc: -------------------------------------------------------------------------------- 1 | require '~/.dotpryrc/bootstrap' 2 | -------------------------------------------------------------------------------- /modules/dev/ruby/rspec: -------------------------------------------------------------------------------- 1 | --colour 2 | --order random 3 | -------------------------------------------------------------------------------- /hosts/autism/hardware/video.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | 3 | { 4 | } 5 | -------------------------------------------------------------------------------- /modules/apps/reading/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./zathura 4 | ]; 5 | } 6 | -------------------------------------------------------------------------------- /modules/workspace/gnome/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./base.nix 4 | ]; 5 | } 6 | -------------------------------------------------------------------------------- /modules/workspace/i3/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./base.nix 4 | ]; 5 | } 6 | -------------------------------------------------------------------------------- /profiles/server.nix: -------------------------------------------------------------------------------- 1 | { inputs, ... }: { 2 | imports = [ 3 | ./base.nix 4 | ]; 5 | } 6 | -------------------------------------------------------------------------------- /modules/dev/ruby/rdebugrc: -------------------------------------------------------------------------------- 1 | eval require 'ruby-debug/completion' 2 | set autolist 3 | set autoeval 4 | -------------------------------------------------------------------------------- /modules/dev/js/packages/README.md: -------------------------------------------------------------------------------- 1 | # Updating 2 | 3 | ```sh 4 | $ node2nix -d -i packages.json 5 | ``` 6 | -------------------------------------------------------------------------------- /modules/apps/monitoring/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./ksysguard 4 | ./htop.nix 5 | ]; 6 | } 7 | -------------------------------------------------------------------------------- /modules/dev/haskell/hindent.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | indent-size: 2 3 | line-length: 80 4 | force-trailing-newline: true 5 | -------------------------------------------------------------------------------- /modules/apps/web/other.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ nyxt ]; 5 | } 6 | -------------------------------------------------------------------------------- /modules/dev/ruby/gas/users: -------------------------------------------------------------------------------- 1 | ==> [vyorkin] 2 | name = Vasiliy Yorkin 3 | email = vasiliy.yorkin@gmail.com 4 | -------------------------------------------------------------------------------- /modules/apps/web/brave.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ 5 | brave 6 | ]; 7 | } 8 | -------------------------------------------------------------------------------- /modules/workspace/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./base.nix 4 | ./fonts.nix 5 | ./services.nix 6 | ]; 7 | } 8 | -------------------------------------------------------------------------------- /modules/x11/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./xserver/base.nix 4 | ./packages.nix 5 | ./files.nix 6 | ]; 7 | } 8 | -------------------------------------------------------------------------------- /modules/apps/terminal/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./alacritty.nix 4 | ./kitty.nix 5 | ./tmux.nix 6 | ]; 7 | } 8 | -------------------------------------------------------------------------------- /modules/apps/tools/blogging.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ 5 | hugo 6 | ]; 7 | } 8 | -------------------------------------------------------------------------------- /modules/dev/ocaml/ocamlinit: -------------------------------------------------------------------------------- 1 | #use "topfind";; 2 | #thread;; 3 | #require "core.top";; 4 | #require "ppx_jane";; 5 | 6 | open Base;; 7 | -------------------------------------------------------------------------------- /modules/apps/pentest/bluetooth.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin.home.packages = with pkgs; [ 5 | ]; 6 | } 7 | -------------------------------------------------------------------------------- /modules/apps/tools/json.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ 5 | jq 6 | jid 7 | ]; 8 | } 9 | -------------------------------------------------------------------------------- /modules/workspace/plasma.nix: -------------------------------------------------------------------------------- 1 | { pkgs, lib, config, ... }: 2 | 3 | { 4 | desktopManager.plasma5 = { 5 | enable = true; 6 | }; 7 | } 8 | -------------------------------------------------------------------------------- /modules/apps/tools/disk.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ 5 | duf 6 | ncdu 7 | ]; 8 | } 9 | -------------------------------------------------------------------------------- /modules/apps/tools/raspberry.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ 5 | rpi-imager 6 | ]; 7 | } 8 | -------------------------------------------------------------------------------- /modules/apps/tools/screencasting.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ 5 | asciinema 6 | ]; 7 | } 8 | -------------------------------------------------------------------------------- /modules/apps/editor/vscode.nix: -------------------------------------------------------------------------------- 1 | { 2 | home-manager.users.vyorkin = { 3 | programs.vscode = { 4 | enable = true; 5 | }; 6 | }; 7 | } 8 | -------------------------------------------------------------------------------- /modules/apps/tools/aws.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ 5 | eksctl 6 | awscli2 7 | ]; 8 | } 9 | -------------------------------------------------------------------------------- /modules/apps/tools/finance.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ 5 | ledger-live-desktop 6 | ]; 7 | } 8 | -------------------------------------------------------------------------------- /modules/dev/base.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin = { 5 | home.packages = with pkgs; [ 6 | ]; 7 | }; 8 | } 9 | -------------------------------------------------------------------------------- /profiles/desktop-sway.nix: -------------------------------------------------------------------------------- 1 | { inputs, ... }: { 2 | imports = with inputs.self.nixosModules; [ 3 | ./desktop.nix 4 | 5 | sway 6 | ]; 7 | } 8 | -------------------------------------------------------------------------------- /modules/apps/web/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./firefox.nix 4 | ./google-chrome.nix 5 | ./brave.nix 6 | ./other.nix 7 | ]; 8 | } 9 | -------------------------------------------------------------------------------- /modules/apps/web/google-chrome.nix: -------------------------------------------------------------------------------- 1 | 2 | { pkgs, ... }: 3 | 4 | { 5 | environment.systemPackages = with pkgs; [ 6 | google-chrome 7 | ]; 8 | } 9 | -------------------------------------------------------------------------------- /profiles/desktop-plasma.nix: -------------------------------------------------------------------------------- 1 | { inputs, ... }: { 2 | imports = with inputs.self.nixosModules; [ 3 | ./desktop.nix 4 | 5 | plasma 6 | ]; 7 | } 8 | -------------------------------------------------------------------------------- /modules/apps/editor/gamedev.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin = { 5 | home.packages = with pkgs; [ blender ]; 6 | }; 7 | } 8 | -------------------------------------------------------------------------------- /profiles/desktop-i3.nix: -------------------------------------------------------------------------------- 1 | { inputs, ... }: { 2 | imports = with inputs.self.nixosModules; [ 3 | ./desktop.nix 4 | 5 | x11 6 | i3 7 | ]; 8 | } 9 | -------------------------------------------------------------------------------- /modules/apps/tools/http.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ 5 | curl 6 | wget 7 | httpie 8 | ]; 9 | } 10 | -------------------------------------------------------------------------------- /modules/apps/editor/office.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin = { 5 | home.packages = with pkgs; [ abiword gnumeric obsidian ]; 6 | }; 7 | } 8 | -------------------------------------------------------------------------------- /modules/apps/tools/url.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ 5 | urlscan 6 | urlview 7 | urlwatch 8 | ]; 9 | } 10 | -------------------------------------------------------------------------------- /modules/hardware/base.nix: -------------------------------------------------------------------------------- 1 | { 2 | hardware = { 3 | # Enable scanner support 4 | # Docs: https://nixos.wiki/wiki/Scanners 5 | sane.enable = true; 6 | }; 7 | } 8 | -------------------------------------------------------------------------------- /modules/workspace/sway/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./base.nix 4 | ./packages.nix 5 | ./mako.nix 6 | ./waybar 7 | ./wofi 8 | ]; 9 | } 10 | -------------------------------------------------------------------------------- /modules/apps/editor/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./emacs.nix 4 | ./vim.nix 5 | ./vscode.nix 6 | ./office.nix 7 | ./gamedev.nix 8 | ]; 9 | } 10 | -------------------------------------------------------------------------------- /modules/workspace/qt.nix: -------------------------------------------------------------------------------- 1 | { 2 | 3 | home-manager.users.vyorkin = { 4 | qt = { 5 | enable = true; 6 | platformTheme = "gtk"; 7 | }; 8 | }; 9 | } 10 | -------------------------------------------------------------------------------- /modules/hardware/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./base.nix 4 | ./firmware.nix 5 | ./opengl.nix 6 | ./sound.nix 7 | ./bluetooth.nix 8 | ]; 9 | } 10 | -------------------------------------------------------------------------------- /modules/workspace/i3/config/scripts/free.nix: -------------------------------------------------------------------------------- 1 | { bc, ... }: '' 2 | echo `free | tail -2 | head -1 | awk '{print "scale=3; "$7"/1000000"}' | ${ 3 | bc 4 | }/bin/bc -l`GB 5 | '' 6 | -------------------------------------------------------------------------------- /modules/workspace/services.nix: -------------------------------------------------------------------------------- 1 | { 2 | home-manager.users.vyorkin = { 3 | services = { 4 | lorri.enable = true; 5 | # dropbox.enable = true; 6 | }; 7 | }; 8 | } 9 | -------------------------------------------------------------------------------- /modules/dev/blockchain.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin = { 5 | home.packages = with pkgs; [ 6 | slither-analyzer 7 | ]; 8 | }; 9 | } 10 | -------------------------------------------------------------------------------- /modules/apps/tools/network.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ 5 | prettyping 6 | inetutils 7 | nmap 8 | iw 9 | ]; 10 | } 11 | -------------------------------------------------------------------------------- /modules/apps/media/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin = { 5 | home.packages = with pkgs; [ 6 | vlc 7 | mpv 8 | ]; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /modules/apps/torrent.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin = { 5 | home.packages = with pkgs; [ 6 | transmission 7 | stig 8 | ]; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /modules/dev/haskell/hoogle.nix: -------------------------------------------------------------------------------- 1 | { 2 | services.hoogle = { 3 | enable = true; 4 | port = 9000; 5 | # Fix the URL for Hoogle logo 6 | home = "https://localhost:9000"; 7 | }; 8 | } 9 | -------------------------------------------------------------------------------- /modules/apps/gaming/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin = { 5 | home.packages = with pkgs; [ 6 | steamcmd 7 | steam 8 | ]; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /modules/dev/formal.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin = { 5 | home.packages = with pkgs; [ 6 | coq 7 | cvc4 8 | z3 9 | ]; 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /modules/dev/ruby/bundle/config: -------------------------------------------------------------------------------- 1 | --- 2 | BUNDLE_JOBS: '4' 3 | 'BUNDLE_BUILD__NOKOGIRI: "--use-system-libraries BINDLE_BIN': false' 4 | BUNDLE_GEM__COC: '0' 5 | BUNDLE_GEM__TEST: rspec 6 | BUNDLE_GEM__MIT: 0 7 | -------------------------------------------------------------------------------- /hosts/notbad/hardware/power.nix: -------------------------------------------------------------------------------- 1 | { 2 | powerManagement = { 3 | # Configure the governor used to regulate the frequence of 4 | # the available CPUs 5 | cpuFreqGovernor = "powersave"; 6 | }; 7 | } 8 | -------------------------------------------------------------------------------- /modules/workspace/i3/config/scripts/temperature.nix: -------------------------------------------------------------------------------- 1 | { ... }: 2 | '' 3 | temp=$((`cat /sys/class/thermal/thermal_zone*/temp | sort | tail -1`/1000)) 4 | echo $temp ° 5 | [[ $temp -gt 80 ]] && exit 33 6 | '' 7 | -------------------------------------------------------------------------------- /profiles/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | server = ./server.nix; 3 | desktop-i3 = ./desktop-i3.nix; 4 | desktop-sway = ./desktop-sway.nix; 5 | desktop-plasma = ./desktop-plasma.nix; 6 | base = ./base.nix; 7 | } 8 | -------------------------------------------------------------------------------- /hosts/autism/hardware/power.nix: -------------------------------------------------------------------------------- 1 | { 2 | powerManagement = { 3 | # Configure the governor used to regulate the frequence of 4 | # the available CPUs 5 | cpuFreqGovernor = "performance"; 6 | }; 7 | } 8 | -------------------------------------------------------------------------------- /modules/apps/tools/media.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ 5 | ffmpeg-full 6 | ffmpegthumbnailer 7 | imagemagickBig 8 | kdenlive 9 | ]; 10 | } 11 | -------------------------------------------------------------------------------- /modules/dev/ruby/gemrc: -------------------------------------------------------------------------------- 1 | --- 2 | :backtrace: false 3 | :bulk_threshold: 1000 4 | :sources: 5 | - https://rubygems.org 6 | :update_sources: true 7 | :verbose: true 8 | :search: --remote 9 | benchmark: false 10 | -------------------------------------------------------------------------------- /modules/workspace/i3/config/scripts/weather.nix: -------------------------------------------------------------------------------- 1 | { bash, config, curl, iconfont, ... }: '' 2 | #!${bash}/bin/bash 3 | WTTR=$(curl wttr.in/?format=1) 4 | echo "$WTTR" 5 | '' 6 | -------------------------------------------------------------------------------- /modules/x11/packages.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ 5 | xorg.xmodmap 6 | xcape 7 | xsel 8 | 9 | arandr 10 | autorandr 11 | ]; 12 | } 13 | -------------------------------------------------------------------------------- /modules/dev/haskell/haskeline: -------------------------------------------------------------------------------- 1 | maxhistorysize: Just 1000 2 | completionPromptLimit: Just 1000 3 | historyDuplicates: IgnoreConsecutive 4 | bellStyle: VisualBell 5 | 6 | bind: f7 : r e l o a d 7 | keyseq: "^[[18~" f7 8 | -------------------------------------------------------------------------------- /modules/x11/xserver/sddm.nix: -------------------------------------------------------------------------------- 1 | { 2 | services.xserver.displayManager = { 3 | sddm.enable = true; 4 | 5 | job = { 6 | logToFile = true; 7 | logToJournal = true; 8 | }; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /modules/dev/clojure/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | home-manager.users.vyorkin = { 3 | home.file = { 4 | ".lein" = { 5 | source = ./lein; 6 | recursive = true; 7 | }; 8 | }; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /modules/apps/tools/compression.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ 5 | zlib 6 | zip 7 | unzip 8 | bzip2 9 | zstd 10 | unrar 11 | atool 12 | ]; 13 | } 14 | -------------------------------------------------------------------------------- /modules/dev/agda/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | home-manager.users.vyorkin = { 3 | home.file = { 4 | ".agda" = { 5 | source = ./defaults; 6 | target = "./agda/defaults"; 7 | }; 8 | }; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: setup/notbad setup/autism clean 2 | 3 | setup/notbad: 4 | sudo nixos-rebuild switch --flake ".#notbad" 5 | 6 | setup/autism: 7 | sudo nixos-rebuild switch --flake ".#autism" 8 | 9 | clean: 10 | unlink ./result 11 | -------------------------------------------------------------------------------- /modules/workspace/sway/packages.nix: -------------------------------------------------------------------------------- 1 | { pkgs, inputs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin.home.packages = with pkgs; [ 5 | wl-clipboard 6 | grim 7 | slurp 8 | pass-wayland 9 | wf-recorder 10 | ]; 11 | } 12 | -------------------------------------------------------------------------------- /modules/x11/autorandr/mobile/config: -------------------------------------------------------------------------------- 1 | output DP-1 2 | off 3 | output HDMI-1 4 | off 5 | output DP-2 6 | off 7 | output HDMI-2 8 | off 9 | output eDP-1 10 | gamma 1.0:0.909:0.833 11 | mode 1920x1080 12 | pos 0x0 13 | primary 14 | rate 60.05 15 | -------------------------------------------------------------------------------- /modules/apps/pentest/vulnerability.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin.home.packages = with pkgs; [ 5 | grype 6 | lynis 7 | 8 | # Vulnerability (CVE) scanner for Nix/NixOS 9 | vulnix 10 | ]; 11 | } 12 | -------------------------------------------------------------------------------- /modules/apps/pentest/web.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin.home.packages = with pkgs; [ 5 | # burpsuite 6 | dirb 7 | gobuster 8 | urlhunter 9 | wfuzz 10 | # wpscan 11 | zap 12 | ]; 13 | } 14 | -------------------------------------------------------------------------------- /hosts/autism/nix.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | 3 | { 4 | nix = { 5 | # Maximum number of jobs that Nix will try to build in parallel. 6 | # Set to the total number of logical cores in the system 7 | settings.max-jobs = lib.mkDefault 6; 8 | }; 9 | } 10 | -------------------------------------------------------------------------------- /hosts/autism/services.nix: -------------------------------------------------------------------------------- 1 | { 2 | services = { 3 | clight = { 4 | # Maybe causes freezes on sway + nvidia 5 | enable = false; 6 | temperature = { 7 | day = 5500; 8 | night = 2000; 9 | }; 10 | }; 11 | }; 12 | } 13 | -------------------------------------------------------------------------------- /hosts/notbad/hardware/boot.nix: -------------------------------------------------------------------------------- 1 | { 2 | boot = { 3 | initrd = { 4 | availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "sd_mod" ]; 5 | kernelModules = [ "kvm-intel" ]; 6 | }; 7 | 8 | extraModulePackages = [ ]; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /hosts/notbad/nix.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | 3 | { 4 | nix = { 5 | # Maximum number of jobs that Nix will try to build in parallel. 6 | # Set to the total number of logical cores in the system 7 | settings.max-jobs = lib.mkDefault 4; 8 | }; 9 | } 10 | -------------------------------------------------------------------------------- /hosts/notbad/services.nix: -------------------------------------------------------------------------------- 1 | { 2 | services = { 3 | # Enable power management daemon. UPower numerates power 4 | # sources, maintains statistics and history data on them and 5 | # notifies about status changes 6 | upower.enable = true; 7 | }; 8 | } 9 | -------------------------------------------------------------------------------- /modules/x11/autorandr/work/config: -------------------------------------------------------------------------------- 1 | output DVI-D-1 2 | off 3 | output DP-1 4 | off 5 | output DP-2 6 | off 7 | output HDMI-2 8 | crtc 0 9 | mode 2560x1440 10 | pos 0x0 11 | rate 59.95 12 | output HDMI-1 13 | crtc 1 14 | mode 2560x1440 15 | pos 2560x0 16 | rate 59.95 17 | -------------------------------------------------------------------------------- /modules/dev/ruby/irbrc: -------------------------------------------------------------------------------- 1 | 2 | require 'irb/completion' 3 | require 'irb/ext/save-history' 4 | 5 | begin 6 | require 'rubygems' 7 | require 'pry' 8 | 9 | Pry.start || exit 10 | rescue LoadError => e 11 | puts "unable to load dependency: #{e.inspect}" 12 | end 13 | -------------------------------------------------------------------------------- /modules/apps/db/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | imports = [ 5 | ./postgresql 6 | ]; 7 | 8 | environment.systemPackages = with pkgs; [ 9 | redis 10 | mysql 11 | sqlite 12 | sqlitebrowser 13 | rocksdb 14 | mdbtools 15 | ]; 16 | } 17 | -------------------------------------------------------------------------------- /modules/apps/monitoring/ksysguard/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | home-manager.users.vyorkin = { 3 | home.file = { 4 | "monitoring" = { 5 | source = ./monitoring.sgrd; 6 | target = ".config/ksysguard/monitoring.sgrd"; 7 | }; 8 | }; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /modules/dev/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | imports = [ 3 | ./base.nix 4 | ./agda 5 | ./haskell 6 | ./ocaml 7 | ./formal.nix 8 | ./blockchain.nix 9 | ./rust 10 | ./cxx 11 | ./clojure 12 | ./ruby 13 | ./python 14 | ./js 15 | ]; 16 | } 17 | -------------------------------------------------------------------------------- /modules/x11/xserver/libinput.nix: -------------------------------------------------------------------------------- 1 | { 2 | services.xserver.libinput = { 3 | enable = true; 4 | tapping = false; 5 | clickMethod = "clickfinger"; 6 | disableWhileTyping = true; 7 | scrollMethod = "twofinger"; 8 | naturalScrolling = true; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /modules/x11/autorandr/mobile/setup: -------------------------------------------------------------------------------- 1 | eDP-1 00ffffffffffff0006af3d3100000000001a0104a51f1178028d15a156529d280a505400000001010101010101010101010101010101143780b87038244010103e0035ae100000180000000f0000000000000000000000000020000000fe0041554f0a202020202020202020000000fe004231343048414e30332e31200a003b 2 | -------------------------------------------------------------------------------- /hosts/autism/hardware/boot.nix: -------------------------------------------------------------------------------- 1 | { 2 | boot = { 3 | initrd = { 4 | availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; 5 | kernelModules = [ ]; 6 | }; 7 | 8 | kernelModules = [ "kvm-amd" ]; 9 | extraModulePackages = [ ]; 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /hosts/notbad/hardware/default.nix: -------------------------------------------------------------------------------- 1 | { inputs, ... }: 2 | 3 | { 4 | imports = [ 5 | "${inputs.nixos-hardware}/lenovo/thinkpad/x1/6th-gen" 6 | "${inputs.nixpkgs}/nixos/modules/installer/scan/not-detected.nix" 7 | 8 | ./boot.nix 9 | ./fs.nix 10 | ./power.nix 11 | ]; 12 | } 13 | -------------------------------------------------------------------------------- /modules/apps/shell/fish.nix: -------------------------------------------------------------------------------- 1 | { 2 | home-manager.users.vyorkin = { 3 | programs.fish = { 4 | enable = true; 5 | }; 6 | 7 | # Enable fish integration for broot. 8 | # See: https://github.com/Canop/broot 9 | programs.broot.enableFishIntegration = true; 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /modules/x11/files.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin = { 5 | home.file = { 6 | ".Xmodmap" = { source = ./Xmodmap; }; 7 | "autorandr" = { 8 | source = ./autorandr; 9 | target = ".config/autorandr"; 10 | }; 11 | }; 12 | }; 13 | } 14 | -------------------------------------------------------------------------------- /modules/apps/streaming/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin = { 5 | programs.obs-studio = { 6 | enable = true; 7 | package = pkgs.obs-studio; 8 | 9 | # Wayland-only plugins 10 | # plugins = [ pkgs.obs-wlrobs ]; 11 | }; 12 | }; 13 | } 14 | -------------------------------------------------------------------------------- /modules/x11/autorandr/tv/config: -------------------------------------------------------------------------------- 1 | output DP-1 2 | off 3 | output DP-2 4 | off 5 | output HDMI-2 6 | off 7 | output HDMI-1 8 | gamma 1.0:0.769:0.556 9 | mode 1920x1080 10 | pos 0x0 11 | rate 60.00 12 | output eDP-1 13 | gamma 1.0:0.769:0.556 14 | mode 1920x1080 15 | pos 0x1080 16 | primary 17 | rate 60.05 18 | -------------------------------------------------------------------------------- /modules/apps/messaging/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin = { 5 | home.packages = with pkgs; [ 6 | skypeforlinux 7 | slack 8 | discord 9 | zoom-us 10 | tdesktop 11 | gitter 12 | gomuks 13 | # nheko 14 | ]; 15 | }; 16 | } 17 | -------------------------------------------------------------------------------- /modules/dev/ocaml/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin = { 5 | programs.opam = { 6 | enable = true; 7 | }; 8 | 9 | home.file = { 10 | ".utoprc" = { source = ./utoprc; }; 11 | ".ocamlinit" = { source = ./ocamlinit; }; 12 | }; 13 | }; 14 | } 15 | -------------------------------------------------------------------------------- /modules/apps/tools/base.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ 5 | binutils 6 | coreutils 7 | pciutils 8 | usbutils 9 | elfutils 10 | patchelf 11 | util-linux 12 | bat 13 | # khal 14 | screenfetch 15 | tree 16 | dig 17 | ]; 18 | } 19 | -------------------------------------------------------------------------------- /modules/dev/js/npmrc: -------------------------------------------------------------------------------- 1 | registry=http://registry.npmjs.org/ 2 | init-author-name=Vasiliy Yorkin 3 | init-author-email=vasiliy.yorkin@gmail.com 4 | init-author-url=https://github.com/vyorkin 5 | init-license=WTFPL 6 | username=vyorkin 7 | email=vasiliy.yorkin@gmail.com 8 | loglevel=warn 9 | prefix = ${HOME}/.npm-packages 10 | -------------------------------------------------------------------------------- /modules/dev/ruby/erdconfig: -------------------------------------------------------------------------------- 1 | attributes: 2 | - content 3 | - foreign_key 4 | - inheritance 5 | disconnected: true 6 | filename: erd 7 | filetype: pdf 8 | indirect: true 9 | inheritance: false 10 | markup: true 11 | notation: bachman 12 | orientation: vertical 13 | polymorphism: false 14 | warn: false 15 | title: true 16 | -------------------------------------------------------------------------------- /modules/hardware/firmware.nix: -------------------------------------------------------------------------------- 1 | { 2 | hardware = { 3 | # Enable all the firmware 4 | enableAllFirmware = true; 5 | 6 | # Enable all the firmware with a license allowing redistribution 7 | # (i.e. free firmware and firmware-linux-nonfree) 8 | enableRedistributableFirmware = true; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /modules/workspace/i3/config/scripts/emacs.nix: -------------------------------------------------------------------------------- 1 | { config, ... }: 2 | let ec = "${config.home-manager.users.vyorkin.programs.emacs.finalPackage}/bin/emacsclient"; 3 | in 4 | '' 5 | [[ $BLOCK_BUTTON -eq 2 ]] && ${ec} --eval "(org-clock-out)" > /dev/null 6 | ${ec} --eval "org-mode-line-string" | head -1 | cut -d\" -f 2 7 | '' 8 | -------------------------------------------------------------------------------- /modules/apps/pentest/stego.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin.home.packages = with pkgs; [ 5 | # Universal steganographic tool 6 | # outguess 7 | 8 | # Steganography hiding tool 9 | # steghide 10 | 11 | # Steganography using ASCII files 12 | # stegsnow 13 | ]; 14 | } 15 | -------------------------------------------------------------------------------- /modules/x11/autorandr/home/config: -------------------------------------------------------------------------------- 1 | output DVI-D-1 2 | off 3 | output DP-1 4 | off 5 | output DP-2 6 | crtc 0 7 | mode 3440x1440 8 | pos 1920x0 9 | rate 50.00 10 | output HDMI-2 11 | crtc 2 12 | mode 1920x1080 13 | pos 0x360 14 | rate 60.00 15 | output HDMI-1 16 | crtc 1 17 | mode 1680x1050 18 | pos 5360x390 19 | rate 59.95 20 | -------------------------------------------------------------------------------- /modules/apps/fm/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ 5 | ranger 6 | 7 | # An alternative for w3mimgdisplay 8 | python39Packages.ueberzug 9 | ]; 10 | 11 | home-manager.users.vyorkin = { 12 | programs.broot = { 13 | enable = false; 14 | }; 15 | }; 16 | } 17 | -------------------------------------------------------------------------------- /modules/apps/tools/search.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ 5 | # Replacement for 'ls' written in Rust 6 | exa 7 | 8 | fd 9 | findutils 10 | rdfind 11 | ack 12 | ripgrep 13 | silver-searcher 14 | fzf 15 | skim 16 | fzy 17 | hstr 18 | ]; 19 | } 20 | -------------------------------------------------------------------------------- /modules/dev/rust/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ 5 | rustup 6 | cargo 7 | ]; 8 | 9 | home-manager.users.vyorkin = { 10 | home.packages = with pkgs; [ 11 | rust-analyzer 12 | ]; 13 | 14 | home.file = { ".rustfmt.toml" = { source = ./rustfmt.toml; }; }; 15 | }; 16 | } 17 | -------------------------------------------------------------------------------- /hosts/notbad/default.nix: -------------------------------------------------------------------------------- 1 | { inputs, ... }: { 2 | imports = with inputs.self.nixosModules; [ 3 | ./hardware 4 | ./nix.nix 5 | ./services.nix 6 | 7 | inputs.self.nixosProfiles.desktop-i3 8 | laptop-x11 9 | 10 | streaming 11 | ]; 12 | 13 | location = { 14 | latitude = 55.7558; 15 | longitude = 37.6173; 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /hosts/autism/default.nix: -------------------------------------------------------------------------------- 1 | { inputs, ... }: { 2 | imports = with inputs.self.nixosModules; [ 3 | ./hardware 4 | ./nix.nix 5 | ./services.nix 6 | 7 | inputs.self.nixosProfiles.desktop-i3 8 | 9 | streaming 10 | pentest 11 | # gaming 12 | ]; 13 | 14 | location = { 15 | latitude = 55.7558; 16 | longitude = 37.6173; 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /modules/apps/terminal/tmux.nix: -------------------------------------------------------------------------------- 1 | { pkgs, inputs, ... }: 2 | 3 | { 4 | 5 | environment.systemPackages = with pkgs; [ 6 | tmux 7 | ]; 8 | 9 | home-manager.users.vyorkin = { 10 | home.file = { 11 | ".tmux/plugins/tpm" = { source = inputs.tpm; }; 12 | ".config/tmux/tmux.conf" = { source = "${inputs.tmux-config}/tmux.conf"; }; 13 | }; 14 | }; 15 | } 16 | -------------------------------------------------------------------------------- /modules/workspace/i3/rofi/themes/styles/colors.rasi: -------------------------------------------------------------------------------- 1 | /* colors */ 2 | 3 | * { 4 | al: #00000000; 5 | bg: #101010ff; 6 | se: #151515ff; 7 | fg: #f5f5f5ff; 8 | ac: #42A5F5ff; 9 | red: #EC7875ff; 10 | green: #61C766ff; 11 | yellow: #FDD835ff; 12 | blue: #42A5F5ff; 13 | purple: #BA68C8ff; 14 | cyan: #4DD0E1ff; 15 | } 16 | -------------------------------------------------------------------------------- /modules/apps/monitoring/htop.nix: -------------------------------------------------------------------------------- 1 | { 2 | home-manager.users.vyorkin = { 3 | programs.htop = { 4 | enable = true; 5 | settings = { 6 | vimMode = true; 7 | delay = 5; 8 | showCpuFrequency = true; 9 | showCpuUsage = true; 10 | treeView = true; 11 | hideUserlandThreads = true; 12 | }; 13 | }; 14 | }; 15 | } 16 | -------------------------------------------------------------------------------- /profiles/base.nix: -------------------------------------------------------------------------------- 1 | { inputs, ... }: { 2 | imports = with inputs.self.nixosModules; [ 3 | inputs.home-manager.nixosModules.home-manager 4 | 5 | hardware 6 | boot 7 | system 8 | network 9 | nix 10 | overlay 11 | nixpkgs 12 | services 13 | security 14 | locale 15 | home 16 | users 17 | 18 | git 19 | zsh 20 | ]; 21 | } 22 | -------------------------------------------------------------------------------- /modules/apps/pentest/crypto.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin.home.packages = with pkgs; [ 5 | # Tool for correcting bit errors in an AES key schedule 6 | # aesfix 7 | 8 | # Tool for locating AES keys in a captured memory image 9 | # aeskeyfind 10 | 11 | # Secure encryption and decryption of files and streams 12 | ccrypt 13 | ]; 14 | } 15 | -------------------------------------------------------------------------------- /modules/dev/cxx/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin = { 5 | home.packages = with pkgs; [ 6 | clang 7 | clang-tools 8 | autoconf 9 | automake 10 | m4 11 | gnumake 12 | gdb 13 | cmake 14 | ccls 15 | bear 16 | meson 17 | ninja 18 | # ccache 19 | cpplint 20 | ]; 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /modules/nixpkgs.nix: -------------------------------------------------------------------------------- 1 | { 2 | nixpkgs.config = { 3 | allowUnfree = true; 4 | allowBroken = true; 5 | 6 | android_sdk.accept_license = true; 7 | 8 | permittedInsecurePackages = [ 9 | "openssl-1.0.2u" 10 | "p7zip-16.02" 11 | "python2.7-Pillow-6.2.2" 12 | "python-2.7.18.6-env" 13 | "python-2.7.18.6" 14 | "electron-13.6.9" 15 | ]; 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /modules/workspace/i3/config/scripts/free.hs: -------------------------------------------------------------------------------- 1 | import System.Exit 2 | 3 | main :: IO () 4 | main = do 5 | freeMemory <- read 6 | <$> (!!1) <$> words 7 | <$> (!!2) <$> lines 8 | <$> readFile "/proc/meminfo" 9 | putStrLn $ (take 5 $ show $ freeMemory / 1000000) ++ "GB" 10 | exitWith $ if freeMemory > 500000 then ExitSuccess else ExitFailure 33 11 | 12 | -------------------------------------------------------------------------------- /modules/apps/devops/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ 5 | ansible 6 | 7 | drone 8 | drone-cli 9 | 10 | terraform 11 | tflint 12 | terraform-docs 13 | terraform-lsp 14 | terraform-providers.aws 15 | terraform-providers.docker 16 | terraform-providers.google 17 | terraform-providers.kubernetes 18 | ]; 19 | } 20 | -------------------------------------------------------------------------------- /modules/apps/tools/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | imports = [ 5 | ./base.nix 6 | ./nix.nix 7 | ./search.nix 8 | ./screencasting.nix 9 | ./compression.nix 10 | ./http.nix 11 | ./json.nix 12 | ./url.nix 13 | ./disk.nix 14 | ./network.nix 15 | ./aws.nix 16 | ./media.nix 17 | ./blogging.nix 18 | ./finance.nix 19 | ./raspberry.nix 20 | ]; 21 | } 22 | -------------------------------------------------------------------------------- /hosts/autism/hardware/default.nix: -------------------------------------------------------------------------------- 1 | { inputs, ... }: 2 | 3 | { 4 | imports = [ 5 | "${inputs.nixpkgs}/nixos/modules/installer/scan/not-detected.nix" 6 | "${inputs.nixos-hardware}/common/cpu/amd" 7 | "${inputs.nixos-hardware}/common/pc" 8 | # Enable fstrim 9 | "${inputs.nixos-hardware}/common/pc/ssd" 10 | 11 | ./boot.nix 12 | ./fs.nix 13 | ./power.nix 14 | ./video.nix 15 | ]; 16 | } 17 | -------------------------------------------------------------------------------- /modules/apps/pentest/forensics.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin.home.packages = with pkgs; [ 5 | capstone 6 | ddrescue 7 | ext4magic 8 | extundelete 9 | ghidra-bin 10 | p0f 11 | pdf-parser 12 | 13 | # Tool library for analyzing binary blobs and executable code 14 | python39Packages.binwalk 15 | 16 | python39Packages.distorm3 17 | sleuthkit 18 | volatility 19 | ]; 20 | } 21 | -------------------------------------------------------------------------------- /modules/apps/pentest/fuzzing.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin.home.packages = with pkgs; [ 5 | # Instrumentation-driven fuzzer for binary formats 6 | aflplusplus 7 | 8 | # x86 processor fuzzer 9 | # sandsifter 10 | 11 | # Black Box testing utilities 12 | # sfuzz 13 | 14 | # Network protocol fuzzer 15 | # spike 16 | 17 | # Web application bruteforcer 18 | wfuzz 19 | ]; 20 | } 21 | -------------------------------------------------------------------------------- /modules/workspace/ssh.nix: -------------------------------------------------------------------------------- 1 | { 2 | services.openssh = { 3 | enable = true; 4 | settings = { 5 | passwordAuthentication = false; 6 | permitRootLogin = "no"; 7 | # forwardX11 = true; 8 | }; 9 | ports = [ 22 ]; 10 | }; 11 | 12 | home-manager.users.vyorkin.programs.ssh = { 13 | enable = true; 14 | matchBlocks = { 15 | "*" = { 16 | compression = false; 17 | }; 18 | }; 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /modules/workspace/i3/config/blocks/bluetooth: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if rfkill | grep bluetooth > /dev/null; then 4 | if rfkill | grep bluetooth | grep blocked > /dev/null; then 5 | if bluetoothctl info > /dev/null; then 6 | if pactl list sinks | grep bluez > /dev/null; then 7 | echo -n "" 8 | else 9 | echo -n "" 10 | fi 11 | else 12 | echo -n "" 13 | fi 14 | else 15 | echo -n "" 16 | fi 17 | fi 18 | -------------------------------------------------------------------------------- /modules/apps/pentest/hardware.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin.home.packages = with pkgs; [ 5 | # Graphical serial terminal, like minicom 6 | cutecom 7 | 8 | # Identify, read, write, erase, and verify BIOS/ROM/flash chips 9 | flashrom 10 | 11 | # Friendly menu driven serial communication program 12 | minicom 13 | 14 | # Open on-chip JTAG debug solution for ARM and MIPS systems 15 | openocd 16 | ]; 17 | } 18 | -------------------------------------------------------------------------------- /modules/x11/Xmodmap: -------------------------------------------------------------------------------- 1 | clear lock 2 | clear control 3 | clear mod1 4 | clear mod2 5 | clear mod3 6 | clear mod4 7 | clear mod5 8 | keycode 37 = Hyper_L 9 | keycode 115 = Hyper_L 10 | keycode 66 = Control_L 11 | add control = Control_L Control_R 12 | add mod1 = Alt_L Alt_R Meta_L 13 | add mod2 = Num_Lock 14 | add mod3 = Hyper_L 15 | add mod4 = Super_L Super_R 16 | add mod5 = Mode_switch ISO_Level3_Shift 17 | -------------------------------------------------------------------------------- /modules/dev/js/packages/packages.json: -------------------------------------------------------------------------------- 1 | [ 2 | "purescript-emmet", 3 | "colorguard", 4 | "vtop", 5 | "git-issues", 6 | "madge", 7 | "import-js", 8 | "web3", 9 | "how-to-npm", 10 | "psi", 11 | "now", 12 | "json-package", 13 | "firebase-tools", 14 | "doiuse", 15 | "localtunnel", 16 | "manpm", 17 | "available-versions", 18 | "git-recall", 19 | "jsinspect", 20 | "tmi", 21 | "commitizen", 22 | "rollup", 23 | "pnpm", 24 | "iron-node", 25 | "@microsoft/rush" 26 | ] 27 | -------------------------------------------------------------------------------- /profiles/desktop.nix: -------------------------------------------------------------------------------- 1 | { inputs, ... }: { 2 | imports = with inputs.self.nixosModules; [ 3 | ./base.nix 4 | 5 | themes 6 | workspace 7 | ssh 8 | cursor 9 | gtk 10 | # qt 11 | gnome 12 | 13 | # lightdm 14 | sddm 15 | 16 | virtualisation 17 | 18 | apps 19 | tools 20 | fm 21 | terminal 22 | editor 23 | reading 24 | messaging 25 | web 26 | torrent 27 | db 28 | devops 29 | monitoring 30 | media 31 | dev 32 | ]; 33 | } 34 | -------------------------------------------------------------------------------- /modules/apps/editor/emacs.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin = { 5 | programs.emacs = { 6 | enable = true; 7 | package = pkgs.emacsPgtk; 8 | }; 9 | 10 | services.emacs = { 11 | enable = true; 12 | package = pkgs.emacsPgtk; 13 | }; 14 | 15 | home.packages = with pkgs; [ 16 | ispell 17 | ]; 18 | 19 | systemd.user.services.emacs.Service.Environment = 20 | "PATH=/run/current-system/sw/bin:/etc/profiles/per-user/vyorkin/bin"; 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /modules/workspace/i3/config/blocks/brightness: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | case $BLOCK_BUTTON in 4 | 4) sudo light -A 5;; 5 | 5) sudo light -U 5;; 6 | esac 7 | LIGHT=`light | cut -f 1 -d '.'` 8 | 9 | if [[ -n "$LIGHT" ]]; then 10 | if [[ $LIGHT -lt 33 ]] 11 | then 12 | icon= 13 | else 14 | if [[ $LIGHT -lt 66 ]] 15 | then 16 | icon= 17 | else 18 | icon= 19 | fi 20 | fi 21 | [[ -n $BLOCK_BUTTON ]] && text=" $LIGHT" 22 | echo "$icon$text" 23 | fi 24 | -------------------------------------------------------------------------------- /modules/apps/pentest/rfid.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin.home.packages = with pkgs; [ 5 | # MIFARE card manipulations binaries 6 | libfreefare 7 | 8 | # Near Field Communication (NFC) binarie 9 | libnfc 10 | 11 | # MiFare Classic Universal toolKit 12 | mfcuk 13 | 14 | # MIFARE Classic offline cracker 15 | mfoc 16 | 17 | # Terminal for working with Mifare Classic 1-4k Tags 18 | # mfterm 19 | 20 | # Tool to decode RFID tag data 21 | # rfdump 22 | ]; 23 | } 24 | -------------------------------------------------------------------------------- /modules/dev/python/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | with pkgs; 4 | let 5 | # p2-packages = python-packages: with python-packages; [ pyserial ]; 6 | p3-packages = python-packages: 7 | with python-packages; [ 8 | keyring 9 | virtualenv 10 | virtualenvwrapper 11 | pyserial 12 | sphinx 13 | ]; 14 | in { 15 | 16 | home-manager.users.vyorkin = { 17 | home.packages = with pkgs; [ 18 | # (python.withPackages p2-packages) 19 | (python3.withPackages p3-packages) 20 | ]; 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /modules/apps/pentest/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | # See: https://github.com/NixOS/nixpkgs/issues/81418 3 | 4 | imports = [ 5 | ./backdoor.nix 6 | ./bluetooth.nix 7 | ./crypto.nix 8 | ./database.nix 9 | ./explotation.nix 10 | # ./forensics.nix 11 | ./fuzzing.nix 12 | ./hardware.nix 13 | ./passwords.nix 14 | ./recon.nix 15 | ./reversing.nix 16 | ./rfid.nix 17 | ./sdr.nix 18 | ./sniffing.nix 19 | ./stego.nix 20 | ./vulnerability.nix 21 | ./web.nix 22 | ./wireless.nix 23 | ]; 24 | } 25 | -------------------------------------------------------------------------------- /modules/workspace/i3/config/env.nix: -------------------------------------------------------------------------------- 1 | { pkgs, lib, config, ... }: 2 | let 3 | apps = config.defaultApps; 4 | in { 5 | inherit apps; 6 | 7 | browser1 = apps.browser.cmd; 8 | browser2 = "${pkgs.google-chrome}/bin/google-chrome-stable"; 9 | browser3 = "${pkgs.tor-browser}/bin/tor-browser"; 10 | browser4 = "${pkgs.qutebrowser}/bin/qutebrowser"; 11 | term1 = apps.term.cmd; 12 | term2 = "${pkgs.kitty}/bin/kitty"; 13 | 14 | mod = "Mod4"; 15 | hyper = "Mod3"; 16 | alt = "Mod1"; 17 | 18 | step1 = "1"; 19 | step2 = "10"; 20 | } 21 | -------------------------------------------------------------------------------- /modules/hardware/bluetooth.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | # Enable support for Bluetooth devices 5 | # Docs: https://nixos.wiki/wiki/Bluetooth 6 | hardware.bluetooth = { 7 | enable = true; 8 | 9 | # Enable all bluez plugins 10 | package = pkgs.bluezFull; 11 | 12 | # Modern headsets will generally try to connect using the A2DP profile. 13 | # To enable this we need to add the following lines: 14 | settings = { General = { Enable = "Source,Sink,Media,Socket"; }; }; 15 | }; 16 | 17 | services.blueman.enable = true; 18 | } 19 | -------------------------------------------------------------------------------- /modules/workspace/i3/config/scripts/brightness.nix: -------------------------------------------------------------------------------- 1 | { iconfont, light, config, ... }: '' 2 | case $BLOCK_BUTTON in 3 | 4) sudo ${light}/bin/light -A 5;; 4 | 5) sudo ${light}/bin/light -U 5;; 5 | esac 6 | LIGHT=`${light}/bin/light | cut -f 1 -d '.'` 7 | if [[ $LIGHT -lt 33 ]] 8 | then 9 | icon= 10 | else 11 | if [[ $LIGHT -lt 66 ]] 12 | then 13 | icon= 14 | else 15 | icon= 16 | fi 17 | fi 18 | [[ -n $BLOCK_BUTTON ]] && text=" $LIGHT" 19 | echo "$icon$text" 20 | '' 21 | -------------------------------------------------------------------------------- /modules/apps/scm/git.nix: -------------------------------------------------------------------------------- 1 | { inputs, pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin = { 5 | programs.git = { 6 | enable = true; 7 | 8 | # Enable delta syntax highlighter 9 | delta.enable = true; 10 | }; 11 | 12 | home.packages = with pkgs; [ delta ]; 13 | 14 | home.file = { 15 | ".gitconfig" = { source = "${inputs.git-config}/gitconfig"; }; 16 | ".gitignore" = { source = "${inputs.git-config}/gitignore"; }; 17 | ".gitmessage" = { source = "${inputs.git-config}/gitmessage"; }; 18 | }; 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /modules/workspace/laptop-x11/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, lib, config, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ 5 | # Allows to bind commands to certain keys or key 6 | # combinations on the keyboard 7 | xbindkeys 8 | 9 | # GUI for xbindkeys 10 | xbindkeys-config 11 | 12 | xorg.xbacklight 13 | ]; 14 | 15 | # Install Light backlight control command 16 | programs.light.enable = true; 17 | 18 | home-manager.users.vyorkin = { 19 | home.file = { 20 | ".xbindkeysrc" = { source = ./xbindkeysrc; }; 21 | }; 22 | }; 23 | } 24 | -------------------------------------------------------------------------------- /modules/dev/js/packages/default.nix: -------------------------------------------------------------------------------- 1 | # This file has been generated by node2nix 1.9.0. Do not edit! 2 | 3 | { inputs, pkgs ? import { 4 | inherit system; 5 | }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs_latest"}: 6 | 7 | let 8 | nodeEnv = import ./node-env.nix { 9 | inherit (pkgs) stdenv lib python2 runCommand writeTextFile; 10 | inherit pkgs nodejs; 11 | libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null; 12 | }; 13 | in 14 | import ./node-packages.nix { 15 | inherit (pkgs) fetchurl nix-gitignore stdenv lib fetchgit; 16 | inherit nodeEnv; 17 | } 18 | -------------------------------------------------------------------------------- /modules/workspace/cursor.nix: -------------------------------------------------------------------------------- 1 | { pkgs, lib, ... }: { 2 | 3 | environment.sessionVariables = { 4 | XCURSOR_PATH = lib.mkForce "/home/vyorkin/.icons"; 5 | XCURSOR_SIZE = lib.mkForce "16"; 6 | }; 7 | 8 | home-manager.users.vyorkin = { 9 | home.pointerCursor = { 10 | package = pkgs.breeze-qt5; 11 | name = "Breeze"; 12 | size = 16; 13 | }; 14 | 15 | # home.file = { 16 | # ".icons/default" = { source = "${pkgs.breeze-qt5}/share/icons/breeze_cursors"; }; 17 | # ".icons/Breeze" = { source = "${pkgs.breeze-qt5}/share/icons/breeze_cursors"; }; 18 | # }; 19 | }; 20 | } 21 | -------------------------------------------------------------------------------- /modules/apps/pentest/explotation.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin.home.packages = with pkgs; [ 5 | # Browser Exploitation Framework (BeEF) 6 | # beef-xss 7 | 8 | # Searchable Exploit Database archive 9 | # exploitdb 10 | 11 | # Framework for exploit development and vulnerability research (broken) 12 | # metasploit 13 | 14 | # MSFvenom Payload Creator (MSFPC) 15 | # msfpc 16 | 17 | # Social-Engineer Toolkit 18 | # set 19 | 20 | # Shellcode writing toolkit 21 | # shellnoob 22 | 23 | # Smart meter testing framework 24 | # termineter 25 | ]; 26 | } 27 | -------------------------------------------------------------------------------- /modules/workspace/i3/config/scripts/bluetooth.nix: -------------------------------------------------------------------------------- 1 | { iconfont, bash, bluez, pulseaudio, utillinux, python3, ... }: 2 | '' 3 | #!${bash}/bin/bash 4 | if ${utillinux}/bin/rfkill | grep bluetooth > /dev/null; then 5 | if ${utillinux}/bin/rfkill | grep bluetooth | grep blocked > /dev/null; then 6 | if ${bluez}/bin/bluetoothctl info > /dev/null; then 7 | if ${pulseaudio}/bin/pactl list sinks | grep bluez > /dev/null; then 8 | echo -n "" 9 | else 10 | echo -n "" 11 | fi 12 | else 13 | echo -n "" 14 | fi 15 | else 16 | echo -n "" 17 | fi 18 | fi 19 | '' 20 | -------------------------------------------------------------------------------- /hosts/autism/hardware/fs.nix: -------------------------------------------------------------------------------- 1 | # Mount points are created automatically if they don’t already exist. 2 | # For device, it’s best to use the topology-independent device aliases in 3 | # /dev/disk/by-label and /dev/disk/by-uuid, as these don’t change if the 4 | # topology changes (e.g. if a disk is moved to another IDE controller). 5 | 6 | { 7 | fileSystems."/" = 8 | { device = "/dev/disk/by-label/nixos"; 9 | fsType = "ext4"; 10 | }; 11 | 12 | fileSystems."/boot" = 13 | { device = "/dev/disk/by-label/boot"; 14 | fsType = "vfat"; 15 | }; 16 | 17 | swapDevices = 18 | [ { device = "/dev/disk/by-label/swap"; } 19 | ]; 20 | } 21 | -------------------------------------------------------------------------------- /hosts/notbad/hardware/fs.nix: -------------------------------------------------------------------------------- 1 | # Mount points are created automatically if they don’t already exist. 2 | # For device, it’s best to use the topology-independent device aliases in 3 | # /dev/disk/by-label and /dev/disk/by-uuid, as these don’t change if the 4 | # topology changes (e.g. if a disk is moved to another IDE controller). 5 | 6 | { 7 | fileSystems."/" = 8 | { device = "/dev/disk/by-label/nixos"; 9 | fsType = "ext4"; 10 | }; 11 | 12 | fileSystems."/boot" = { 13 | device = "/dev/disk/by-label/boot"; 14 | fsType = "vfat"; 15 | }; 16 | 17 | swapDevices = 18 | [ { device = "/dev/disk/by-label/swap"; } 19 | ]; 20 | } 21 | -------------------------------------------------------------------------------- /modules/hardware/opengl.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | hardware.opengl = { 5 | # Enable OpenGL support in X11 systems, as well as for 6 | # Wayland compositors like sway and Weston 7 | enable = true; 8 | 9 | # Enable accelerated OpenGL rendering through the Direct 10 | # Rendering Interface (DRI) 11 | driSupport = true; 12 | 13 | # Support Direct Rendering for 32-bit applications (such 14 | # as Wine). This is currently only supported for the 15 | # nvidia and ati_unfree drivers, as well as Mesa 16 | driSupport32Bit = true; 17 | 18 | # Use Mesa OpenGL drivers 19 | package = pkgs.mesa_drivers; 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /modules/security.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | security = { 5 | # Whether users of the wheel group must provide a 6 | # password to run commands as super user via sudo 7 | sudo = { 8 | wheelNeedsPassword = false; 9 | }; 10 | 11 | # Enable the AppArmor Mandatory Access Control system 12 | apparmor.enable = true; 13 | }; 14 | 15 | programs = { 16 | # Enable the Firejail namespaces and seccomp-bpf sandbox. 17 | # See: https://github.com/netblue30/firejail 18 | firejail.enable = true; 19 | }; 20 | 21 | home-manager.users.vyorkin.home.packages = with pkgs; [ 22 | _1password 23 | _1password-gui 24 | ]; 25 | } 26 | -------------------------------------------------------------------------------- /modules/workspace/sway/mako.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin = { 5 | wayland.windowManager.sway.config.startup = [{ command = "mako"; }]; 6 | programs.mako = { 7 | enable = true; 8 | layer = "overlay"; 9 | font = "IBM Plex 13"; 10 | width = 500; 11 | height = 80; 12 | defaultTimeout = 10000; 13 | maxVisible = 10; 14 | backgroundColor = "#000000AA"; 15 | textColor = "#FFFFFF"; 16 | borderColor = "#444444AA"; 17 | progressColor = "over #11AA11"; 18 | iconPath = "${pkgs.papirus-icon-theme}/share/icons/Papirus-Dark"; 19 | maxIconSize = 24; 20 | }; 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /modules/apps/pentest/sniffing.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin.home.packages = with pkgs; [ 5 | # The Swiss Army knife for 802.11, BLE and Ethernet networks 6 | # reconnaissance and MITM attacks 7 | bettercap 8 | 9 | # Collection of tools for network auditing and penetration testing. 10 | dsniff 11 | 12 | # An interactive TLS-capable intercepting HTTP proxy for 13 | # penetration testers and software developers 14 | mitmproxy 15 | 16 | # TCP connection hijacker 17 | rshijack 18 | 19 | # Protocol testing tool 20 | sipp 21 | 22 | # Secure multithreaded packet sniffer 23 | sniffglue 24 | ]; 25 | } 26 | -------------------------------------------------------------------------------- /modules/workspace/i3/config/blocks/sound: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | case $BLOCK_BUTTON in 4 | 2) pamixer -t;; 5 | 4) pamixer -i 5;; 6 | 5) pamixer -d 5;; 7 | esac 8 | code=0 9 | if [[ `pamixer --get-mute` = "true" ]] 10 | then 11 | volume="" 12 | end="" 13 | icon="婢" 14 | else 15 | volume=`pamixer --get-volume` 16 | end="%" 17 | if [[ $volume -lt 33 ]] 18 | then 19 | icon="奄" 20 | else 21 | if [[ $volume -lt 66 ]] 22 | then 23 | icon="奔" 24 | else 25 | icon="墳" 26 | code=33 27 | fi 28 | fi 29 | fi 30 | [[ -n $BLOCK_BUTTON ]] && text=" $volume$end" 31 | echo "$icon$text" 32 | exit $code 33 | -------------------------------------------------------------------------------- /modules/dev/ruby/aprc: -------------------------------------------------------------------------------- 1 | AwesomePrint.defaults = { 2 | :indent => 2, 3 | :sort_keys => true, 4 | :color => { 5 | :args => :greenish, 6 | :array => :pale, 7 | :bigdecimal => :blue, 8 | :class => :yellow, 9 | :date => :greenish, 10 | :falseclass => :red, 11 | :fixnum => :blue, 12 | :float => :blue, 13 | :hash => :pale, 14 | :keyword => :cyan, 15 | :method => :purpleish, 16 | :nilclass => :red, 17 | :string => :yellowish, 18 | :struct => :pale, 19 | :symbol => :cyanish, 20 | :time => :greenish, 21 | :trueclass => :green, 22 | :variable => :cyanish 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /modules/network.nix: -------------------------------------------------------------------------------- 1 | { pkgs, lib, config, ... }: 2 | 3 | { 4 | networking = { 5 | # The global useDHCP flag is deprecated, therefore 6 | # explicitly set to false here. Per-interface useDHCP will 7 | # be mandatory in the future 8 | useDHCP = false; 9 | 10 | interfaces = { 11 | enp4s0.useDHCP = true; 12 | }; 13 | 14 | firewall = { 15 | enable = true; 16 | allowedTCPPorts = [ 13748 13722 5000 22 80 8080 3000 3001 3002 3003 443 51820 ]; 17 | 18 | # Samba discovery of machines and shares may need the firewall to be tuned 19 | extraCommands = ''iptables -t raw -A OUTPUT -p udp -m udp --dport 137 -j CT --helper netbios-ns''; 20 | }; 21 | }; 22 | } 23 | -------------------------------------------------------------------------------- /modules/apps/reading/zathura/default.nix: -------------------------------------------------------------------------------- 1 | { 2 | home-manager.users.vyorkin = { 3 | programs.zathura = { 4 | enable = true; 5 | 6 | options = { 7 | selection-clipboard = "clipboard"; 8 | statusbar-h-padding = 0; 9 | statusbar-v-padding = 0; 10 | smooth-scroll = true; 11 | statusbar-home-tilde = true; 12 | page-padding = 1; 13 | }; 14 | 15 | extraConfig = '' 16 | map u scroll half-up 17 | map d scroll half-down 18 | map D toggle_page_mode 19 | map r reload 20 | map R rotate 21 | map K zoom in 22 | map J zoom out 23 | map i recolor 24 | map p print 25 | ''; 26 | }; 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /modules/home.nix: -------------------------------------------------------------------------------- 1 | { config, ... }: 2 | 3 | { 4 | environment.sessionVariables = 5 | config.home-manager.users.vyorkin.home.sessionVariables // { 6 | NIX_AUTO_RUN = "1"; 7 | }; 8 | 9 | home-manager = { 10 | useGlobalPkgs = true; 11 | useUserPackages = true; 12 | 13 | users.vyorkin = { 14 | news.display = "silent"; 15 | 16 | # Start new or changed services automatically. 17 | # Stop obsolte services from the previous generation 18 | systemd.user = { 19 | startServices = true; 20 | }; 21 | 22 | programs.direnv = { 23 | enable = true; 24 | nix-direnv.enable = true; 25 | }; 26 | 27 | home.stateVersion = "22.05"; 28 | }; 29 | }; 30 | } 31 | -------------------------------------------------------------------------------- /modules/users/vyorkin.nix: -------------------------------------------------------------------------------- 1 | { authorizedKeys, ... }: 2 | 3 | { 4 | isNormalUser = true; 5 | uid = 1000; 6 | description = "Vasiliy Yorkin"; 7 | home = "/home/vyorkin"; 8 | extraGroups = [ 9 | "wheel" 10 | "video" 11 | "audio" 12 | "jackaudio" 13 | "networkmanager" 14 | "input" 15 | "scanner" 16 | "lp" 17 | 18 | # access to the serial and USB ports 19 | "dialout" 20 | 21 | # grant access to Android Debug Bridge (ADB) 22 | "adbusers" 23 | 24 | "vboxusers" 25 | "wireshark" 26 | "docker" 27 | "render" 28 | ]; 29 | 30 | createHome = true; 31 | initialPassword = "whatever"; 32 | useDefaultShell = true; 33 | openssh.authorizedKeys.keys = authorizedKeys; 34 | } 35 | 36 | -------------------------------------------------------------------------------- /modules/virtualisation.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | virtualisation = { 5 | docker = { 6 | # Enable docker daemon 7 | enable = true; 8 | 9 | # Periodically prune docker resources 10 | autoPrune = { 11 | enable = true; 12 | dates = "weekly"; 13 | }; 14 | }; 15 | 16 | # Enable a daemon that manages virtual machines. 17 | # Docs: https://wiki.archlinux.org/index.php/libvirt 18 | libvirtd.enable = true; 19 | 20 | # Allow unprivileged user to pass USB devices connected to 21 | # this machine to libvirt VMs, both local and remote 22 | # spiceUSBRedirection.enable = true; 23 | }; 24 | 25 | home-manager.users.vyorkin.home.packages = with pkgs; [ docker-compose ]; 26 | } 27 | -------------------------------------------------------------------------------- /modules/dev/haskell/stack/config.yaml: -------------------------------------------------------------------------------- 1 | # This file contains default non-project-specific settings for 'stack', used 2 | # in all projects. For more information about stack's configuration, see 3 | # http://docs.haskellstack.org/en/stable/yaml_configuration/ 4 | 5 | # The following parameters are used by "stack new" to automatically fill fields 6 | # in the cabal config. We recommend uncommenting them and filling them out if 7 | # you intend to use 'stack new'. 8 | # See https://docs.haskellstack.org/en/stable/yaml_configuration/#templates 9 | templates: 10 | params: 11 | author-name: Vasiliy Yorkin 12 | author-email: vasiliy.yorkin@gmail.com 13 | copyright: Vasiliy Yorkin aka vyorkin 14 | github-username: vyorkin 15 | 16 | nix: 17 | enable: true 18 | -------------------------------------------------------------------------------- /modules/dev/ocaml/utoprc: -------------------------------------------------------------------------------- 1 | ! -*- conf-xdefaults -*- 2 | 3 | ! Copy this file to ~/.utoprc 4 | 5 | ! Common resources 6 | 7 | profile: dark 8 | identifier.foreground: none 9 | module.foreground: x-palegreen 10 | comment.foreground: x-chocolate1 11 | doc.foreground: x-light-salmon 12 | constant.foreground: x-aquamarine 13 | keyword.foreground: x-cyan1 14 | symbol.foreground: x-cyan1 15 | string.foreground: x-light-salmon 16 | char.foreground: x-light-salmon 17 | quotation.foreground: x-purple 18 | error.foreground: red 19 | directive.foreground: x-lightsteelblue 20 | parenthesis.background: blue 21 | 22 | ! uncomment the next line to disable autoload files 23 | ! autoload: false 24 | -------------------------------------------------------------------------------- /modules/dev/ruby/default.nix: -------------------------------------------------------------------------------- 1 | { inputs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin = { 5 | home.file = { 6 | ".aprc" = { source = ./aprc; }; 7 | ".erdconfig" = { source = ./erdconfig; }; 8 | ".gemrc" = { source = ./gemrc; }; 9 | ".guardrc" = { source = ./guardrc; }; 10 | ".irbrc" = { source = ./irbrc; }; 11 | ".pryrc" = { source = ./pryrc; }; 12 | ".rdebugrc" = { source = ./rdebugrc; }; 13 | ".rspec" = { source = ./rspec; }; 14 | 15 | ".dotpryrc" = { source = "${inputs.dotpryrc}/dotpryrc"; }; 16 | 17 | ".gas" = { 18 | source = ./gas; 19 | recursive = true; 20 | }; 21 | 22 | ".bundle" = { 23 | source = ./bundle; 24 | recursive = true; 25 | }; 26 | }; 27 | }; 28 | } 29 | -------------------------------------------------------------------------------- /modules/apps/tools/nix.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | let 4 | psc-package2nix = import (pkgs.fetchFromGitHub { 5 | owner = "justinwoo"; 6 | repo = "psc-package2nix"; 7 | rev = "f271b3ad7a8e2931a50b03dafd906262679d527f"; 8 | sha256 = "1D4Nxny/XPBuM8bopxSRbMhLdG0JwFzjwVKEVEoCHzc="; 9 | }) { inherit pkgs; }; 10 | in { 11 | environment.systemPackages = with pkgs; [ 12 | cachix 13 | 14 | nix-prefetch-scripts 15 | nix-prefetch-github 16 | nixfmt 17 | nix-du 18 | nix-index 19 | nix-serve 20 | nix-review 21 | nix-top 22 | any-nix-shell 23 | niv 24 | appimage-run 25 | 26 | # Generators 27 | 28 | nodePackages.node2nix 29 | nodePackages.bower2nix 30 | cabal2nix 31 | psc-package2nix 32 | # stack2nix 33 | ]; 34 | } 35 | -------------------------------------------------------------------------------- /modules/locale.nix: -------------------------------------------------------------------------------- 1 | { lib, ... }: 2 | 3 | { 4 | # Set the time zone 5 | time.timeZone = "Europe/Moscow"; 6 | 7 | console = { 8 | # Set terminal font 9 | font = "cyr-sun16"; 10 | # Use Ctrl+Shift to switch between layouts 11 | keyMap = "ruwin_ct_sh-UTF-8"; 12 | }; 13 | 14 | environment.sessionVariables = { 15 | XKB_DEFAULT_LAYOUT = "us,ru"; 16 | XKB_DEFAULT_OPTIONS = "grp:alt_shift_toggle,caps:ctrl_modifier,grp_led:caps"; 17 | LANG = lib.mkForce "en_US.UTF-8"; 18 | }; 19 | 20 | home-manager.users.vyorkin = { 21 | home.language = let 22 | en = "en_US.UTF-8"; 23 | ru = "ru_RU.UTF-8"; 24 | in { 25 | address = ru; 26 | monetary = ru; 27 | paper = ru; 28 | time = en; 29 | base = en; 30 | }; 31 | }; 32 | } 33 | -------------------------------------------------------------------------------- /modules/workspace/i3/config/i3blocks.conf: -------------------------------------------------------------------------------- 1 | command=$CONTRIB_BLOCKS_DIR/$BLOCK_NAME/$BLOCK_NAME 2 | separator_block_width=20 3 | markup=pango 4 | interval=60 5 | 6 | [wifi] 7 | INTERFACE=wlp2s0 8 | label=WIFI: 9 | interval=10 10 | 11 | [battery] 12 | command=$CUSTOM_BLOCKS_DIR/$BLOCK_NAME 13 | interval=30 14 | 15 | [bluetooth] 16 | command=$CUSTOM_BLOCKS_DIR/$BLOCK_NAME 17 | interval=10 18 | 19 | [brightness] 20 | command=$CUSTOM_BLOCKS_DIR/$BLOCK_NAME 21 | interval=1 22 | 23 | [sound] 24 | command=$CUSTOM_BLOCKS_DIR/$BLOCK_NAME 25 | interval=5 26 | 27 | [time] 28 | command=date '+%Y-%m-%d %H:%M:%S' 29 | interval=5 30 | 31 | [memory] 32 | label=MEM: 33 | interval=30 34 | 35 | [memory] 36 | label=SWAP: 37 | instance=swap 38 | interval=30 39 | 40 | [disk] 41 | label=DISK: 42 | interval=30 43 | -------------------------------------------------------------------------------- /modules/x11/autorandr/tv/setup: -------------------------------------------------------------------------------- 1 | HDMI-1 00ffffffffffff00410c00000101010103140103808048780ae692a3544a99260f4a4c2108008bc08180a94001010101010101010101023a801871382d40582c450000d05200001e023a80d072382d40102c458000d05200001e000000fc005068696c697073204654560a20000000fd00303e0f4611000a20202020202001c9020331f152101f2022210514041312031102160715060126091f07150750830100006a030c005000382d806565e3050301011d803e73382d407e2c458000d05200001e011d80d0721c1620102c258000d05200009e011d00bc52d01e20b828554000d05200001e011d8018711c1620582c250000d05200009e00000000000074 2 | eDP-1 00ffffffffffff0006af3d3100000000001a0104a51f1178028d15a156529d280a505400000001010101010101010101010101010101143780b87038244010103e0035ae100000180000000f0000000000000000000000000020000000fe0041554f0a202020202020202020000000fe004231343048414e30332e31200a003b 3 | -------------------------------------------------------------------------------- /modules/apps/pentest/database.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin.home.packages = with pkgs; [ 5 | # Java tool for automatic database injection 6 | # jsql-injection 7 | 8 | # Oracle assessment framework 9 | # oscanner 10 | 11 | # A tool to talk to the Oracle TNS listener on port 1521/tcp 12 | # on a simple level, such as sending ping commands or 13 | # requesting version 14 | # tnscmd10g 15 | 16 | # Guesses sids against an Oracle database 17 | # sidguesser 18 | 19 | # Dictionary attack tool for SQL Server 20 | # sqldict 21 | 22 | # Automatic SQL injection tool 23 | sqlmap 24 | 25 | # SQL server injection and takeover tool 26 | # sqlninja 27 | 28 | # MySQL injection tool 29 | # sqlsus 30 | ]; 31 | } 32 | -------------------------------------------------------------------------------- /modules/apps/editor/vim.nix: -------------------------------------------------------------------------------- 1 | { inputs, pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin = { 5 | programs.neovim = { 6 | enable = true; 7 | vimAlias = true; 8 | viAlias = true; 9 | vimdiffAlias = true; 10 | withNodeJs = true; 11 | }; 12 | 13 | home.packages = with pkgs; [ 14 | python39Packages.pynvim 15 | ]; 16 | 17 | xdg.configFile = { 18 | "nvim/init.vim".source = "${inputs.vim-config}/init.vim"; 19 | "nvim/ginit.vim".source = "${inputs.vim-config}/ginit.vim"; 20 | "nvim/init".source = "${inputs.vim-config}/init"; 21 | "nvim/after".source = "${inputs.vim-config}/after"; 22 | "nvim/autoload".source = "${inputs.vim-config}/autoload"; 23 | "nvim/plugin".source = "${inputs.vim-config}/plugin"; 24 | }; 25 | }; 26 | } 27 | -------------------------------------------------------------------------------- /modules/system.nix: -------------------------------------------------------------------------------- 1 | { 2 | system = { 3 | # Periodically upgrade NixOS to the latest version. 4 | # systemd timer will run nixos-rebuild switch --upgrade once a day 5 | autoUpgrade = { 6 | enable = true; 7 | allowReboot = false; 8 | dates = "8:00"; 9 | }; 10 | 11 | # This value determines the NixOS release from which the default 12 | # settings for stateful data, like file locations and database versions 13 | # on your system were taken. It‘s perfectly fine and recommended to leave 14 | # this value at the release version of the first install of this system. 15 | # Before changing this value read the documentation for this option 16 | # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). 17 | stateVersion = "22.05"; 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /modules/workspace/i3/packages/bumblebee-status.nix: -------------------------------------------------------------------------------- 1 | { stdenv, fetchgit, python3 }: 2 | 3 | let version = "1.7.2"; 4 | in stdenv.mkDerivation { 5 | name = "bumblebee-status-${version}"; 6 | inherit version; 7 | src = fetchgit { 8 | rev = "4db9c714bb2db466cce8c514183473b2e9dabfb8"; 9 | url = "https://github.com/tobi-wan-kenobi/bumblebee-status.git"; 10 | sha256 = "10y6kgg7azdwcxsv5l1blzdi5sfh1vk2mrz65l6jm2723m15704p"; 11 | }; 12 | buildInputs = [(python3.withPackages 13 | (ps: with ps; [ i3ipc requests taskw netifaces psutil ]))]; 14 | unpackPhase = ":"; 15 | installPhase = '' 16 | install -d $out/opt/bumblebee-status 17 | cp -rp $src/* $out/opt/bumblebee-status 18 | install -d $out/bin 19 | ln -s $out/opt/bumblebee-status/bumblebee-status $out/bin/bumblebee-status 20 | ''; 21 | meta = { }; 22 | } 23 | -------------------------------------------------------------------------------- /modules/users/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | let 4 | authorizedKeys = import ./authorized-keys.nix; 5 | vyorkin = import ./vyorkin.nix { inherit authorizedKeys; }; 6 | in { 7 | users = { 8 | # Enable adding new user and groups to the system 9 | # with the ordinary useradd and groupadd commands 10 | mutableUsers = true; 11 | 12 | # defaultUserShell = pkgs.zsh; 13 | users = { 14 | root.openssh.authorizedKeys.keys = authorizedKeys; 15 | vyorkin = vyorkin; 16 | }; 17 | }; 18 | 19 | # A list of names of users that have additional rights when 20 | # connecting to the Nix daemon 21 | nix.settings.trusted-users = [ "root" "vyorkin" ]; 22 | 23 | # Whether users of the wheel group must provide a 24 | # password to run commands as super user via sudo 25 | security.sudo.wheelNeedsPassword = false; 26 | } 27 | -------------------------------------------------------------------------------- /modules/x11/xserver/base.nix: -------------------------------------------------------------------------------- 1 | { 2 | services.xserver = { 3 | enable = true; 4 | 5 | # Symlink the X server configuration under /etc/X11/xorg.conf 6 | exportConfiguration = true; 7 | 8 | # Length of time in milliseconds that a key must be 9 | # depressed before autorepeat starts 10 | autoRepeatDelay = 200; 11 | 12 | # Length of time in milliseconds that should elapse between 13 | # autorepeat-generated keystrokes 14 | autoRepeatInterval = 40; 15 | 16 | # Setup keyboard layout 17 | layout = "us,ru"; 18 | xkbModel = "pc105"; 19 | xkbVariant = "qwerty"; 20 | 21 | # - Use Ctrl+Shift to switch between layouts 22 | # - Toggle led indicator on a CapsLock when current locale is RU 23 | # - Maps Ctrl to CapsLock 24 | xkbOptions = "grp:ctrl_shift_toggle, grp_led:caps, caps:ctrl_modifier"; 25 | }; 26 | } 27 | -------------------------------------------------------------------------------- /modules/workspace/i3/config/scripts/sound.nix: -------------------------------------------------------------------------------- 1 | { pamixer, lxqt, iconfont, config, lib, ... }: '' 2 | case $BLOCK_BUTTON in 3 | 2) ${pamixer}/bin/pamixer -t;; 4 | 4) ${pamixer}/bin/pamixer -i 5;; 5 | 5) ${pamixer}/bin/pamixer -d 5;; 6 | esac 7 | code=0 8 | if [[ `${pamixer}/bin/pamixer --get-mute` = "true" ]] 9 | then 10 | volume="" 11 | end="" 12 | icon="婢" 13 | else 14 | volume=`${pamixer}/bin/pamixer --get-volume` 15 | end="%" 16 | if [[ $volume -lt 33 ]] 17 | then 18 | icon="奄" 19 | else 20 | if [[ $volume -lt 66 ]] 21 | then 22 | icon="奔" 23 | else 24 | icon="墳" 25 | code=33 26 | fi 27 | fi 28 | fi 29 | ${lib.optionalString (! config.deviceSpecific.bigScreen) "[[ -n $BLOCK_BUTTON ]] &&"} text=" $volume$end" 30 | echo "$icon$text" 31 | exit $code 32 | '' 33 | -------------------------------------------------------------------------------- /modules/workspace/i3/rofi/themes/dmenu.rasi: -------------------------------------------------------------------------------- 1 | /** 2 | * ROFI Color theme 3 | * User: Qball 4 | * Copyright: Dave Davenport 5 | */ 6 | * { 7 | background-color: Black; 8 | border-color: White; 9 | text-color: White; 10 | font: "Times New Roman 12"; 11 | } 12 | 13 | configuration { 14 | } 15 | 16 | #window { 17 | anchor: north; 18 | location: north; 19 | width: 100%; 20 | padding: 4px; 21 | children: [ horibox ]; 22 | } 23 | 24 | #horibox { 25 | orientation: horizontal; 26 | children: [ prompt, entry, listview ]; 27 | } 28 | 29 | #listview { 30 | layout: horizontal; 31 | spacing: 5px; 32 | lines: 100; 33 | } 34 | 35 | #entry { 36 | expand: false; 37 | width: 10em; 38 | } 39 | 40 | #element { 41 | padding: 0px 2px; 42 | } 43 | #element selected { 44 | background-color: SteelBlue; 45 | } 46 | -------------------------------------------------------------------------------- /modules/dev/js/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, inputs, ... }: 2 | 3 | let 4 | genPkgs = pkgs.callPackage ./packages { inherit inputs; }; 5 | extPkgs = with genPkgs; [ 6 | colorguard 7 | git-issues 8 | # git-labelmaker 9 | madge 10 | psi 11 | now 12 | json-package 13 | localtunnel 14 | manpm 15 | available-versions 16 | git-recall 17 | jsinspect 18 | tmi 19 | commitizen 20 | ]; 21 | nixPkgs = with pkgs.nodePackages; [ 22 | bower 23 | yo 24 | http-server 25 | eslint_d 26 | rollup 27 | svgo 28 | prettier 29 | sloc 30 | js-beautify 31 | tern 32 | typescript 33 | typescript-language-server 34 | ]; 35 | in { 36 | home-manager.users.vyorkin = { 37 | home = { 38 | file = { ".npmrc" = { source = ./npmrc; }; }; 39 | 40 | packages = with pkgs; 41 | [ nodejs_latest yarn flow deno ] ++ nixPkgs ++ extPkgs; 42 | }; 43 | }; 44 | } 45 | -------------------------------------------------------------------------------- /modules/x11/xserver/lightdm.nix: -------------------------------------------------------------------------------- 1 | { 2 | services.xserver.displayManager.lightdm = { 3 | greeters.mini = { 4 | enable = true; 5 | user = "vyorkin"; 6 | 7 | extraConfig = '' 8 | [greeter] 9 | show-password-label = true 10 | password-label-text = Welcome, Great Hacker 11 | invalid-password-text = Are you sure? 12 | show-input-cursor = false 13 | password-alignment = right 14 | 15 | [greeter-theme] 16 | font = "IBM Plex Mono" 17 | font-size = 14pt 18 | text-color = "#666666" 19 | error-color = "#FF0000" 20 | background-image = "" 21 | background-color = "#000000" 22 | window-color = "#000000" 23 | border-color = "#333333" 24 | border-width = 1px 25 | layout-space = 14 26 | password-color = "#666666" 27 | password-background-color = "#222222" 28 | ''; 29 | }; 30 | }; 31 | } 32 | -------------------------------------------------------------------------------- /modules/apps/db/postgresql/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | environment.systemPackages = with pkgs; [ 5 | sqitchPg 6 | 7 | pgcli 8 | pgcenter 9 | ]; 10 | 11 | services.postgresql = { 12 | enable = true; 13 | enableTCPIP = true; 14 | 15 | authentication = pkgs.lib.mkForce '' 16 | # TYPE DATABASE USER ADDRESS METHOD 17 | local all all trust 18 | host all all 127.0.0.1/32 trust 19 | host all all ::1/128 trust 20 | host all all 0.0.0.0/0 md5 21 | ''; 22 | }; 23 | 24 | home-manager.users.vyorkin = { 25 | home.file = { 26 | ".psqlrc" = { source = ./psqlrc; }; 27 | 28 | "pgcli" = { 29 | source = ./pgcli; 30 | target = ".config/pgcli/config"; 31 | }; 32 | }; 33 | }; 34 | } 35 | -------------------------------------------------------------------------------- /modules/dev/haskell/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | imports = [ 5 | ./hoogle.nix 6 | ]; 7 | 8 | home-manager.users.vyorkin = { 9 | home.packages = with pkgs; [ 10 | # haskell.compiler.ghc901 11 | cabal-install 12 | ]; 13 | home.file = { 14 | "ghci.conf" = { 15 | source = ./ghci; 16 | target = ".ghc/ghci.conf"; 17 | }; 18 | 19 | ".hindent.yaml" = { source = ./hindent.yaml; }; 20 | ".stylish-haskell.yaml" = { 21 | source = ./stylish-haskell.yaml; 22 | }; 23 | ".hspec" = { source = ./hspec; }; 24 | ".summoner.toml" = { source = ./summoner.toml; }; 25 | ".hlint.yaml" = { source = ./hlint.yaml; }; 26 | ".haskeline" = { source = ./haskeline; }; 27 | 28 | ".cabal" = { 29 | source = ./cabal; 30 | recursive = true; 31 | }; 32 | 33 | ".stack" = { 34 | source = ./stack; 35 | recursive = true; 36 | }; 37 | }; 38 | }; 39 | } 40 | -------------------------------------------------------------------------------- /modules/apps/db/postgresql/psqlrc: -------------------------------------------------------------------------------- 1 | -- Don't display the "helpful" message on startup. 2 | \set QUIET 1 3 | \pset null '[NULL]' 4 | 5 | -- By default, NULL displays as an empty space. Is it actually an empty 6 | -- string, or is it null? This makes that distinction visible. 7 | \pset null '[NULL]' 8 | 9 | -- Use table format (with headers across the top) by default, but switch to 10 | -- expanded table format when there's a lot of data, which makes it much 11 | -- easier to read. 12 | \x auto 13 | 14 | \set PROMPT1 '%[%033[1m%]%M %n@%/%R%[%033[0m%]%# ' 15 | \set PROMPT2 '[more] %R > ' 16 | 17 | -- Verbose error reports. 18 | \set VERBOSITY verbose 19 | 20 | -- Use a separate history file per-database. 21 | \set HISTFILE ~/.psql_history- :DBNAME 22 | 23 | -- If a command is run more than once in a row, only store it once in the 24 | -- history. 25 | \set HISTCONTROL ignoredups 26 | 27 | -- Autocomplete keywords (like SELECT) in upper-case, even if you started 28 | -- typing them in lower case. 29 | \set COMP_KEYWORD_CASE upper 30 | \unset QUIET 31 | -------------------------------------------------------------------------------- /modules/x11/autorandr/work/setup: -------------------------------------------------------------------------------- 1 | HDMI-1 00ffffffffffff001e6d085b026e06000b1b0103803c2278ea3035a7554ea3260f50542108007140818081c0a9c0d1c081000101010104740030f2705a80b0588a0058542100001e565e00a0a0a029503020350058542100001a000000fd00383d1e871e000a202020202020000000fc004c4720556c7472612048440a20010b02031d7146902205040301230907076d030c001000b83c200060010203023a801871382d40582c450058542100001e000000ff003731314e54585243443337380a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073 2 | HDMI-2 00ffffffffffff001e6d085bce6d06000b1b0103803c2278ea3035a7554ea3260f50542108007140818081c0a9c0d1c081000101010104740030f2705a80b0588a0058542100001e565e00a0a0a029503020350058542100001a000000fd00383d1e871e000a202020202020000000fc004c4720556c7472612048440a20014002031d7146902205040301230907076d030c001000b83c200060010203023a801871382d40582c450058542100001e000000ff003731314e54555743443332360a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078 3 | -------------------------------------------------------------------------------- /modules/workspace/i3/config/scripts/connections.nix: -------------------------------------------------------------------------------- 1 | { bash, networkmanager, iconfont, config, modemmanager, ... }: '' 2 | #!${bash}/bin/bash 3 | CONNECTIONS=$(${networkmanager}/bin/nmcli con show --active | tail +2 | tr -s ' ' | rev | cut -d' ' -f3 | rev) 4 | text="" 5 | for connection in $CONNECTIONS 6 | do 7 | grep wifi <<< $connection > /dev/null && { 8 | # SIGNAL=$(${networkmanager}/bin/nmcli d w | grep '^\*' | tr -s ' ' | cut -d' ' -f7) 9 | # if [[ $SIGNAL -lt 20 ]] 10 | # then 11 | # text+=冷 12 | # elif [[ $SIGNAL -lt 40 ]] 13 | # then 14 | # text+=爛 15 | # elif [[ $SIGNAL -lt 60 ]] 16 | # then 17 | # text+=嵐 18 | # elif [[ $SIGNAL -lt 80 ]] 19 | # then 20 | # text+=襤 21 | # else 22 | # text+=蠟 23 | # fi 24 | text= 25 | } 26 | grep ethernet <<< $connection > /dev/null && text+="" 27 | done 28 | code=0 29 | [[ $text == "" ]] && { 30 | text= 31 | code=33 32 | } 33 | echo "$text" 34 | exit $code 35 | '' 36 | -------------------------------------------------------------------------------- /modules/apps/pentest/sdr.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin.home.packages = with pkgs; [ 5 | # Configuration tool for amateur radios 6 | # chirp 7 | 8 | # GNU Radio Software Radio Toolkit 9 | # gnuradio 10 | 11 | # Software defined radio receiver 12 | gqrx 13 | 14 | # Gnuradio Mode-S/ADS-B radio 15 | # gr-air-modes 16 | 17 | # GNU Radio Blind IQ imbalance estimator and correction 18 | # gr-iqbal 19 | 20 | # Gnuradio blocks from the OsmoSDR project 21 | # gr-osmosdr 22 | 23 | # Software defined radio peripheral 24 | hackrf 25 | 26 | # Tool for visualising captured radio signals 27 | inspectrum 28 | 29 | # Calculate local oscillator frequency offset using GSM base stations 30 | kalibrate-rtl 31 | 32 | # Digital radio transmission decoder 33 | multimon-ng 34 | 35 | # Simple spectrum analyser for scanning with a RTL-SDR compatible USB device 36 | # rtlsdr-scanner 37 | 38 | # Universal hardware driver for Ettus Research products - host apps 39 | # uhd-host 40 | 41 | # Various UHD Images 42 | # uhd-images 43 | ]; 44 | } 45 | -------------------------------------------------------------------------------- /modules/boot/plymouth/angular.nix: -------------------------------------------------------------------------------- 1 | { stdenv, fetchgit, writeTextFile }: 2 | 3 | let 4 | config_file = writeTextFile { 5 | name = "angular.plymouth"; 6 | text = '' 7 | [Plymouth Theme] 8 | Name=angular 9 | Description=display kinda fireworks 10 | Comment=created By Aditya Shakya (@adi1090x) 11 | ModuleName=script 12 | 13 | [script] 14 | ImageDir=etc/plymouth/themes/angular 15 | ScriptFile=etc/plymouth/themes/angular/angular.script 16 | ''; 17 | }; 18 | in stdenv.mkDerivation rec { 19 | name = "angular"; 20 | 21 | src = fetchGit { 22 | url = "https://github.com/adi1090x/plymouth-themes"; 23 | rev = "c2a068e44f476d79fcc87372ad0436d11cf65b14"; 24 | }; 25 | 26 | buildInputs = [ stdenv ]; 27 | 28 | configurePhase = '' 29 | install_path=$out/share/plymouth/themes/ 30 | mkdir -p $install_path 31 | ''; 32 | 33 | buildPhase = '' 34 | substitute ${config_file} "pack_1/angular/angular.plymouth" 35 | ''; 36 | 37 | installPhase = '' 38 | cd pack_1 && cp -r angular $install_path 39 | ''; 40 | 41 | meta = with stdenv.lib; { platfotms = platforms.linux; }; 42 | } 43 | -------------------------------------------------------------------------------- /modules/dev/clojure/lein/profiles.clj: -------------------------------------------------------------------------------- 1 | {:repl {:dependencies [[alembic "0.3.2"] 2 | [org.clojure/tools.namespace "0.2.11"] 3 | [org.clojure/tools.nrepl "0.2.13"]]}} 4 | 5 | {:user {:plugins [[cider/cider-nrepl "0.16.0"] 6 | [lein-dotenv "RELEASE"] 7 | [lein-exec "0.3.7"] 8 | [lein-pprint "1.2.0"] 9 | [lein-kibit "0.1.6"] 10 | [lein-try "0.4.3"] 11 | [jonase/eastwood "0.2.7"] 12 | [lein-ancient "0.6.0-SNAPSHOT"] 13 | [lein-annotations "0.1.0"] 14 | [lein-autoreload "0.1.0"] 15 | [lein-bikeshed "0.2.0"] 16 | [lein-cprint "1.2.0"] 17 | [lein-ns-dep-graph "0.2.0-SNAPSHOT"] 18 | [lein-vanity "0.2.0"] 19 | [lein-ring "0.9.7"] 20 | [lein-cloudbees "1.0.5"] 21 | [org.clojure/tools.trace "0.7.9"] 22 | [venantius/ultra "0.4.0"]] 23 | :dependencies [[slamhound "1.5.5"]] 24 | :aliases {"slamhound" ["run" "-m" "slam.hound"]}}} 25 | -------------------------------------------------------------------------------- /modules/workspace/base.nix: -------------------------------------------------------------------------------- 1 | { pkgs, lib, config, inputs, ... }: 2 | 3 | { 4 | # Whether core dumps should be processed by systemd-coredump. 5 | # If disabled, core dumps appear in the current directory of the crashing process 6 | systemd.coredump.enable = true; 7 | 8 | environment.systemPackages = [ 9 | (pkgs.writeShellScriptBin "lock" '' 10 | set -euo pipefail 11 | if [[ "$1" == this ]] 12 | then args="-s" 13 | else args="-san" 14 | fi 15 | '') 16 | ]; 17 | 18 | environment.loginShellInit = lib.mkBefore '' 19 | [[ "$(tty)" == /dev/tty? ]] && sudo /run/current-system/sw/bin/lock this 20 | ''; 21 | 22 | home-manager.users.vyorkin = { 23 | xdg = { 24 | enable = true; 25 | userDirs.enable = true; 26 | }; 27 | 28 | # Use services.flameshot.enable = true instead 29 | # See: https://github.com/nix-community/home-manager/issues/2064 30 | home.packages = with pkgs; [ flameshot ]; 31 | 32 | home.activation."mimeapps-remove" = { 33 | before = [ "linkGeneration" ]; 34 | after = [ ]; 35 | data = "rm -f /home/vyorkin/.config/mimeapps.list"; 36 | }; 37 | }; 38 | } 39 | -------------------------------------------------------------------------------- /modules/apps/terminal/alacritty.nix: -------------------------------------------------------------------------------- 1 | { config, pkgs, lib, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin.programs.alacritty = { 5 | enable = true; 6 | settings = { 7 | 8 | font = rec { 9 | normal.family = config.themes.fonts.mono.family; 10 | size = 10; 11 | bold = { style = "Bold"; }; 12 | }; 13 | 14 | window = { 15 | opacity = 0.9; 16 | padding = { 17 | x = 4; 18 | y = 4; 19 | }; 20 | decorations = "none"; 21 | }; 22 | 23 | shell.program = "${pkgs.zsh}/bin/zsh"; 24 | 25 | cursor.style = "Underline"; 26 | 27 | live_config_reload = true; 28 | 29 | colors = with pkgs.my.thmHash; { 30 | primary = { 31 | background = base00; 32 | foreground = base05; 33 | }; 34 | cursor = { 35 | text = base00; 36 | cursor = base0E; 37 | }; 38 | normal = { 39 | black = base00; 40 | red = base08; 41 | green = base0B; 42 | yellow = base0A; 43 | blue = base0D; 44 | magenta = base0E; 45 | white = base07; 46 | }; 47 | }; 48 | }; 49 | }; 50 | 51 | } 52 | -------------------------------------------------------------------------------- /modules/workspace/i3/rofi/themes/sidebar-dark.rasi: -------------------------------------------------------------------------------- 1 | // ROFI Color theme 2 | // User: SmokeKing 3 | // vim:ft=css 4 | * { 5 | background-color: rgba (0, 0, 0, 0%); 6 | text-color: rgba (220, 220, 220, 100%); 7 | } 8 | #window { 9 | padding: 20; 10 | fullscreen: true; 11 | anchor: east; 12 | location: east; 13 | orientation: horizontal; 14 | children: [dummy, mainbox]; 15 | } 16 | #dummy { expand: true; } 17 | #mainbox { 18 | padding: 10; 19 | expand: false; 20 | background-color: rgba (20, 20, 25, 100%); 21 | } 22 | #message { padding: 10 10 10; } 23 | #listview { spacing: 2; padding: 1em 0.4em 1em 1em; } 24 | #element { padding: 5 10 5; } 25 | #element.selected { 26 | border: 0 0 2; 27 | text-color: rgb (95, 215, 255); 28 | border-color: rgba (0, 0, 0, 100%); 29 | } 30 | #sidebar { padding: 5 8 8; } 31 | #button { padding: 8 0 8; } 32 | #button.selected { 33 | border: 0 0 2; 34 | padding: 8 0 8; 35 | text-color: rgb (95, 215, 255); 36 | border-color: rgba (0, 0, 0, 100%); 37 | } 38 | #inputbar { 39 | border: 0 0 2; 40 | padding: 0% 1.8% 0% 0.2%; 41 | border-color: rgba (0, 0, 0, 100%); 42 | } 43 | #entry { width: 18em; padding: 8 8 1; } 44 | #prompt { padding: 8 8 8 8; } 45 | -------------------------------------------------------------------------------- /modules/dev/haskell/summoner.toml: -------------------------------------------------------------------------------- 1 | owner = "vyorkin" 2 | fullName = "Vasiliy Yorkin" 3 | email = "vasiliy.yorkin@gmail.com" 4 | license = "MIT" 5 | cabal = true 6 | stack = true 7 | github = true 8 | noUpload = true 9 | private = false 10 | travis = true 11 | appveyor = false 12 | ghcVersions = ["8.4.4", "8.6.5"] 13 | lib = true 14 | exe = true 15 | test = true 16 | bench = true 17 | extensions = [ "ConstraintKinds" 18 | , "DeriveGeneric" 19 | , "GeneralizedNewtypeDeriving" 20 | , "InstanceSigs" 21 | , "KindSignatures" 22 | , "LambdaCase" 23 | , "OverloadedStrings" 24 | , "RecordWildCards" 25 | , "ScopedTypeVariables" 26 | , "StandaloneDeriving" 27 | , "TupleSections" 28 | , "TypeApplications" 29 | , "ViewPatterns" 30 | ] 31 | 32 | files = 33 | [ { path = ".stylish-haskell.yaml" 34 | , url = "https://raw.githubusercontent.com/vyorkin/nixos-config/master/home/dotfiles/haskell/stylish-haskell.yaml" 35 | } 36 | ] 37 | 38 | [prelude] 39 | package = "relude" 40 | module = "Relude" 41 | -------------------------------------------------------------------------------- /modules/workspace/gtk.nix: -------------------------------------------------------------------------------- 1 | { pkgs, old, config, lib, inputs, ... }: 2 | 3 | let 4 | thm = config.themes.colors; 5 | thm' = builtins.mapAttrs (name: value: { hex.rgb = value; }) thm; 6 | in { 7 | nixpkgs.overlays = [ 8 | (self: super: { 9 | generated-gtk-theme = 10 | pkgs.callPackage "${inputs.rycee}/pkgs/materia-theme" { 11 | configBase16 = { 12 | name = "Generated"; 13 | kind = "dark"; 14 | colors = thm' // { 15 | base01 = thm'.base00; 16 | base02 = thm'.base00; 17 | }; 18 | }; 19 | }; 20 | }) 21 | ]; 22 | 23 | home-manager.users.vyorkin = { 24 | gtk = { 25 | enable = true; 26 | iconTheme = { 27 | name = "Papirus-Dark"; 28 | package = pkgs.papirus-icon-theme; 29 | }; 30 | 31 | theme = { 32 | name = "Generated"; 33 | package = pkgs.generated-gtk-theme; 34 | }; 35 | font = { 36 | name = with config.themes.fonts; "${main.family} ${toString main.size}"; 37 | }; 38 | 39 | gtk3 = { 40 | bookmarks = [ 41 | "file:///home/vyorkin/projects Projects" 42 | ]; 43 | }; 44 | }; 45 | 46 | home.sessionVariables.GTK_THEME = "Generated"; 47 | }; 48 | } 49 | -------------------------------------------------------------------------------- /modules/workspace/sway/wofi/default.nix: -------------------------------------------------------------------------------- 1 | { config, lib, pkgs, ... }: 2 | 3 | let 4 | wofiConfig = { 5 | key_left = "Control_L-h"; 6 | key_down = "Control_L-j"; 7 | key_up = "Control_L-k"; 8 | key_right = "Control_L-l"; 9 | term = "${config.defaultApps.term.cmd}"; 10 | insensitive = true; 11 | }; 12 | 13 | wofiTheme = '' 14 | window { 15 | margin: 0px; 16 | border: 1px solid #222222; 17 | background-color: #000000; 18 | } 19 | #input { 20 | margin: 5px; 21 | border: none; 22 | color: #FFFFFF; 23 | background-color: #222222; 24 | } 25 | #inner-box { 26 | margin: 5px; 27 | border: none; 28 | background-color: #222222; 29 | } 30 | #outer-box { 31 | margin: 5px; 32 | border: none; 33 | background-color: #222222; 34 | } 35 | #scroll { 36 | margin: 0px; 37 | border: none; 38 | } 39 | #text { 40 | margin: 5px; 41 | border: none; 42 | color: #FFFFFF; 43 | } 44 | #text:selected { 45 | color: #FFFFFF; 46 | } 47 | #entry:selected { 48 | background-color: #000000; 49 | color: #FFFFFF; 50 | } 51 | ''; 52 | in { 53 | home-manager.users.vyorkin = { 54 | xdg.configFile."wofi/style.css".text = wofiTheme; 55 | xdg.configFile."wofi/config".text = 56 | lib.generators.toKeyValue { } wofiConfig; 57 | }; 58 | } 59 | -------------------------------------------------------------------------------- /modules/workspace/i3/rofi/themes/white.rasi: -------------------------------------------------------------------------------- 1 | // ROFI Color theme 2 | // User: SmokeKing 3 | // vim:ft=css 4 | * { 5 | spacing: 1; 6 | } 7 | #window { 8 | border: 0; 9 | padding: 20; 10 | } 11 | #mainbox { 12 | border: 0; 13 | padding: 10; 14 | } 15 | #message { 16 | border: 1; 17 | padding: 10 2% 10; 18 | } 19 | #listview { 20 | padding: 10 2% 10; 21 | spacing: 2; 22 | } 23 | #element { 24 | padding: 5 5 5; 25 | } 26 | #element.selected { 27 | text-color: rgba (23, 147, 209, 100%); 28 | border: 0 0 1; 29 | border-radius: 0; 30 | border-color: rgba (23, 147, 209, 100%); 31 | } 32 | #scrollbar { 33 | width: 4; 34 | handle-width: 8; 35 | } 36 | #sidebar { 37 | padding: 1% 2% 2%; 38 | } 39 | #button { 40 | padding: 8 0 8; 41 | } 42 | #button.selected { 43 | padding: 8 0 8; 44 | border: 0 0 1; 45 | border-radius: 0; 46 | border-color: rgba (23, 147, 209, 100%); 47 | text-color: rgba (23, 147, 209, 100%); 48 | } 49 | #inputbar { 50 | border: 0; 51 | padding: 0% 1.8% 0% 0.2%; 52 | } 53 | #entry { 54 | spacing: 5; 55 | border: 0; 56 | padding: 5 5 5; 57 | border-radius: 4; 58 | border-color: rgba (0, 0, 0, 100%); 59 | } 60 | #prompt { 61 | spacing: 0; 62 | border: 0; 63 | border-radius: 4; 64 | padding: 0; 65 | text-color: rgba (255, 255, 255, 100%); 66 | border-color: rgba (0, 0, 0, 100%); 67 | } 68 | -------------------------------------------------------------------------------- /modules/apps/pentest/passwords.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin.home.packages = with pkgs; [ 5 | # Brute-Forcing from Nmap output. 6 | # Automatically attempts default creds on found services 7 | brutespray 8 | 9 | # Utility for resetting or blanking local passwords used by 10 | # Windows NT, 2000, XP, Vista, 7, 8, 8.1 and 10 11 | chntpw 12 | 13 | # Crowbar is brute forcing tool that can be used during 14 | # penetration tests. It is developed to support protocols 15 | # that are not currently supported by thc-hydra and other 16 | # popular brute forcing tools 17 | crowbar 18 | 19 | # Wordlist generator 20 | crunch 21 | 22 | # World’s fastest and most advanced password recovery tool 23 | hashcat 24 | 25 | # Small set of tools convert packets from captures. 26 | # For the use with latest hashcat or John the Ripper 27 | hcxtools 28 | 29 | # John the Ripper jumbo - advanced offline password cracker, 30 | # which supports hundreds of hash and cipher types, and runs 31 | # on many operating systems, CPUs, GPUs, and even some FPGAs 32 | john 33 | 34 | # Multi-purpose brute-forcer, with a modular design and a flexible usage 35 | # python36Packages.patator 36 | 37 | # Modular and multi processing pass phrase cracking tool 38 | phrasendrescher 39 | 40 | # Login hacker tool 41 | thc-hydra 42 | ]; 43 | } 44 | -------------------------------------------------------------------------------- /modules/workspace/i3/rofi/themes/ribbon.rasi: -------------------------------------------------------------------------------- 1 | /** 2 | * ROFI Color theme 3 | * User: Rokit 4 | */ 5 | 6 | * { 7 | base-bg: #000000ff; 8 | selected-bg: #222222ff; 9 | base-color: #eeeeeeaa; 10 | selected-color: #ffffffff; 11 | border-color: #33333366; 12 | transparent: #00000000; 13 | text-color: @base-color; 14 | font: "FiraCode 14"; 15 | } 16 | #window { 17 | width: 100%; 18 | background-color: @base-bg; 19 | margin: 0px 0px 0px 0px; 20 | children: [ horibox ]; 21 | } 22 | #horibox { 23 | background-color: @transparent; 24 | orientation: horizontal; 25 | children: [ prompt, textbox-prompt-colon, entry, listview ]; 26 | } 27 | #prompt { 28 | text-color: @selected-color; 29 | padding: 0.7em 0px 0.7em 10px; 30 | background-color: @transparent; 31 | } 32 | #textbox-prompt-colon { 33 | expand: false; 34 | str: ":"; 35 | padding: 0.7em 10px 0.7em 0px; 36 | text-color: @selected-color; 37 | background-color: @transparent; 38 | } 39 | #entry { 40 | padding: 0.7em; 41 | text-color: @selected-color; 42 | background-color: #000; 43 | expand: false; 44 | width: 10em; 45 | } 46 | #listview { 47 | background-color: @transparent; 48 | layout: horizontal; 49 | spacing: 5px; 50 | lines: 100; 51 | } 52 | #element { 53 | background-color: @transparent; 54 | padding: 0.7em; 55 | } 56 | #element selected { 57 | border: 0px 1px; 58 | text-color: @selected-color; 59 | background-color: @selected-bg; 60 | } 61 | -------------------------------------------------------------------------------- /modules/apps/pentest/reversing.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin.home.packages = with pkgs; [ 5 | # Reverse Engineering Framework 6 | radare2 7 | 8 | # Free and Open Source Reverse Engineering Platform powered by rizin 9 | radare2-cutter 10 | 11 | # Fork of radare2 12 | # See: https://github.com/NixOS/nixpkgs/pull/109305 13 | # rizin 14 | 15 | # Retargetable machine-code decompiler based on LLVM 16 | retdec 17 | 18 | # Native code to C/C++ decompiler 19 | snowman 20 | 21 | # Instrumentation framework for building dynamic analysis 22 | # tools. There are Valgrind tools that can automatically 23 | # detect many memory management and threading bugs, and 24 | # profile your programs in detail 25 | valgrind 26 | 27 | # 32-bit assembler level analysing debugger 28 | # ollydbg 29 | 30 | # Helps to identify and classify malware samples 31 | # See: https://github.com/Yara-Rules/rules 32 | yara 33 | 34 | # Tools to work with android .dex and java .class files 35 | dex2jar 36 | 37 | # Dex to Java decompiler 38 | # jadx 39 | 40 | # Intercept Java applications locally 41 | # javasnoop 42 | 43 | # Tool for reverse engineering Android apk files 44 | apktool 45 | 46 | # Java 8+ Jar & Android APK Reverse Engineering Suite 47 | # bytecode-viewer 48 | 49 | # Cross platform x86/x86-64 debugger 50 | # edb-debugger 51 | 52 | # Assembler and disassembler for Flash (SWF) bytecode 53 | # flasm 54 | ]; 55 | } 56 | -------------------------------------------------------------------------------- /modules/workspace/i3/config/scripts/network.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE BangPatterns, TemplateHaskell #-} 2 | 3 | import Control.Concurrent (threadDelay) 4 | import Control.Monad (mapM, join) 5 | import System.Directory (listDirectory) 6 | import Data.Bool (bool) 7 | import Language.Haskell.TH.Syntax (liftString, runIO) 8 | import System.Environment (getEnv) 9 | import Control.Monad.IO.Class (liftIO) 10 | 11 | path :: String 12 | path = "/sys/class/net/" 13 | 14 | data Statistics = Statistics !Float !Float 15 | 16 | instance Semigroup Statistics where 17 | Statistics a b <> Statistics c d = Statistics (a + c) (b + d) 18 | 19 | instance Monoid Statistics where 20 | mempty = Statistics 0 0 21 | 22 | icon :: String -> String 23 | icon i = "" ++ i ++ "" 24 | 25 | readInterface :: FilePath -> IO Statistics 26 | readInterface interface = do 27 | rx <- read <$> readFile (path ++ interface ++ "/statistics/rx_bytes") 28 | tx <- read <$> readFile (path ++ interface ++ "/statistics/tx_bytes") 29 | return $ Statistics rx tx 30 | 31 | readInterfaces :: [FilePath] -> IO Statistics 32 | readInterfaces interfaces = mconcat <$> (mapM readInterface interfaces) 33 | 34 | main :: IO () 35 | main = do 36 | interfaces <- listDirectory path 37 | Statistics rx tx <- readInterfaces interfaces 38 | threadDelay 1000000 39 | Statistics rx' tx' <- readInterfaces interfaces 40 | putStrLn $ (icon "\58052") ++ (show $ round $ (rx' - rx) / 10^3) 41 | ++ (icon "\58054") ++ (show $ round $ (tx' - tx) / 10^3) 42 | -------------------------------------------------------------------------------- /modules/hardware/sound.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | # PulseAudio is a popular sound server for Linux. 4 | # It is now required by a number of applications, and should be 5 | # enabled if audio support is desired on NixOS. 6 | # Enabling PulseAudio is sufficient to enable audio support on NixOS in most cases. 7 | 8 | # You may need to add users to the audio group for them to be able to use audio devices: 9 | # users.extraUsers.alice.extraGroups = [ "audio" ... ]; 10 | 11 | # More info: https://nixos.wiki/wiki/PulseAudio 12 | 13 | { 14 | # sound.enable = true; 15 | 16 | security.rtkit.enable = true; 17 | services.pipewire = { 18 | enable = true; 19 | alsa.enable = true; 20 | alsa.support32Bit = true; 21 | pulse.enable = true; 22 | }; 23 | 24 | hardware.pulseaudio = { 25 | enable = false; 26 | 27 | # 1. Only the full build has Bluetooth support 28 | # 2. Enable JACK support 29 | package = pkgs.pulseaudioFull; # .override { jackaudioSupport = true; }; 30 | 31 | # For compatibility with 32-bit applications 32 | support32Bit = true; 33 | 34 | # While pulseaudio itself only has support for the 35 | # SBC bluetooth codec there is out-of-tree support for AAC, APTX, APTX-HD and LDAC. 36 | # extraModules = [pkgs.pulseaudio-modules-bt]; 37 | }; 38 | 39 | home-manager.users.vyorkin.home.packages = with pkgs; [ 40 | pamixer 41 | # A Pulseaudio mixer in Qt (port of pavucontrol). 42 | # Can be used to adjust all controls provided by PulseAudio. 43 | # See: https://github.com/lxqt/pavucontrol-qt 44 | lxqt.pavucontrol-qt 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /modules/apps/monitoring/ksysguard/monitoring.sgrd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /modules/default.nix: -------------------------------------------------------------------------------- 1 | builtins.listToAttrs (builtins.map (path: { 2 | name = builtins.head (let 3 | b = builtins.baseNameOf path; 4 | m = builtins.match "(.*)\\.nix" b; 5 | in if isNull m then [ b ] else m); 6 | value = import path; 7 | }) [ 8 | ./hardware 9 | ./boot 10 | ./system.nix 11 | ./network.nix 12 | ./nix.nix 13 | ./overlay.nix 14 | ./nixpkgs.nix 15 | ./services.nix 16 | ./locale.nix 17 | ./security.nix 18 | ./virtualisation.nix 19 | ./home.nix 20 | ./users 21 | ./themes.nix 22 | 23 | ./x11 24 | ./x11/xserver/sddm.nix 25 | ./x11/xserver/lightdm.nix 26 | ./x11/xserver/libinput.nix 27 | 28 | ./workspace 29 | ./workspace/ssh.nix 30 | ./workspace/cursor.nix 31 | ./workspace/gtk.nix 32 | ./workspace/qt.nix 33 | ./workspace/gnome 34 | ./workspace/sway 35 | ./workspace/i3 36 | 37 | ./workspace/laptop-x11 38 | 39 | ./apps 40 | ./apps/tools 41 | ./apps/terminal 42 | ./apps/terminal/alacritty.nix 43 | ./apps/terminal/kitty.nix 44 | ./apps/terminal/tmux.nix 45 | ./apps/fm 46 | ./apps/scm/git.nix 47 | ./apps/shell/zsh.nix 48 | ./apps/shell/fish.nix 49 | ./apps/editor 50 | ./apps/editor/emacs.nix 51 | ./apps/editor/vim.nix 52 | ./apps/editor/vscode.nix 53 | ./apps/reading 54 | ./apps/reading/zathura 55 | ./apps/messaging 56 | ./apps/web 57 | ./apps/web/firefox.nix 58 | ./apps/web/google-chrome.nix 59 | ./apps/web/brave.nix 60 | ./apps/torrent.nix 61 | ./apps/db 62 | ./apps/devops 63 | ./apps/monitoring 64 | ./apps/media 65 | ./apps/streaming 66 | ./apps/pentest 67 | ./apps/gaming 68 | 69 | ./dev 70 | ]) 71 | -------------------------------------------------------------------------------- /modules/apps/pentest/wireless.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin.home.packages = with pkgs; [ 5 | # Framework for ZigBee exploitation 6 | # killerbee 7 | 8 | # Swiss army knife of sub-GHz radio 9 | # rfcat 10 | 11 | # Tool for establishing 3G connections 12 | # sakis3g 13 | 14 | # Utilities for using the Wi-Spy USB spectrum analyzer hardware 15 | # spectools 16 | 17 | # Wireless WEP/WPA cracking utilities 18 | aircrack-ng 19 | 20 | # A tool for exploiting Cisco LEAP networks 21 | # asleap 22 | 23 | # Implementation of the WPS brute force attack, written in C 24 | bully 25 | 26 | # Brute-force WPA dictionary attack 27 | cowpatty 28 | 29 | # Tool for extracting and cracking EAP-MD5 30 | # eapmd5pass 31 | 32 | # Automated Wi-Fi cracker 33 | # fern-wifi-cracker 34 | 35 | # FreeRadius Wireless Pawn Edition 36 | # freeradius-wpe 37 | 38 | # Modified hostapd to facilitate AP impersonation attacks 39 | # hostapd-wpe 40 | 41 | # Tool for configuring Linux wireless devices 42 | iw 43 | 44 | # Wireless network and device detector (metapackage) 45 | kismet 46 | 47 | # Utility for manipulating the MAC address of network interfaces 48 | macchanger 49 | 50 | # Wireless attack tool for IEEE 802.11 networks 51 | # mdk3 mdk4 52 | 53 | # Offline WPS bruteforce tool 54 | # pixiewps 55 | 56 | # Brute force attack tool against Wifi Protected Setup PIN number 57 | reaverwps 58 | 59 | # Wi-Fi honeypot 60 | # wifi-honey 61 | 62 | # Python script to automate wireless auditing using aircrack-ng tools 63 | wifite2 64 | ]; 65 | } 66 | -------------------------------------------------------------------------------- /modules/workspace/i3/rofi/themes/black.rasi: -------------------------------------------------------------------------------- 1 | // ROFI Color theme 2 | // User: vyorkin 3 | // vim:ft=css 4 | * { 5 | spacing: 1; 6 | background: rgba (10, 10, 10, 60%); 7 | border: rgba (30, 30, 30, 100%); 8 | foreground: rgba (200, 200, 200, 100%); 9 | } 10 | #window { 11 | background-color: @background; 12 | border: 0; 13 | padding: 20; 14 | } 15 | #mainbox { 16 | background-color: @background; 17 | border: 0; 18 | padding: 10; 19 | } 20 | #message { 21 | background-color: @background; 22 | border: 1; 23 | padding: 10 2% 10; 24 | } 25 | #listview { 26 | background-color: @background; 27 | padding: 10 2% 10; 28 | spacing: 2; 29 | } 30 | #element { 31 | padding: 5 5 5; 32 | background-color: @background; 33 | } 34 | #element.selected { 35 | border: 0 0 1; 36 | border-radius: 0; 37 | border-color: @border; 38 | background-color: @background; 39 | text-color: @foreground; 40 | } 41 | #scrollbar { 42 | width: 4; 43 | handle-width: 8; 44 | } 45 | #sidebar { 46 | padding: 1% 2% 2%; 47 | } 48 | #button { 49 | padding: 8 0 8; 50 | } 51 | #button.selected { 52 | padding: 8 0 8; 53 | border: 0 0 1; 54 | border-radius: 0; 55 | border-color: @border; 56 | text-color: @foreground; 57 | } 58 | #inputbar { 59 | border: 0; 60 | padding: 0% 1.8% 0% 0.2%; 61 | } 62 | #entry { 63 | spacing: 5; 64 | border: 0; 65 | padding: 5 5 5; 66 | border-radius: 4; 67 | border-color: rgba (0, 0, 0, 100%); 68 | } 69 | #prompt { 70 | spacing: 0; 71 | border: 0; 72 | border-radius: 4; 73 | padding: 0; 74 | text-color: @foreground; 75 | border-color: @border; 76 | } 77 | -------------------------------------------------------------------------------- /modules/workspace/i3/rofi/themes/white-border.rasi: -------------------------------------------------------------------------------- 1 | // ROFI Color theme 2 | // User: SmokeKing 3 | // vim:ft=css 4 | * { 5 | spacing: 1; 6 | background-color: rgba (248, 248, 248, 100%); 7 | } 8 | #window { 9 | border: 0; 10 | padding: 20; 11 | } 12 | #mainbox { 13 | border: 0; 14 | padding: 10; 15 | } 16 | #message { 17 | border: 1; 18 | padding: 10 2% 10; 19 | } 20 | #listview { 21 | padding: 10 2% 10; 22 | spacing: 2; 23 | } 24 | #element { 25 | padding: 5 5 9; 26 | } 27 | #element.selected { 28 | text-color: rgba (10, 80, 130, 100%); 29 | background-color: rgba (240, 240, 240, 100%); 30 | border: 1 3 3 1; 31 | border-radius: 3; 32 | border-color: rgba (10, 10, 10, 100%); 33 | } 34 | #scrollbar { 35 | width: 4; 36 | handle-width: 8; 37 | } 38 | #sidebar { 39 | padding: 1% 2% 2%; 40 | } 41 | #button { 42 | padding: 8 0 8; 43 | } 44 | #button.selected { 45 | padding: 8 0 8; 46 | border: 1 3 3 1; 47 | border-radius: 3; 48 | border-color: rgba (10, 10, 10, 100%); 49 | background-color: rgba (240, 240, 240, 100%); 50 | text-color: rgba (10, 80, 130, 100%); 51 | } 52 | #inputbar { 53 | border: 0 0 2; 54 | border-radius: 3; 55 | border-color: rgba (10, 10, 10, 100%); 56 | padding: 0% 1.8% 0% 0.2%; 57 | background-color: rgba (248, 248, 248, 100%); 58 | } 59 | #entry { 60 | spacing: 5; 61 | border: 0; 62 | padding: 5 5 5; 63 | border-radius: 4; 64 | border-color: rgba (0, 0, 0, 100%); 65 | } 66 | #prompt { 67 | spacing: 0; 68 | border: 0; 69 | border-radius: 4; 70 | padding: 5 5 5; 71 | text-color: rgba (0, 0, 0, 100%); 72 | border-color: rgba (0, 0, 0, 100%); 73 | } 74 | -------------------------------------------------------------------------------- /modules/workspace/i3/rofi/themes/white-no-border.rasi: -------------------------------------------------------------------------------- 1 | // ROFI Color theme 2 | // User: SmokeKing 3 | // vim:ft=css 4 | * { 5 | spacing: 1; 6 | } 7 | #window { 8 | border: 0; 9 | padding: 20; 10 | } 11 | #mainbox { 12 | border: 0; 13 | padding: 10; 14 | } 15 | #message { 16 | border: 1; 17 | padding: 10 2% 10; 18 | } 19 | #listview { 20 | padding: 10 2% 10; 21 | spacing: 2; 22 | border: 0; 23 | border-radius: 4; 24 | border-color: rgba (0, 0, 0, 100%); 25 | } 26 | #element { 27 | border: 0; 28 | border-color: rgba (0, 0, 0, 100%); 29 | border-radius: 4; 30 | padding: 5 5 5; 31 | } 32 | #element.selected { 33 | text-color: rgba (23, 147, 209, 100%); 34 | } 35 | #scrollbar { 36 | width: 4; 37 | border: 0; 38 | handle-width: 8; 39 | padding: 0; 40 | } 41 | #sidebar { 42 | padding: 1% 2% 2%; 43 | border: 0; 44 | border-radius: 4; 45 | border-color: rgba (0, 0, 0, 100%); 46 | } 47 | #button { 48 | padding: 8 0 8; 49 | border: 0; 50 | border-radius: 4; 51 | border-color: rgba (0, 0, 0, 100%); 52 | } 53 | #button.selected { 54 | border: 0; 55 | padding: 8 0 8; 56 | border-radius: 4; 57 | text-color: rgba (23, 147, 209, 100%); 58 | } 59 | #inputbar { 60 | border: 0; 61 | padding: 2% 1.8% 2% 2%; 62 | border-radius: 4; 63 | border-color: rgba (0, 0, 0, 100%); 64 | } 65 | #entry { 66 | spacing: 5; 67 | border: 0; 68 | padding: 5 5 5; 69 | border-radius: 4; 70 | border-color: rgba (0, 0, 0, 100%); 71 | } 72 | #prompt { 73 | spacing: 0; 74 | border: 0; 75 | border-radius: 4; 76 | padding: 4 4 4; 77 | text-color: rgba (0, 0, 0, 100%); 78 | border-color: rgba (0, 0, 0, 100%); 79 | } 80 | -------------------------------------------------------------------------------- /modules/workspace/fonts.nix: -------------------------------------------------------------------------------- 1 | { pkgs, config, lib, ... }: 2 | 3 | { 4 | fonts = { 5 | fontconfig = 6 | let fonts = config.themes.fonts; 7 | in { 8 | enable = lib.mkForce true; 9 | 10 | # System-wide default fonts 11 | defaultFonts = { 12 | monospace = [ "${fonts.mono.family} ${toString fonts.mono.size}" ]; 13 | sansSerif = [ "${fonts.main.family} ${toString fonts.main.size}" ]; 14 | serif = [ "${fonts.serif.family} ${toString fonts.serif.size}" ]; 15 | }; 16 | }; 17 | 18 | # Enable a basic set of fonts providing font styles and 19 | # families and reasonable coverage of Unicode 20 | enableDefaultFonts = true; 21 | 22 | # Create a directory with links to all fonts in 23 | # /run/current-system/sw/share/X11/fonts 24 | fontDir.enable = true; 25 | 26 | # List of primary font paths 27 | fonts = with pkgs; [ 28 | ibm-plex 29 | jetbrains-mono 30 | hasklig 31 | hack-font 32 | nerdfonts 33 | 34 | material-design-icons 35 | material-icons 36 | 37 | powerline-fonts 38 | emacs-all-the-icons-fonts 39 | 40 | fira 41 | fira-mono 42 | fira-code 43 | fira-code-symbols 44 | 45 | noto-fonts 46 | noto-fonts-emoji 47 | 48 | roboto 49 | roboto-mono 50 | roboto-slab 51 | 52 | anonymousPro 53 | corefonts 54 | source-code-pro 55 | symbola 56 | ]; 57 | }; 58 | 59 | themes.fonts = { 60 | main = { 61 | family = "IBM Plex Sans"; 62 | size = 12; 63 | }; 64 | serif = { 65 | family = "IBM Plex Serif"; 66 | size = 12; 67 | }; 68 | mono = { 69 | family = "IBM Plex Mono"; 70 | size = 12; 71 | }; 72 | }; 73 | } 74 | -------------------------------------------------------------------------------- /modules/x11/autorandr/home/setup: -------------------------------------------------------------------------------- 1 | DP-2 00ffffffffffff0061a9443400000000281d0104b55021783b64f5ad5049a322135054adcf00714f81c0814081809500a9c0b300d1c0226870a0d0a02950302035001d4e3100001a20fd70a0d0a03c50302035001d4e3100001e000000fd003090a0a03c010a202020202020000000fc004d69204d6f6e69746f720a20200295020322f44e010203040590111213141f3f5f612309070783010000e6060701605d29023a801871382d40582c96001d4e3100001e20ac00a0a0382d40302035001d4e3100001ef0d270a0d0a03c50302035001d4e3100001ea348b86861a03250304035001d4e3100001ef57c70a0d0a02950302035001d4e3100001e000000a77012790000030014bf2f01046f0d9f002f001f009f053b000280040007000a0881000804000402100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e190 2 | HDMI-1 00ffffffffffff0022f05428000000802413010380301e78eedc55a359489e24115054a56b80814081809500a900b300a9400101010121399030621a274068b03600d9281100001c000000fd00304c185311000a202020202020000000fc0048502032323239680a20202020000000ff00334351393336344e46330a20200112020329f1230907074f84020301060715161112101f131405830100006c030c001000b82dc0010101018c0ad08a20e02d10103e9600d90a110000188c0ad090204031200c405500d90a11000018011d8018711c1620582c2500d90a1100009e011d80d0721c1620102c2580d90a1100009e000000000000000000000000000096 3 | HDMI-2 00ffffffffffff0026cd0c56550200003412010380341d782a6041a6564a9c25125054bfef00714f814081809500950fb30001010101023a801871382d40582c450009252100001e000000fd00384c1e5311000a202020202020000000fc00504c3234303948440a20202020000000ff0031313030354d3843303035393701f102031ff14c010203040510111213141e1f230907018301000065030c0010008c0ad08a20e02d10103e9600092521000018011d007251d01e206e28550009252100001e8c0ad090204031200c4055000925210000180000000000000000000000000000000000000000000000000000000000000000000000000000000000004f 4 | -------------------------------------------------------------------------------- /modules/apps/shell/zsh.nix: -------------------------------------------------------------------------------- 1 | { pkgs, inputs, ... }: 2 | 3 | let 4 | initExtra = builtins.readFile "${inputs.zsh-config}/zshrc"; 5 | in { 6 | environment.sessionVariables.SHELL = "zsh"; 7 | # Symlink /share/zsh 8 | environment.pathsToLink = [ "/share/zsh" ]; 9 | 10 | home-manager.users.vyorkin = { 11 | home.file = { 12 | ".zshenv" = { source = "${inputs.zsh-config}/zshenv"; }; 13 | ".zprofile" = { source = "${inputs.zsh-config}/zprofile"; }; 14 | ".zlogin" = { source = "${inputs.zsh-config}/zlogin"; }; 15 | ".zlogout" = { source = "${inputs.zsh-config}/zlogout"; }; 16 | ".zconfig" = { source = "${inputs.zsh-config}/zconfig"; }; 17 | }; 18 | 19 | programs.zsh = { 20 | enable = true; 21 | enableCompletion = true; 22 | 23 | history = rec { 24 | expireDuplicatesFirst = true; 25 | size = 1000000; 26 | save = size; 27 | }; 28 | 29 | sessionVariables = { 30 | FZF_MARKS_JUMP = "^x^j"; 31 | ZSH_PLUGINS_ALIAS_TIPS_TEXT = "> "; 32 | 33 | GEOMETRY_PROMPT_SUFFIX="$(if [ ! -z $IN_NIX_SHELL ]; then echo ' [nix]'; fi)"; 34 | GEOMETRY_GIT_SYMBOL_STASHES="x"; # change the git stash indicator to `x` 35 | GEOMETRY_GIT_GREP="rg"; # define which grep-like tool to use (By default it looks for rg, ag and finally grep) 36 | GEOMETRY_GIT_NO_COMMITS_MESSAGE=""; # hide the 'no commits' message in new repositories 37 | GEOMETRY_GIT_TIME_DETAILED=true; # show full time (e.g. `12h 30m 53s`) instead of the coarsest interval (e.g. `12h`) 38 | }; 39 | 40 | inherit initExtra; 41 | }; 42 | 43 | # Enable zsh integration for broot. 44 | # See: https://github.com/Canop/broot 45 | programs.broot.enableZshIntegration = true; 46 | }; 47 | } 48 | -------------------------------------------------------------------------------- /modules/boot/default.nix: -------------------------------------------------------------------------------- 1 | { lib, pkgs, ... }: 2 | 3 | let angular_plymouth_theme = pkgs.callPackage ./plymouth/angular.nix { }; 4 | in { 5 | boot = { 6 | loader = { 7 | # Use the systemd-boot EFI boot loader 8 | systemd-boot.enable = pkgs.system == "x86_64-linux"; 9 | 10 | efi.canTouchEfiVariables = true; 11 | 12 | grub = { 13 | # Disable the GNU GRUB boot loader. 14 | enable = lib.mkForce false; 15 | # Automatically add other operating system to the grub menu 16 | useOSProber = true; 17 | }; 18 | }; 19 | 20 | # Enable plymouth boot splash screen 21 | plymouth = { 22 | enable = true; 23 | theme = "angular"; 24 | themePackages = [ angular_plymouth_theme ]; 25 | }; 26 | 27 | # Delete all files in /tmp during boot 28 | cleanTmpDir = true; 29 | 30 | # Use the latest Linux kernel packages 31 | kernelPackages = pkgs.linuxPackages_latest; 32 | 33 | # quite - Don't show terminal output unless an error occurs 34 | # splash - Show splash screen theme (if available) 35 | # pti on/off - Enable/disable Page Table Isolation (PTI). 36 | # Protects from attacks on the shared user/kernel address space, 37 | # but with a cost of a little perfomance overhead 38 | kernelParams = [ "quiet" "splash" ]; 39 | 40 | # All Kernel Messages with a log level smaller 41 | # than this setting will be printed to the console 42 | consoleLogLevel = 3; 43 | 44 | kernel = { 45 | # Enable all functions of sysrq. It is a magical key combo 46 | # you can hit which the kernel will respond to regardless of 47 | # whatever else it is doing, unless it is completely locked up. 48 | # On x86: ALT+PSc/SRq+ 49 | sysctl."kernel/sysrq" = 1; 50 | }; 51 | }; 52 | } 53 | -------------------------------------------------------------------------------- /modules/workspace/i3/rofi/themes/shadow.rasi: -------------------------------------------------------------------------------- 1 | // ROFI Color theme 2 | // User: SmokeKing 3 | // vim:ft=css 4 | * { 5 | spacing: 1; 6 | background-color: rgba (43, 48, 59, 100%); 7 | text-color: rgba (255, 255, 255, 100%); 8 | } 9 | #window { 10 | border: 0; 11 | padding: 20; 12 | } 13 | #mainbox { 14 | border: 0; 15 | padding: 10; 16 | } 17 | #message { 18 | border: 1; 19 | padding: 10 2% 10; 20 | } 21 | #listview { 22 | padding: 10 2% 10; 23 | spacing: 2; 24 | } 25 | #element { 26 | padding: 5 5 9; 27 | radius: 4; 28 | } 29 | #element.selected { 30 | text-color: rgba (23, 147, 209, 100%); 31 | background-color: rgba (42, 46, 58, 100%); 32 | border: 0 1 3; 33 | border-radius: 2; 34 | border-color: rgba (10, 10, 10, 100%); 35 | } 36 | #scrollbar { 37 | width: 4; 38 | handle-width: 8; 39 | } 40 | #sidebar { 41 | padding: 1% 2% 2%; 42 | } 43 | #button { 44 | padding: 8 0 8; 45 | } 46 | #button.selected { 47 | padding: 8 0 8; 48 | text-color: rgba (23, 147, 209, 100%); 49 | background-color: rgba (42, 46, 58, 100%); 50 | border: 0 1 3; 51 | border-radius: 2; 52 | border-color: rgba (10, 10, 10, 100%); 53 | } 54 | #inputbar { 55 | border: 0 1 3; 56 | border-radius: 2; 57 | border-color: rgba (10, 10, 10, 100%); 58 | background-color: rgba (42, 46, 58, 100%); 59 | padding: 0% 1.8% 0% 0.2%; 60 | } 61 | #entry { 62 | spacing: 5; 63 | border: 0; 64 | padding: 5 5 5; 65 | border-radius: 4; 66 | background-color: rgba (42, 46, 58, 100%); 67 | border-color: rgba (0, 0, 0, 100%); 68 | } 69 | #prompt { 70 | spacing: 0; 71 | border: 0; 72 | border-radius: 4; 73 | padding: 5 5 5; 74 | background-color: rgba (42, 46, 58, 100%); 75 | text-color: rgba (255, 255, 255, 100%); 76 | border-color: rgba (0, 0, 0, 100%); 77 | } 78 | -------------------------------------------------------------------------------- /modules/apps/pentest/backdoor.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin.home.packages = with pkgs; [ 5 | # Bidirectional data stream tunnelled in HTTP requests 6 | httptunnel 7 | 8 | # Patch 32/64 bits ELF & win32/64 binaries with shellcode 9 | # backdoor-factory 10 | 11 | # Stealth backdooring tool 12 | # cymothoa 13 | 14 | # Netcat clone with encryption 15 | # dbd 16 | 17 | # TCP over DNS tunnel client and server 18 | # dns2tcp 19 | 20 | # Convert EXE to bat 21 | # exe2hexbat 22 | 23 | # Tool for tunneling IPv4 data through a DNS server 24 | iodine 25 | 26 | # Collection of injectable web files 27 | # laudanum 28 | 29 | # Uses admin rights on Windows to display passwords in plaintext 30 | # mimikatz 31 | 32 | # Teredo IPv6 tunneling through NATs 33 | miredo 34 | 35 | # Collection of PowerShell scripts and payloads 36 | # nishang 37 | 38 | # PowerShell Post-Exploitation Framework 39 | # powersploit 40 | 41 | # Redirects connections through proxy servers 42 | proxychains 43 | 44 | # Tunnel TCP connections over ICMP packets 45 | # ptunnel 46 | 47 | # Secure backdoor for linux and windows 48 | # sbd 49 | 50 | # shellter 51 | 52 | # Universal SSL tunnel for network daemons 53 | # stunnel4 54 | 55 | # Tunnel UDP packets over a TCP connection 56 | udptunnel 57 | 58 | # Generates payloads to bypass anti-virus solutions 59 | # veil 60 | 61 | # Web backdoor cookie script kit 62 | # webacoo 63 | 64 | # Stealth tiny web shell 65 | # weevely 66 | 67 | # Tool that allows any client behind a NAT to communicate 68 | # with a server behind a separate NAT with *no* port 69 | # forwarding and *no* DMZ setup on any routers in order to 70 | # directly communicate with each other 71 | pwnat 72 | ]; 73 | } 74 | -------------------------------------------------------------------------------- /modules/workspace/i3/config/scripts/default.nix: -------------------------------------------------------------------------------- 1 | 2 | p: c: 3 | with p; 4 | let 5 | iconfont = "Material Icons"; 6 | buildHaskellScript = name: script: 7 | stdenv.mkDerivation { 8 | inherit name; 9 | src = script; 10 | unpackPhase = "true"; 11 | buildInputs = [ghc]; 12 | buildPhase = "ghc -o $out $src"; 13 | installPhase = "true"; 14 | ICONFONT = iconfont; 15 | }; 16 | writeScript = name: script: 17 | writeTextFile { 18 | inherit name; 19 | text = callPackage script { 20 | inherit iconfont; 21 | config = c; 22 | }; 23 | executable = true; 24 | checkPhase = 25 | "${bash}/bin/bash -n $src || ${python3}/bin/python3 -m compileall $src"; 26 | }; 27 | in 28 | builtins.mapAttrs buildHaskellScript { 29 | free = ./free.hs; 30 | temperature = ./temperature.hs; 31 | network = ./network.hs; 32 | } // builtins.mapAttrs writeScript { 33 | battery = ./battery.nix; 34 | brightness = ./brightness.nix; 35 | emacs = ./emacs.nix; 36 | bluetooth = ./bluetooth.nix; 37 | connections = ./connections.nix; 38 | weather = ./weather.nix; 39 | sound = ./sound.nix; 40 | cpu = {...}: ''top -b -n1 -p 1 | fgrep "Cpu(s)" | tail -1 | awk -F'id,' -v prefix="$prefix" '{ split($1, vs, ","); v=vs[length(vs)]; sub("%", "", v); printf "%s%.1f%%\n", prefix, 100 - v }' ''; 41 | freq = {...}: ''echo $(${pkgs.bc}/bin/bc -l <<< "scale=2; `cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq|sort|tail -1`/1000000") GHz''; 42 | df = {...}: ''echo '' `df / | tail -1 | grep -o '..%'`''; 43 | date = {...}: "${pkgs.coreutils}/bin/date +' %a %y-%m-%d'"; 44 | time = {...}: "${pkgs.coreutils}/bin/date +' %T'"; 45 | nixos = {...}: "echo -n ''; cat /run/current-system/nixos-version | cut -d. -f3"; 46 | #temperature = ./temperature.nix; 47 | #free = ./free.nix; 48 | } 49 | -------------------------------------------------------------------------------- /modules/workspace/i3/config/blocks/battery: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | readarray -t DEVICES <<< "$(upower -e | grep -v "DisplayDevice$")" 4 | 5 | DELIM="" 6 | STATUS=0 7 | 8 | for dev in "''${DEVICES[@]}"; do 9 | INFO="$(upower -i "$dev")" 10 | PERCENTAGE="$(echo "$INFO" | grep 'percentage:' | grep -o '[[:digit:]]*')" 11 | if [ -n "$PERCENTAGE" ]; then 12 | TIME="$(echo "$INFO" | grep 'time to' | tr -s ' ' | cut -d' ' -f5-6)" 13 | STATE="$(echo "$INFO" | grep 'state:' | tr -s ' ' | cut -d' ' -f3)" 14 | if [[ "x$STATE" == "xfully-charged" ]] || [[ "x$STATE" == "xcharging" ]]; then 15 | case $PERCENTAGE in 16 | [2-3]*) icon=;; 17 | [4-5]*) icon=;; 18 | [6-7]*) icon=;; 19 | [8-9]*) icon=;; 20 | 100) icon=;; 21 | *) icon=;; 22 | esac 23 | else 24 | if [[ "$PERCENTAGE" -lt 10 ]]; then 25 | STATUS=33 26 | fi 27 | case $PERCENTAGE in 28 | 1?) icon=;; 29 | 2?) icon=;; 30 | 3?) icon=;; 31 | 4?) icon=;; 32 | 5?) icon=;; 33 | 6?) icon=;; 34 | 7?) icon=;; 35 | 8?) icon=;; 36 | 9?) icon=;; 37 | 100) icon=;; 38 | *) icon=;; 39 | esac 40 | fi 41 | if [ -n "$DELIM" ]; then 42 | echo -n "| " 43 | else 44 | DELIM="yes" 45 | fi 46 | echo -n "" 47 | if echo "$INFO" | grep 'native-path:' | grep bluez > /dev/null; then 48 | echo -n "" 49 | fi 50 | echo -n "$icon" 51 | if [ -n "$BLOCK_BUTTON" ]; then 52 | echo -n " $PERCENTAGE% " 53 | if [ -n "$TIME" ]; then echo -n "($TIME) "; fi 54 | fi 55 | fi 56 | done 57 | 58 | echo 59 | exit "$STATUS" 60 | -------------------------------------------------------------------------------- /modules/dev/haskell/hlint.yaml: -------------------------------------------------------------------------------- 1 | # HLint configuration file 2 | # https://github.com/ndmitchell/hlint 3 | ########################## 4 | 5 | # This file contains a template configuration file, which is typically 6 | # placed as .hlint.yaml in the root of your project 7 | 8 | 9 | # Specify additional command line arguments 10 | # 11 | # - arguments: [--color, --cpp-simple, -XQuasiQuotes] 12 | 13 | 14 | # Control which extensions/flags/modules/functions can be used 15 | # 16 | # - extensions: 17 | # - default: false # all extension are banned by default 18 | # - name: [PatternGuards, ViewPatterns] # only these listed extensions can be used 19 | # - {name: CPP, within: CrossPlatform} # CPP can only be used in a given module 20 | # 21 | # - flags: 22 | # - {name: -w, within: []} # -w is allowed nowhere 23 | # 24 | # - modules: 25 | # - {name: [Data.Set, Data.HashSet], as: Set} # if you import Data.Set qualified, it must be as 'Set' 26 | # - {name: Control.Arrow, within: []} # Certain modules are banned entirely 27 | # 28 | # - functions: 29 | # - {name: unsafePerformIO, within: []} # unsafePerformIO can only appear in no modules 30 | 31 | 32 | # Add custom hints for this project 33 | # 34 | # Will suggest replacing "wibbleMany [myvar]" with "wibbleOne myvar" 35 | # - error: {lhs: "wibbleMany [x]", rhs: wibbleOne x} 36 | 37 | 38 | # Turn on hints that are off by default 39 | # 40 | # Ban "module X(module X) where", to require a real export list 41 | # - warn: {name: Use explicit module export list} 42 | # 43 | # Replace a $ b $ c with a . b $ c 44 | # - group: {name: dollar, enabled: true} 45 | # 46 | # Generalise map to fmap, ++ to <> 47 | # - group: {name: generalise, enabled: true} 48 | 49 | 50 | # Ignore some builtin hints 51 | # - ignore: {name: Use let} 52 | # - ignore: {name: Use const, within: SpecialModule} # Only within certain modules 53 | 54 | 55 | # Define some custom infix operators 56 | # - fixity: infixr 3 ~^#^~ 57 | 58 | 59 | # To generate a suitable file for HLint do: 60 | # $ hlint --default > .hlint.yaml 61 | -------------------------------------------------------------------------------- /modules/workspace/i3/rofi/themes/onedark.rasi: -------------------------------------------------------------------------------- 1 | /* 2 | * ROFI One Dark 3 | * 4 | * Based on OneDark.vim (https://github.com/joshdick/onedark.vim) 5 | * 6 | * Author: Benjamin Stauss 7 | * User: me-benni 8 | * 9 | */ 10 | 11 | 12 | * { 13 | black: #000000; 14 | red: #eb6e67; 15 | green: #95ee8f; 16 | yellow: #f8c456; 17 | blue: #6eaafb; 18 | mangenta: #d886f3; 19 | cyan: #6cdcf7; 20 | emphasis: #50536b; 21 | text: #dfdfdf; 22 | text-alt: #b2b2b2; 23 | fg: #abb2bf; 24 | bg: #282c34; 25 | 26 | spacing: 0; 27 | background-color: transparent; 28 | 29 | font: "Knack Nerd Font 14"; 30 | text-color: @text; 31 | } 32 | 33 | window { 34 | transparency: "real"; 35 | fullscreen: true; 36 | background-color: #282c34dd; 37 | } 38 | 39 | mainbox { 40 | padding: 30% 30%; 41 | } 42 | 43 | inputbar { 44 | margin: 0px 0px 20px 0px; 45 | children: [prompt, textbox-prompt-colon, entry, case-indicator]; 46 | } 47 | 48 | prompt { 49 | text-color: @blue; 50 | } 51 | 52 | textbox-prompt-colon { 53 | expand: false; 54 | str: ":"; 55 | text-color: @text-alt; 56 | } 57 | 58 | entry { 59 | margin: 0px 10px; 60 | } 61 | 62 | listview { 63 | spacing: 5px; 64 | dynamic: true; 65 | scrollbar: false; 66 | } 67 | 68 | element { 69 | padding: 5px; 70 | text-color: @text-alt; 71 | highlight: bold #95ee8f; /* green */ 72 | border-radius: 3px; 73 | } 74 | 75 | element selected { 76 | background-color: @emphasis; 77 | text-color: @text; 78 | } 79 | 80 | element urgent, element selected urgent { 81 | text-color: @red; 82 | } 83 | 84 | element active, element selected active { 85 | text-color: @purple; 86 | } 87 | 88 | message { 89 | padding: 5px; 90 | border-radius: 3px; 91 | background-color: @emphasis; 92 | border: 1px; 93 | border-color: @cyan; 94 | } 95 | 96 | button selected { 97 | padding: 5px; 98 | border-radius: 3px; 99 | background-color: @emphasis; 100 | } 101 | -------------------------------------------------------------------------------- /modules/workspace/i3/config/scripts/temperature.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE TemplateHaskell, OverloadedStrings #-} 2 | 3 | import Prelude hiding (readFile) 4 | import System.Directory 5 | import System.FilePath 6 | import Control.Monad (forM, join) 7 | import System.Posix.Files 8 | import Data.List (isPrefixOf, isInfixOf) 9 | import System.Exit 10 | import Language.Haskell.TH.Syntax (liftString, runIO) 11 | import System.Environment (getEnv) 12 | import Control.Monad.IO.Class (liftIO) 13 | import Data.Maybe (catMaybes) 14 | import Control.Exception 15 | import Data.Text (unpack) 16 | import Data.Text.IO (readFile) 17 | 18 | -- | Traverse from 'top' directory and return all the files by 19 | -- filtering with 'include' predicate. 20 | traverseDir :: FilePath -> (FilePath -> Bool) -> IO [FilePath] 21 | traverseDir top include = do 22 | ds <- getDirectoryContents top 23 | paths <- forM (filter include ds) $ \d -> do 24 | let path = top d 25 | s <- getFileStatus path 26 | if isDirectory s 27 | then traverseDir path include 28 | else return [path] 29 | return $ concat paths 30 | 31 | 32 | 33 | -- | Get temperatures from hardware sensors in 34 | getTemps :: IO [Int] 35 | getTemps = do 36 | hwmons <- traverseDir "/sys/class/hwmon" 37 | ( 38 | \name 39 | -> ("hwmon" `isPrefixOf` name) 40 | || ("temp" `isInfixOf` name) && ("input" `isInfixOf` name) 41 | ) 42 | fmap (round . (/1000) . read . unpack) <$> traverse (handle (\e -> do pure (e :: IOException); pure "0") . readFile) hwmons 43 | 44 | -- | Get a symbol corresponding to the temperature 45 | getSymbol :: Integral n => n -> String 46 | getSymbol t 47 | | t < 50 = "\57868" --  48 | | t < 80 = "\57866" --  49 | | otherwise = "\57867" --  50 | 51 | icon :: String -> String 52 | icon s = "" ++ s ++ "" 53 | 54 | main :: IO () 55 | main = do 56 | maxTemp <- maximum <$> getTemps 57 | putStrLn $ (getSymbol <> show) maxTemp <> "°" 58 | exitWith $ if maxTemp < 80 then ExitSuccess else ExitFailure 33 59 | -------------------------------------------------------------------------------- /modules/themes.nix: -------------------------------------------------------------------------------- 1 | { config, lib, pkgs, inputs, ... }: 2 | with lib; 3 | let 4 | colorType = 5 | types.addCheck types.str (x: !isNull (builtins.match "[0-9a-fA-F]{6}" x)); 6 | color = mkOption { type = colorType; }; 7 | 8 | font = { 9 | family = mkOption { type = types.str; }; 10 | size = mkOption { type = types.int; }; 11 | }; 12 | 13 | fromYAML = yaml: 14 | builtins.fromJSON (builtins.readFile (pkgs.stdenv.mkDerivation { 15 | name = "fromYAML"; 16 | phases = [ "buildPhase" ]; 17 | buildPhase = "echo '${yaml}' | ${pkgs.yaml2json}/bin/yaml2json > $out"; 18 | })); 19 | in { 20 | options = { 21 | themes = { 22 | colors = builtins.listToAttrs (map (name: { 23 | inherit name; 24 | value = color; 25 | }) [ 26 | "base00" 27 | "base01" 28 | "base02" 29 | "base03" 30 | "base04" 31 | "base05" 32 | "base06" 33 | "base07" 34 | "base08" 35 | "base09" 36 | "base0A" 37 | "base0B" 38 | "base0C" 39 | "base0D" 40 | "base0E" 41 | "base0F" 42 | ]); 43 | fonts = { 44 | main = font; 45 | serif = font; 46 | mono = font; 47 | }; 48 | }; 49 | }; 50 | 51 | config = { 52 | themes.colors = { 53 | # H = 0, S = 0% 54 | base00 = "000000"; # L = 0% 55 | base01 = "333333"; # L = 20% 56 | base02 = "666666"; # L = 40% 57 | base03 = "999999"; # L = 60% 58 | base04 = "cccccc"; # L = 80% 59 | base05 = "ffffff"; # L = 100% 60 | base06 = "e6e6e6"; # L = 90% 61 | base07 = "e6e6e6"; # L = 90% 62 | # L = 50%, S = 50% 63 | base08 = "bf4040"; # H = 0 RED 64 | base09 = "bf8040"; # H = 30 ORANGE 65 | base0A = "bfbf40"; # H = 60 YELLOW-ish 66 | base0B = "80bf40"; # H = 90 GREEN 67 | # Whoa, a lot of hues are green! 68 | base0C = "40bfbf"; # H = 180 TEAL 69 | base0D = "407fbf"; # H = 210 BLUE 70 | base0E = "7f40bf"; # H = 270 PURPLE 71 | base0F = "bf40bf"; # H = 300 MAGENTA 72 | }; 73 | }; 74 | } 75 | -------------------------------------------------------------------------------- /modules/dev/haskell/ghci: -------------------------------------------------------------------------------- 1 | -- :set prompt "∀x. x ⊢ " 2 | -- :set prompt "ΠΣ: " 3 | 4 | :set prompt "\ESC[38;5;208m\STXλ>\ESC[m\STX " 5 | :set prompt-cont " | " 6 | 7 | :set stop :list 8 | :set +c 9 | -- :set +t 10 | 11 | -- better errors 12 | :set -ferror-spans -freverse-errors -fprint-expanded-synonyms 13 | 14 | -- work with local .ghci 15 | :def r. const(return ":cmd readFile \".ghci\"") 16 | :def rr \m -> return (":reload " ++ m ++ "\n:r.") 17 | :def >> \x -> return (":! echo \"" ++ x ++ "\" >> .ghci") 18 | 19 | -- Hoogle (cabal install hoogle && hoogle data) 20 | :def hoogle \str -> return $ ":! hoogle search --color --count=10 " ++ show str 21 | :def hoogle-all \str -> return $ ":! hoogle search --color " ++ show str 22 | :def doc \str -> return $ ":! hoogle search --color --info " ++ show str 23 | 24 | -- Pointfree and Pointful (cabal install pointfree pointful) 25 | :def pointfree \str -> return $ ":! pointfree " ++ show str 26 | :def pf \str -> return $ ":! pointfree " ++ show str 27 | :def pointful \str -> return $ ":! pointful " ++ show str 28 | 29 | :def pp1 \_ -> return (":set -package pretty-show\nimport Text.Show.Pretty (pPrint, ppShow)\n:set -interactive-print pPrint") 30 | :def pp2 \_ -> return (":set -package pretty-simple\nimport Text.Pretty.Simple (pPrint)\n:set -interactive-print pPrint") 31 | :def nopp \_ -> return (":set -interactive-print System.IO.print") 32 | 33 | :def x \_ -> return ":set -XOverloadedStrings -XOverloadedLists" 34 | 35 | :def nip const(return ":set -XNoImplicitPrelude\nimport qualified Prelude") 36 | 37 | -- switch to Universum 38 | :def uni const(return ":set -XNoImplicitPrelude\nimport Universum as U\nimport qualified Prelude") 39 | 40 | -- switch to Relude 41 | :def rel const(return ":set -XNoImplicitPrelude\nimport Relude as U\nimport qualified Prelude") 42 | 43 | -- do some Turtle 44 | :def turt const(return ":set -XOverloadedStrings\nimport Turtle\nimport qualified Data.Text as T") 45 | 46 | -- source commands from file 47 | :def source \fn -> return (":cmd readFile " ++ fn) 48 | 49 | -- Some default imports 50 | import Control.Monad 51 | import Control.Applicative 52 | import Control.Arrow 53 | -------------------------------------------------------------------------------- /modules/workspace/i3/config/scripts/battery.nix: -------------------------------------------------------------------------------- 1 | { upower, bash, iconfont, low_threshold ? 10, ... }: '' 2 | #!${bash}/bin/bash 3 | readarray -t DEVICES <<< "$(${upower}/bin/upower -e | grep -v "DisplayDevice$")" 4 | 5 | DELIM="" 6 | STATUS=0 7 | 8 | for dev in "''${DEVICES[@]}"; do 9 | INFO="$(${upower}/bin/upower -i "$dev")" 10 | PERCENTAGE="$(echo "$INFO" | grep 'percentage:' | grep -o '[[:digit:]]*')" 11 | if [ -n "$PERCENTAGE" ]; then 12 | TIME="$(echo "$INFO" | grep 'time to' | tr -s ' ' | cut -d' ' -f5-6)" 13 | STATE="$(echo "$INFO" | grep 'state:' | tr -s ' ' | cut -d' ' -f3)" 14 | if [[ "x$STATE" == "xfully-charged" ]] || [[ "x$STATE" == "xcharging" ]]; then 15 | case $PERCENTAGE in 16 | [2-3]*) icon=;; 17 | [4-5]*) icon=;; 18 | [6-7]*) icon=;; 19 | [8-9]*) icon=;; 20 | 100) icon=;; 21 | *) icon=;; 22 | esac 23 | else 24 | if [[ "$PERCENTAGE" -lt ${toString low_threshold} ]]; then 25 | STATUS=33 26 | fi 27 | case $PERCENTAGE in 28 | 1?) icon=;; 29 | 2?) icon=;; 30 | 3?) icon=;; 31 | 4?) icon=;; 32 | 5?) icon=;; 33 | 6?) icon=;; 34 | 7?) icon=;; 35 | 8?) icon=;; 36 | 9?) icon=;; 37 | 100) icon=;; 38 | *) icon=;; 39 | esac 40 | fi 41 | if [ -n "$DELIM" ]; then 42 | echo -n "| " 43 | else 44 | DELIM="yes" 45 | fi 46 | echo -n "" 47 | if echo "$INFO" | grep 'native-path:' | grep bluez > /dev/null; then 48 | echo -n "" 49 | fi 50 | echo -n "$icon" 51 | if [ -n "$BLOCK_BUTTON" ]; then 52 | echo -n " $PERCENTAGE% " 53 | if [ -n "$TIME" ]; then echo -n "($TIME) "; fi 54 | fi 55 | fi 56 | done 57 | 58 | echo 59 | exit "$STATUS" 60 | '' 61 | -------------------------------------------------------------------------------- /modules/apps/terminal/kitty.nix: -------------------------------------------------------------------------------- 1 | { inputs, pkgs, lib, ... }: 2 | 3 | { 4 | home-manager.users.vyorkin.programs.kitty = { 5 | enable = false; 6 | 7 | font = { 8 | package = pkgs.jetbrains-mono; 9 | name = "JetBrains Mono"; 10 | }; 11 | 12 | extraConfig = '' 13 | include ${inputs.kitty-themes}/themes/Ayu.conf 14 | 15 | font_size 12.0 16 | cursor #EEEEEE 17 | cursor_text_color #DDDDDD 18 | cursor_blink_interval 0.5 19 | scrollback_lines -1 20 | url_color #FFFF00 21 | url_style curly 22 | mouse_hide_wait 3.0 23 | enable_audio_bell no 24 | window_alert_on_bell yes 25 | bell_on_tab yes 26 | clipboard_control write-primary write-clipboard no-append 27 | window_margin_width 5.0 28 | window_padding_width 5.0 29 | inactive_text_alpha 0.9 30 | tab_bar_min_tabs 1 31 | background_opacity 1 32 | dynamic_background_opacity yes 33 | dim_opacity 0.75 34 | ''; 35 | 36 | keybindings = { 37 | "kitty_mod+c" = "copy_to_clipboard"; 38 | "ctrl+c" = "copy_or_interrupt"; 39 | 40 | "kitty_mod+v" = "paste_from_clipboard"; 41 | "kitty_mod+s" = "paste_from_selection"; 42 | "shift+insert" = "paste_from_selection"; 43 | "kitty_mod+o" = "pass_selection_to_program firefox"; 44 | 45 | "kitty_mod+k" = "scroll_line_up"; 46 | "kitty_mod+j" = "scroll_line_down"; 47 | 48 | "kitty_mod+enter" = "new_window"; 49 | 50 | "kitty_mod+right" = "next_tab"; 51 | "kitty_mod+alt+l" = "next_tab"; 52 | 53 | "kitty_mod+left" = "previous_tab"; 54 | "kitty_mod+alt+h" = "previous_tab"; 55 | 56 | "kitty_mod+t" = "new_tab"; 57 | "kitty_mod+q" = "close_tab"; 58 | 59 | "kitty_mod+." = "move_tab_forward"; 60 | "kitty_mod+," = "move_tab_backward"; 61 | 62 | "kitty_mod+alt+t" = "set_tab_title"; 63 | 64 | "ctrl+equal" = "change_font_size all +1.0"; 65 | "ctrl+minus" = "change_font_size all -1.0"; 66 | "ctrl+0" = "change_font_size all 0"; 67 | 68 | "kitty_mod+e" = "kitten hints"; 69 | 70 | "ctrl+alt+equal" = "set_background_opacity +0.1"; 71 | "ctrl+alt+minus" = "set_background_opacity -0.1"; 72 | }; 73 | }; 74 | } 75 | -------------------------------------------------------------------------------- /modules/workspace/i3/rofi/themes/dark-sidebar.rasi: -------------------------------------------------------------------------------- 1 | // ROFI Color theme 2 | // User: SmokeKing 3 | // vim:ft=css 4 | * { 5 | background-color: rgba (20, 20, 25, 0%); 6 | text-color: rgba (255, 255, 255, 100%); 7 | } 8 | #window { 9 | fullscreen: true; 10 | location: east; 11 | anchor: east; 12 | orientation: horizontal; 13 | border: 0; 14 | padding: 20; 15 | children: [dummy, mainbox]; 16 | } 17 | #dummy { 18 | expand: true; 19 | } 20 | #mainbox { 21 | border: 0; 22 | expand: false; 23 | padding: 10; 24 | background-color: rgba (20, 20, 25, 100%); 25 | } 26 | #message { 27 | border: 1; 28 | padding: 10 2% 10; 29 | background-color: rgba (20, 20, 25, 100%); 30 | } 31 | #listview { 32 | spacing: 2; 33 | padding: 0em 0.4em 0em 1em; 34 | dynamic: false; 35 | lines: 0; 36 | background-color: rgba (20, 20, 25, 100%); 37 | } 38 | #element { 39 | padding: 5 5 9; 40 | radius: 4; 41 | background-color: rgba (20, 20, 25, 100%); 42 | } 43 | #element.selected { 44 | text-color: rgba (23, 147, 209, 100%); 45 | background-color: rgba (15, 15, 20, 100%); 46 | border: 0 2 4; 47 | border-radius: 2; 48 | border-color: rgba (10, 10, 10, 100%); 49 | } 50 | #scrollbar { 51 | width: 4; 52 | handle-width: 8; 53 | } 54 | #sidebar { 55 | padding: 1% 2% 2%; 56 | background-color: rgba (20, 20, 25, 100%); 57 | } 58 | #button { 59 | padding: 8 0 8; 60 | } 61 | #button.selected { 62 | padding: 8 0 8; 63 | text-color: rgba (23, 147, 209, 100%); 64 | background-color: rgba (15, 15, 20, 100%); 65 | border: 0 2 4; 66 | border-radius: 2; 67 | border-color: rgba (10, 10, 10, 100%); 68 | } 69 | #inputbar { 70 | border: 0 1 3; 71 | border-radius: 2; 72 | border-color: rgba (10, 10, 10, 100%); 73 | background-color: rgba (20, 20, 25, 100%); 74 | padding: 0% 1.8% 0% 0.2%; 75 | } 76 | #entry { 77 | spacing: 5; 78 | border: 0; 79 | width: 20em; 80 | padding: 5 5 5; 81 | border-radius: 4; 82 | border-color: rgba (0, 0, 0, 100%); 83 | background-color: rgba (20, 20, 25, 100%); 84 | } 85 | #prompt { 86 | spacing: 0; 87 | border: 0; 88 | border-radius: 4; 89 | padding: 5 5 5; 90 | text-color: rgba (255, 255, 255, 100%); 91 | border-color: rgba (0, 0, 0, 100%); 92 | background-color: rgba (20, 20, 25, 100%); 93 | } 94 | -------------------------------------------------------------------------------- /modules/apps/web/firefox.nix: -------------------------------------------------------------------------------- 1 | { config, pkgs, lib, ... }: 2 | 3 | let 4 | thm = pkgs.my.thmHash; 5 | fonts = config.themes.fonts; 6 | in { 7 | environment.sessionVariables = { 8 | MOZ_USE_XINPUT2 = "1"; 9 | MOZ_DBUS_REMOTE = "1"; 10 | }; 11 | 12 | home-manager.users.vyorkin = { 13 | programs.browserpass = { 14 | enable = true; 15 | browsers = [ "firefox" ]; 16 | }; 17 | 18 | programs.firefox = { 19 | enable = true; 20 | 21 | profiles.default = { 22 | id = 0; 23 | 24 | userChrome = '' 25 | toolbar#nav-bar, nav-bar-customization-target { 26 | background: ${thm.base00} !important; 27 | } 28 | ''; 29 | 30 | settings = { 31 | "extensions.autoDisableScopes" = 0; 32 | 33 | "browser.search.defaultenginename" = "Google"; 34 | "browser.search.selectedEngine" = "Google"; 35 | "browser.urlbar.placeholderName" = "Google"; 36 | "browser.search.region" = "US"; 37 | 38 | "browser.uidensity" = 1; 39 | "browser.search.openintab" = true; 40 | "xpinstall.signatures.required" = false; 41 | 42 | "font.name.monospace.x-western" = "${fonts.mono.family}"; 43 | "font.name.sans-serif.x-western" = "${fonts.main.family}"; 44 | "font.name.serif.x-western" = "${fonts.serif.family}"; 45 | 46 | "browser.newtabpage.activity-stream.feeds.telemetry" = false; 47 | "browser.newtabpage.activity-stream.telemetry" = false; 48 | "browser.ping-centre.telemetry" = false; 49 | "toolkit.telemetry.archive.enabled" = false; 50 | "toolkit.telemetry.bhrPing.enabled" = false; 51 | "toolkit.telemetry.enabled" = false; 52 | "toolkit.telemetry.firstShutdownPing.enabled" = false; 53 | "toolkit.telemetry.hybridContent.enabled" = false; 54 | "toolkit.telemetry.newProfilePing.enabled" = false; 55 | "toolkit.telemetry.reportingpolicy.firstRun" = false; 56 | "toolkit.telemetry.shutdownPingSender.enabled" = false; 57 | "toolkit.telemetry.unified" = false; 58 | "toolkit.telemetry.updatePing.enabled" = false; 59 | 60 | "experiments.activeExperiment" = false; 61 | "experiments.enabled" = false; 62 | "experiments.supported" = false; 63 | "network.allow-experiments" = false; 64 | }; 65 | }; 66 | }; 67 | }; 68 | } 69 | -------------------------------------------------------------------------------- /modules/workspace/laptop-x11/xbindkeysrc: -------------------------------------------------------------------------------- 1 | # For the benefit of emacs users: -*- shell-script -*- 2 | ########################### 3 | # xbindkeys configuration # 4 | ########################### 5 | # 6 | # Version: 1.8.6 7 | # 8 | # If you edit this file, do not forget to uncomment any lines 9 | # that you change. 10 | # The pound(#) symbol may be used anywhere for comments. 11 | # 12 | # To specify a key, you can use 'xbindkeys --key' or 13 | # 'xbindkeys --multikey' and put one of the two lines in this file. 14 | # 15 | # The format of a command line is: 16 | # "command to start" 17 | # associated key 18 | # 19 | # 20 | # A list of keys is in /usr/include/X11/keysym.h and in 21 | # /usr/include/X11/keysymdef.h 22 | # The XK_ is not needed. 23 | # 24 | # List of modifier: 25 | # Release, Control, Shift, Mod1 (Alt), Mod2 (NumLock), 26 | # Mod3 (CapsLock), Mod4, Mod5 (Scroll). 27 | # 28 | 29 | # The release modifier is not a standard X modifier, but you can 30 | # use it if you want to catch release events instead of press events 31 | 32 | # By defaults, xbindkeys does not pay attention with the modifiers 33 | # NumLock, CapsLock and ScrollLock. 34 | # Uncomment the lines above if you want to pay attention to them. 35 | 36 | #keystate_numlock = enable 37 | #keystate_capslock = enable 38 | #keystate_scrolllock= enable 39 | 40 | #"xterm -geom 50x20+20+20" 41 | # Shift+Mod2+alt + s 42 | # 43 | ## set directly keycode (here control+alt+mod2 + f with my keyboard) 44 | #"xterm" 45 | # alt + c:0x29 + m:4 + mod2 46 | # 47 | ## Control+Shift+a release event starts rxvt 48 | #"rxvt" 49 | # release+control+shift + a 50 | # 51 | ## Control + mouse button 2 release event starts rxvt 52 | #"rxvt" 53 | # Control + b:2 + Release 54 | 55 | "light -U 5" 56 | XF86MonBrightnessDown 57 | 58 | "light -A 5" 59 | XF86MonBrightnessUp 60 | 61 | "amixer -q set Master 2%+ unmute" 62 | XF86AudioRaiseVolume 63 | 64 | "amixer -q set Master 2%- unmute" 65 | XF86AudioLowerVolume 66 | 67 | "amixer -q set Master toggle" 68 | XF86AudioMute 69 | 70 | "amixer set Capture 1%+" 71 | shift + XF86AudioRaiseVolume 72 | 73 | "amixer set Capture 1%-" 74 | shift + XF86AudioLowerVolume 75 | 76 | "amixer set Capture 1+ toggle" 77 | shift + XF86AudioMute 78 | 79 | "synclient TouchpadOff=0" 80 | XF86TouchpadOn 81 | 82 | "synclient TouchpadOff=1" 83 | XF86TouchpadOff 84 | 85 | ################################## 86 | # End of xbindkeys configuration # 87 | ################################## 88 | -------------------------------------------------------------------------------- /modules/nix.nix: -------------------------------------------------------------------------------- 1 | { lib, pkgs, inputs, ... }: 2 | 3 | { 4 | environment.etc.nixpkgs.source = inputs.nixpkgs; 5 | 6 | nix = { 7 | # Needed for nix-shell to work without channels 8 | nixPath = lib.mkForce [ "nixpkgs=/etc/nixpkgs" ]; 9 | 10 | # Enable nix-flakes 11 | registry = { 12 | self.flake = inputs.self; 13 | emacs.flake = inputs.emacs; 14 | }; 15 | package = inputs.nix.packages.x86_64-linux.nix; 16 | 17 | extraOptions = '' 18 | experimental-features = nix-command flakes 19 | 20 | keep-outputs = true 21 | keep-derivations = true 22 | cores = 4 23 | connect-timeout = 3 24 | max-jobs = 6 25 | min-free = ${toString (500 * 1024 * 1024)} 26 | max-free = ${toString (5 * 1024 * 1024 * 1024)} 27 | ''; 28 | 29 | # Enable automatic garbage collection 30 | gc = { 31 | automatic = true; 32 | dates = "weekly"; 33 | options = "--delete-older-than 30d"; 34 | }; 35 | 36 | optimise = { 37 | # Automatically run the nix optimiser at a specific time 38 | automatic = true; 39 | dates = [ "07:00" ]; 40 | }; 41 | 42 | # Number of nixbld user accounts created to perform secure 43 | # concurrent builds. If you receive an error message saying that 44 | # "all build users are currently in use", you should increase this value 45 | nrBuildUsers = 16; 46 | 47 | settings = { 48 | # Detect files in the store that have identical contents, 49 | # and replace them with hard links to a single copy. 50 | auto-optimise-store = true; 51 | 52 | trusted-substituters = [ 53 | "http://hydra.nixos.org" 54 | "http://cache.nixos.org" 55 | 56 | "https://nix-community.cachix.org" 57 | "https://nixpkgs-wayland.cachix.org" 58 | "https://nixcache.reflex-frp.org" 59 | "https://nixfmt.cachix.org" 60 | "https://all-hies.cachix.org" 61 | "https://iohk.cachix.org" 62 | "https://ghcide-nix.cachix.org" 63 | "https://cache.dhall-lang.org" 64 | "https://dhall.cachix.org" 65 | "https://bs-platform.cachix.org" 66 | ]; 67 | 68 | trusted-public-keys = [ 69 | "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" 70 | "nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA=" 71 | "cache.dhall-lang.org:I9/H18WHd60olG5GsIjolp7CtepSgJmM2CsO813VTmM=" 72 | "dhall.cachix.org-1:8laGciue2JBwD49ICFtg+cIF8ddDaW7OFBjDb/dHEAo=" 73 | ]; 74 | }; 75 | }; 76 | } 77 | -------------------------------------------------------------------------------- /modules/workspace/i3/rofi/themes/gruvbox-dark.rasi: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Rofi color theme 3 | 4 | Based on the Gruvbox color scheme for Vim by morhetz 5 | https://github.com/morhetz/gruvbox 6 | 7 | File: gruvbox-dark.rasi 8 | Desc: Gruvbox dark color theme for Rofi 9 | Author: bardisty 10 | Source: https://github.com/bardisty/gruvbox-rofi 11 | Modified: Mon Feb 12 2018 04:08:43 PST -0800 12 | ========================================================================== */ 13 | 14 | * { 15 | /* Theme settings */ 16 | highlight: bold italic; 17 | scrollbar: true; 18 | 19 | /* Gruvbox dark colors */ 20 | gruvbox-dark-bg0: #282828; 21 | gruvbox-dark-bg0-soft: #32302f; 22 | gruvbox-dark-bg3: #665c54; 23 | gruvbox-dark-fg0: #fbf1c7; 24 | gruvbox-dark-fg1: #ebdbb2; 25 | gruvbox-dark-red-dark: #cc241d; 26 | gruvbox-dark-red-light: #fb4934; 27 | gruvbox-dark-yellow-dark: #d79921; 28 | gruvbox-dark-yellow-light: #fabd2f; 29 | gruvbox-dark-gray: #a89984; 30 | 31 | /* Theme colors */ 32 | background: @gruvbox-dark-bg0; 33 | background-color: @background; 34 | foreground: @gruvbox-dark-fg1; 35 | border-color: @gruvbox-dark-gray; 36 | separatorcolor: @border-color; 37 | scrollbar-handle: @border-color; 38 | 39 | normal-background: @background; 40 | normal-foreground: @foreground; 41 | alternate-normal-background: @gruvbox-dark-bg0-soft; 42 | alternate-normal-foreground: @foreground; 43 | selected-normal-background: @gruvbox-dark-bg3; 44 | selected-normal-foreground: @gruvbox-dark-fg0; 45 | 46 | active-background: @gruvbox-dark-yellow-dark; 47 | active-foreground: @background; 48 | alternate-active-background: @active-background; 49 | alternate-active-foreground: @active-foreground; 50 | selected-active-background: @gruvbox-dark-yellow-light; 51 | selected-active-foreground: @active-foreground; 52 | 53 | urgent-background: @gruvbox-dark-red-dark; 54 | urgent-foreground: @background; 55 | alternate-urgent-background: @urgent-background; 56 | alternate-urgent-foreground: @urgent-foreground; 57 | selected-urgent-background: @gruvbox-dark-red-light; 58 | selected-urgent-foreground: @urgent-foreground; 59 | } 60 | 61 | @import "gruvbox-common.inc" 62 | -------------------------------------------------------------------------------- /modules/workspace/i3/rofi/themes/gruvbox-dark-soft.rasi: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Rofi color theme 3 | 4 | Based on the Gruvbox color scheme for Vim by morhetz 5 | https://github.com/morhetz/gruvbox 6 | 7 | File: gruvbox-dark-soft.rasi 8 | Desc: Gruvbox dark (soft contrast) color theme for Rofi 9 | Author: bardisty 10 | Source: https://github.com/bardisty/gruvbox-rofi 11 | Modified: Mon Feb 12 2018 06:04:37 PST -0800 12 | ========================================================================== */ 13 | 14 | * { 15 | /* Theme settings */ 16 | highlight: bold italic; 17 | scrollbar: true; 18 | 19 | /* Gruvbox dark colors */ 20 | gruvbox-dark-bg0-soft: #32302f; 21 | gruvbox-dark-bg1: #3c3836; 22 | gruvbox-dark-bg3: #665c54; 23 | gruvbox-dark-fg0: #fbf1c7; 24 | gruvbox-dark-fg1: #ebdbb2; 25 | gruvbox-dark-red-dark: #cc241d; 26 | gruvbox-dark-red-light: #fb4934; 27 | gruvbox-dark-yellow-dark: #d79921; 28 | gruvbox-dark-yellow-light: #fabd2f; 29 | gruvbox-dark-gray: #a89984; 30 | 31 | /* Theme colors */ 32 | background: @gruvbox-dark-bg0-soft; 33 | background-color: @background; 34 | foreground: @gruvbox-dark-fg1; 35 | border-color: @gruvbox-dark-gray; 36 | separatorcolor: @border-color; 37 | scrollbar-handle: @border-color; 38 | 39 | normal-background: @background; 40 | normal-foreground: @foreground; 41 | alternate-normal-background: @gruvbox-dark-bg1; 42 | alternate-normal-foreground: @foreground; 43 | selected-normal-background: @gruvbox-dark-bg3; 44 | selected-normal-foreground: @gruvbox-dark-fg0; 45 | 46 | active-background: @gruvbox-dark-yellow-dark; 47 | active-foreground: @background; 48 | alternate-active-background: @active-background; 49 | alternate-active-foreground: @active-foreground; 50 | selected-active-background: @gruvbox-dark-yellow-light; 51 | selected-active-foreground: @active-foreground; 52 | 53 | urgent-background: @gruvbox-dark-red-dark; 54 | urgent-foreground: @background; 55 | alternate-urgent-background: @urgent-background; 56 | alternate-urgent-foreground: @urgent-foreground; 57 | selected-urgent-background: @gruvbox-dark-red-light; 58 | selected-urgent-foreground: @urgent-foreground; 59 | } 60 | 61 | @import "gruvbox-common.inc" 62 | 63 | -------------------------------------------------------------------------------- /modules/workspace/i3/rofi/themes/gruvbox-light.rasi: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Rofi color theme 3 | 4 | Based on the Gruvbox color scheme for Vim by morhetz 5 | https://github.com/morhetz/gruvbox 6 | 7 | File: gruvbox-light.rasi 8 | Desc: Gruvbox light color theme for rofi 9 | Author: bardisty 10 | Source: https://github.com/bardisty/gruvbox-rofi 11 | Modified: Mon Feb 12 2018 06:06:06 PST -0800 12 | ========================================================================== */ 13 | 14 | * { 15 | /* Theme settings */ 16 | highlight: bold italic; 17 | scrollbar: true; 18 | 19 | /* Gruvbox light colors */ 20 | gruvbox-light-bg0: #fbf1c7; 21 | gruvbox-light-bg0-soft: #f2e5bc; 22 | gruvbox-light-bg2: #d5c4a1; 23 | gruvbox-light-fg0: #282828; 24 | gruvbox-light-fg1: #3c3836; 25 | gruvbox-light-gray: #7c6f64; 26 | gruvbox-light-red-dark: #9d0006; 27 | gruvbox-light-red-light: #cc241d; 28 | gruvbox-light-yellow-dark: #b57614; 29 | gruvbox-light-yellow-light: #d79921; 30 | 31 | /* Theme colors */ 32 | background: @gruvbox-light-bg0; 33 | background-color: @background; 34 | foreground: @gruvbox-light-fg1; 35 | border-color: @gruvbox-light-gray; 36 | separatorcolor: @border-color; 37 | scrollbar-handle: @border-color; 38 | 39 | normal-background: @background; 40 | normal-foreground: @foreground; 41 | alternate-normal-background: @gruvbox-light-bg0-soft; 42 | alternate-normal-foreground: @foreground; 43 | selected-normal-background: @gruvbox-light-bg2; 44 | selected-normal-foreground: @gruvbox-light-fg0; 45 | 46 | active-background: @gruvbox-light-yellow-dark; 47 | active-foreground: @background; 48 | alternate-active-background: @active-background; 49 | alternate-active-foreground: @active-foreground; 50 | selected-active-background: @gruvbox-light-yellow-light; 51 | selected-active-foreground: @active-foreground; 52 | 53 | urgent-background: @gruvbox-light-red-dark; 54 | urgent-foreground: @background; 55 | alternate-urgent-background: @urgent-background; 56 | alternate-urgent-foreground: @urgent-foreground; 57 | selected-urgent-background: @gruvbox-light-red-light; 58 | selected-urgent-foreground: @urgent-foreground; 59 | } 60 | 61 | @import "gruvbox-common.inc" 62 | 63 | -------------------------------------------------------------------------------- /modules/workspace/i3/rofi/themes/gruvbox-light-hard.rasi: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Rofi color theme 3 | 4 | Based on the Gruvbox color scheme for Vim by morhetz 5 | https://github.com/morhetz/gruvbox 6 | 7 | File: gruvbox-light-hard.rasi 8 | Desc: Gruvbox light (hard contrast) color theme for Rofi 9 | Author: bardisty 10 | Source: https://github.com/bardisty/gruvbox-rofi 11 | Modified: Mon Feb 12 2018 06:04:48 PST -0800 12 | ========================================================================== */ 13 | 14 | * { 15 | /* Theme settings */ 16 | highlight: bold italic; 17 | scrollbar: true; 18 | 19 | /* Gruvbox light colors */ 20 | gruvbox-light-bg0-hard: #f9f5d7; 21 | gruvbox-light-bg0: #fbf1c7; 22 | gruvbox-light-bg1: #ebdbb2; 23 | gruvbox-light-fg0: #282828; 24 | gruvbox-light-fg1: #3c3836; 25 | gruvbox-light-red-dark: #9d0006; 26 | gruvbox-light-red-light: #cc241d; 27 | gruvbox-light-yellow-dark: #b57614; 28 | gruvbox-light-yellow-light: #d79921; 29 | gruvbox-light-gray: #7c6f64; 30 | 31 | /* Theme colors */ 32 | background: @gruvbox-light-bg0-hard; 33 | background-color: @background; 34 | foreground: @gruvbox-light-fg1; 35 | border-color: @gruvbox-light-gray; 36 | separatorcolor: @border-color; 37 | scrollbar-handle: @border-color; 38 | 39 | normal-background: @background; 40 | normal-foreground: @foreground; 41 | alternate-normal-background: @gruvbox-light-bg0; 42 | alternate-normal-foreground: @foreground; 43 | selected-normal-background: @gruvbox-light-bg1; 44 | selected-normal-foreground: @gruvbox-light-fg0; 45 | 46 | active-background: @gruvbox-light-yellow-dark; 47 | active-foreground: @background; 48 | alternate-active-background: @active-background; 49 | alternate-active-foreground: @active-foreground; 50 | selected-active-background: @gruvbox-light-yellow-light; 51 | selected-active-foreground: @active-foreground; 52 | 53 | urgent-background: @gruvbox-light-red-dark; 54 | urgent-foreground: @background; 55 | alternate-urgent-background: @urgent-background; 56 | alternate-urgent-foreground: @urgent-foreground; 57 | selected-urgent-background: @gruvbox-light-red-light; 58 | selected-urgent-foreground: @urgent-foreground; 59 | } 60 | 61 | @import "gruvbox-common.inc" 62 | 63 | -------------------------------------------------------------------------------- /modules/workspace/i3/rofi/themes/gruvbox-light-soft.rasi: -------------------------------------------------------------------------------- 1 | /* ========================================================================== 2 | Rofi color theme 3 | 4 | Based on the Gruvbox color scheme for Vim by morhetz 5 | https://github.com/morhetz/gruvbox 6 | 7 | File: gruvbox-light-soft.rasi 8 | Desc: Gruvbox light (soft contrast) color theme for Rofi 9 | Author: bardisty 10 | Source: https://github.com/bardisty/gruvbox-rofi 11 | Modified: Mon Feb 12 2018 06:05:38 PST -0800 12 | ========================================================================== */ 13 | 14 | * { 15 | /* Theme settings */ 16 | highlight: bold italic; 17 | scrollbar: true; 18 | 19 | /* Gruvbox light colors */ 20 | gruvbox-light-bg0-soft: #f2e5bc; 21 | gruvbox-light-bg1: #ebdbb2; 22 | gruvbox-light-bg2: #d5c4a1; 23 | gruvbox-light-fg0: #282828; 24 | gruvbox-light-fg1: #3c3836; 25 | gruvbox-light-red-dark: #9d0006; 26 | gruvbox-light-red-light: #cc241d; 27 | gruvbox-light-yellow-dark: #b57614; 28 | gruvbox-light-yellow-light: #d79921; 29 | gruvbox-light-gray: #7c6f64; 30 | 31 | /* Theme colors */ 32 | background: @gruvbox-light-bg0-soft; 33 | background-color: @background; 34 | foreground: @gruvbox-light-fg1; 35 | border-color: @gruvbox-light-gray; 36 | separatorcolor: @border-color; 37 | scrollbar-handle: @border-color; 38 | 39 | normal-background: @background; 40 | normal-foreground: @foreground; 41 | alternate-normal-background: @gruvbox-light-bg1; 42 | alternate-normal-foreground: @foreground; 43 | selected-normal-background: @gruvbox-light-bg2; 44 | selected-normal-foreground: @gruvbox-light-fg0; 45 | 46 | active-background: @gruvbox-light-yellow-dark; 47 | active-foreground: @background; 48 | alternate-active-background: @active-background; 49 | alternate-active-foreground: @active-foreground; 50 | selected-active-background: @gruvbox-light-yellow-light; 51 | selected-active-foreground: @active-foreground; 52 | 53 | urgent-background: @gruvbox-light-red-dark; 54 | urgent-foreground: @background; 55 | alternate-urgent-background: @urgent-background; 56 | alternate-urgent-foreground: @urgent-foreground; 57 | selected-urgent-background: @gruvbox-light-red-light; 58 | selected-urgent-foreground: @urgent-foreground; 59 | } 60 | 61 | @import "gruvbox-common.inc" 62 | 63 | -------------------------------------------------------------------------------- /modules/workspace/i3/rofi/themes/material.rasi: -------------------------------------------------------------------------------- 1 | /* 2 | * ROFI color theme 3 | * 4 | * Based on Base16 Material Color Scheme (https://github.com/ntpeters/base16-materialtheme-scheme) 5 | * 6 | * User: Tomaszal 7 | * Copyright: Tomas Zaluckij 8 | */ 9 | 10 | * { 11 | base00: #263238; 12 | base01: #2E3C43; 13 | base02: #314549; 14 | base03: #546E7A; 15 | base04: #B2CCD6; 16 | base05: #EEFFFF; 17 | base06: #EEFFFF; 18 | base07: #FFFFFF; 19 | base08: #F07178; 20 | base09: #F78C6C; 21 | base0A: #FFCB6B; 22 | base0B: #C3E88D; 23 | base0C: #89DDFF; 24 | base0D: #82AAFF; 25 | base0E: #C792EA; 26 | base0F: #FF5370; 27 | 28 | /*base0D: #00BCD4;*/ 29 | 30 | spacing: 0; 31 | background-color: transparent; 32 | 33 | font: "Roboto Mono 13"; 34 | } 35 | 36 | window { 37 | transparency: "real"; 38 | /*fullscreen: true;*/ 39 | background-color: #263238CC; /*base00 + CC (80% opacity)*/ 40 | } 41 | 42 | mainbox { 43 | children: [inputbar, message, sidebar, listview]; 44 | spacing: 30px; 45 | /*margin: 20%;*/ 46 | padding: 30px 0; 47 | border: 1px; 48 | border-color: @base0D; 49 | } 50 | 51 | inputbar { 52 | padding: 0 30px; 53 | children: [prompt, textbox-prompt-colon, entry, case-indicator]; 54 | } 55 | 56 | prompt { 57 | text-color: @base0D; 58 | } 59 | 60 | textbox-prompt-colon { 61 | expand: false; 62 | str: ":"; 63 | margin: 0 1ch 0 0; 64 | text-color: @base0D; 65 | } 66 | 67 | entry { 68 | text-color: @base07; 69 | } 70 | 71 | case-indicator { 72 | text-color: @base0F; 73 | } 74 | 75 | sidebar, message { 76 | border: 1px 0; 77 | border-color: @base0D; 78 | } 79 | 80 | button, textbox { 81 | background-color: @base03; 82 | text-color: @base07; 83 | padding: 5px; 84 | } 85 | 86 | button selected { 87 | background-color: @base0D; 88 | } 89 | 90 | listview { 91 | scrollbar: true; 92 | margin: 0 10px 0 30px; 93 | } 94 | 95 | scrollbar { 96 | background-color: @base03; 97 | handle-color: @base0D; 98 | handle-width: 10px; 99 | border: 0 1px; 100 | border-color: @base0D; 101 | margin: 0 0 0 20px; 102 | } 103 | 104 | element { 105 | padding: 5px; 106 | highlight: bold underline; 107 | } 108 | 109 | element normal { 110 | background-color: transparent; 111 | } 112 | 113 | element selected { 114 | background-color: @base0D; 115 | } 116 | 117 | element alternate { 118 | /*background-color: @base03;*/ 119 | } 120 | 121 | element normal normal, element selected normal, element alternate normal { 122 | text-color: @base07; 123 | } 124 | 125 | element normal urgent, element selected urgent, element alternate urgent { 126 | text-color: @base0F; 127 | } 128 | 129 | element normal active, element selected active, element alternate active { 130 | text-color: @base0B; 131 | } 132 | -------------------------------------------------------------------------------- /modules/workspace/i3/rofi/themes/sidebar.rasi: -------------------------------------------------------------------------------- 1 | /** 2 | * User: qball 3 | * Copyright: Dave Davenport 4 | */ 5 | * { 6 | text-color: #ffeedd; 7 | background-color: rgba(0,0,0,0); 8 | dark: #1c1c1c; 9 | // Black 10 | black: #3d352a; 11 | lightblack: #554444; 12 | // 13 | // Red 14 | red: #cd5c5c; 15 | lightred: #cc5533; 16 | // 17 | // Green 18 | green: #86af80; 19 | lightgreen: #88cc22; 20 | // 21 | // Yellow 22 | yellow: #e8ae5b; 23 | lightyellow: #ffa75d; 24 | // 25 | // Blue 26 | blue: #6495ed; 27 | lightblue: #87ceeb; 28 | // 29 | // Magenta 30 | magenta: #deb887; 31 | lightmagenta: #996600; 32 | // 33 | // Cyan 34 | cyan: #b0c4de; 35 | lightcyan: #b0c4de; 36 | // 37 | // White 38 | white: #bbaa99; 39 | lightwhite: #ddccbb; 40 | // 41 | // Bold, Italic, Underline 42 | highlight: bold #ffffff; 43 | } 44 | #window { 45 | fullscreen: true; 46 | location: west; 47 | anchor: west; 48 | border: 0px 2px 0px 0px; 49 | text-color: @lightwhite; 50 | 51 | orientation: horizontal; 52 | children: [mainbox, dummy]; 53 | } 54 | 55 | #dummy { 56 | expand: true; 57 | } 58 | 59 | #sidebar { 60 | border: 2px 0px 0px 0px; 61 | background-color: @lightblack; 62 | padding: 10px; 63 | } 64 | #button selected { 65 | border-color: @lightgreen; 66 | text-color: @lightgreen; 67 | } 68 | #entry { 69 | width: 20em; 70 | } 71 | #inputbar { 72 | background-color: @lightblack; 73 | text-color: @lightgreen; 74 | padding: 4px; 75 | border: 0px 0px 2px 0px; 76 | } 77 | #mainbox { 78 | expand: false; 79 | background-color: #1c1c1cee; 80 | spacing: 1em; 81 | } 82 | #listview { 83 | padding: 0em 0.4em 0em 1em; 84 | dynamic: false; 85 | lines: 0; 86 | } 87 | #element selected normal { 88 | background-color: @blue; 89 | } 90 | #element normal active { 91 | text-color: @lightblue; 92 | } 93 | #element normal urgent { 94 | text-color: @lightred; 95 | } 96 | #element alternate normal { 97 | } 98 | #element alternate active { 99 | text-color: @lightblue; 100 | } 101 | #element alternate urgent { 102 | text-color: @lightred; 103 | } 104 | #element selected active { 105 | background-color: @lightblue; 106 | text-color: @dark; 107 | } 108 | #element selected urgent { 109 | background-color: @lightred; 110 | text-color: @dark; 111 | } 112 | #inputbar { 113 | children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; 114 | } 115 | #textbox-prompt-colon { 116 | expand: false; 117 | str: ":"; 118 | margin: 0px 0.3em 0em 0em ; 119 | text-color: @normal-foreground; 120 | } 121 | -------------------------------------------------------------------------------- /modules/workspace/gnome/base.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ... }: 2 | 3 | { 4 | # Enable a low-level configuration system and settings 5 | # management tool. Its main purpose is to provide a back end 6 | # to GSettings on platforms that don't already have 7 | # configuration storage systems. It is part of GNOME 3 and is 8 | # a replacement for GConf 9 | programs.dconf.enable = true; 10 | 11 | services = { 12 | # Packages whose D-Bus configuration files should be included 13 | # in the configuration of the D-Bus system-wide or 14 | # session-wide message bus 15 | dbus.packages = with pkgs; [ dconf ]; 16 | 17 | # Provides geolocation services, that is, it lets 18 | # applications find the user's geographical position. 19 | # A mapping application could use this to present a 20 | # "where am # I" view, for example 21 | geoclue2.enable = true; 22 | 23 | gnome = { 24 | core-os-services.enable = true; 25 | core-utilities.enable = true; 26 | evolution-data-server.enable = true; 27 | sushi.enable = true; 28 | tracker.enable = true; 29 | tracker-miners.enable = true; 30 | gnome-settings-daemon.enable = true; 31 | glib-networking.enable = true; 32 | gnome-keyring.enable = true; 33 | gnome-online-accounts.enable = true; 34 | gnome-online-miners.enable = true; 35 | }; 36 | }; 37 | 38 | environment.sessionVariables.XDG_CURRENT_DESKTOP = "X-Generic"; 39 | 40 | home-manager.users.vyorkin = { 41 | home.activation.gnome = '' 42 | $DRY_RUN_CMD mkdir -p "$XDG_DATA_HOME/.npm-packages" 43 | ''; 44 | 45 | dconf.settings = { 46 | "org/gnome/nautilus/icon-view" = { 47 | captions = [ "size" "date_modified" "none" ]; 48 | }; 49 | 50 | "org/gnome/nautilus/list-view" = { 51 | default-column-order = [ 52 | "name" 53 | "size" 54 | "type" 55 | "owner" 56 | "group" 57 | "permissions" 58 | "where" 59 | "date_modified" 60 | "date_modified_with_time" 61 | "date_accessed" 62 | "recency" 63 | "starred" 64 | "detailed_type" 65 | ]; 66 | default-visible-columns = [ "name" "size" "date_modified" "starred" ]; 67 | }; 68 | 69 | "org/gnome/nautilus/preferences" = { 70 | default-folder-viewer = "list-view"; 71 | executable-text-activation = "display"; 72 | search-filter-time-type = "last_modified"; 73 | search-view = "list-view"; 74 | show-image-thumbnails = "always"; 75 | thumbnail-limit = 10; 76 | }; 77 | 78 | "org/gnome/desktop/interface" = { cursor-theme = "default"; }; 79 | 80 | "org/gnome/evince/default" = { inverted-colors = true; }; 81 | 82 | "org/gnome/maps" = { 83 | night-mode = true; 84 | transportation-type = "car"; 85 | }; 86 | }; 87 | }; 88 | } 89 | -------------------------------------------------------------------------------- /modules/apps/default.nix: -------------------------------------------------------------------------------- 1 | { pkgs, config, lib, ... }: { 2 | options.defaultApps = lib.mkOption { 3 | type = lib.types.attrs; 4 | description = "Preferred applications"; 5 | }; 6 | 7 | config = rec { 8 | defaultApps = { 9 | term = { 10 | cmd = "${pkgs.kitty}/bin/kitty"; 11 | desktop = "kitty"; 12 | }; 13 | editor = { 14 | cmd = toString (pkgs.writeShellScript "emacsclient-newwindow" '' 15 | ${config.home-manager.users.vyorkin.programs.emacs.finalPackage}/bin/emacsclient -c "$@" 16 | ''); 17 | desktop = "emacsclient"; 18 | }; 19 | browser = { 20 | cmd = "${pkgs.firefox}/bin/firefox"; 21 | desktop = "firefox"; 22 | }; 23 | fm = { 24 | cmd = "${pkgs.gnome3.nautilus}/bin/nautilus"; 25 | desktop = "org.gnome.Nautilus"; 26 | }; 27 | monitor = { 28 | cmd = "${pkgs.gnome3.gnome-system-monitor}/bin/gnome-system-monitor"; 29 | desktop = "gnome-system-monitor"; 30 | }; 31 | archive = { 32 | cmd = "${pkgs.gnome3.file-roller}/bin/file-roller"; 33 | desktop = "org.gnome.FileRoller"; 34 | }; 35 | reader = { 36 | cmd = "${pkgs.zathura}/bin/zathura"; 37 | desktop = "zathura"; 38 | }; 39 | messenger = { 40 | cmd = "${pkgs.tdesktop}/bin/telegram-desktop"; 41 | desktop = "telegram"; 42 | }; 43 | # matrix = { 44 | # cmd = "${pkgs.nheko}/bin/nheko"; 45 | # desktop = "nheko"; 46 | # }; 47 | text_processor = { 48 | cmd = "${pkgs.abiword}/bin/abiword"; 49 | desktop = "abiword"; 50 | }; 51 | spreadsheet = { 52 | cmd = "${pkgs.gnumeric}/bin/gnumeric"; 53 | desktop = "gnumeric"; 54 | }; 55 | }; 56 | 57 | environment.sessionVariables = { 58 | EDITOR = config.defaultApps.editor.cmd; 59 | VISUAL = config.defaultApps.editor.cmd; 60 | }; 61 | 62 | home-manager.users.vyorkin.xdg.mimeApps = { 63 | enable = true; 64 | defaultApplications = with config.defaultApps; 65 | builtins.mapAttrs (name: value: 66 | if value ? desktop then [ "${value.desktop}.desktop" ] else value) { 67 | "text/html" = browser; 68 | "image/*" = { desktop = "org.gnome.eog"; }; 69 | "application/zip" = archive; 70 | "application/rar" = archive; 71 | "application/7z" = archive; 72 | "application/*tar" = archive; 73 | 74 | "application/pdf" = reader; 75 | 76 | "x-scheme-handler/http" = browser; 77 | "x-scheme-handler/https" = browser; 78 | "x-scheme-handler/about" = browser; 79 | "x-scheme-handler/unknown" = browser; 80 | 81 | # This actually makes Emacs an editor for everything... XDG is wierd 82 | "text/plain" = editor; 83 | }; 84 | }; 85 | }; 86 | } 87 | -------------------------------------------------------------------------------- /modules/workspace/i3/rofi/themes/paper-float.rasi: -------------------------------------------------------------------------------- 1 | /** 2 | * A floating box version of the paper theme. 3 | * 4 | * User: Qball 5 | * Copyright: Dave Davenport 6 | */ 7 | * { 8 | blue: #0000FF; 9 | white: #FFFFFF; 10 | black: #000000; 11 | grey: #eeeeee; 12 | 13 | spacing: 2; 14 | background-color: #00000000; 15 | border-color: #444444FF; 16 | anchor: north; 17 | location: center; 18 | } 19 | #window { 20 | transparency: "screenshot"; 21 | background-color: #00000000; 22 | border: 0; 23 | padding: 0% 0% 1em 0%; 24 | x-offset: 0; 25 | y-offset: -10%; 26 | } 27 | #mainbox { 28 | padding: 0px; 29 | border: 0; 30 | spacing: 1%; 31 | } 32 | #message { 33 | border: 2px; 34 | padding: 1em; 35 | background-color: @white; 36 | text-color: @back; 37 | } 38 | #textbox normal { 39 | text-color: #002B36FF; 40 | padding: 0; 41 | border: 0; 42 | } 43 | #listview { 44 | fixed-height: 1; 45 | border: 2px; 46 | padding: 1em; 47 | reverse: false; 48 | 49 | columns: 1; 50 | background-color: @white; 51 | } 52 | #element { 53 | border: 0; 54 | padding: 2px; 55 | highlight: bold ; 56 | } 57 | #element normal.normal { 58 | text-color: #002B36FF; 59 | background-color: #F5F5F500; 60 | } 61 | #element normal.urgent { 62 | text-color: #D75F00FF; 63 | background-color: #F5F5F5FF; 64 | } 65 | #element normal.active { 66 | text-color: #005F87FF; 67 | background-color: #F5F5F5FF; 68 | } 69 | #element selected.normal { 70 | text-color: #F5F5F5FF; 71 | background-color: #4271AEFF; 72 | } 73 | #element selected.urgent { 74 | text-color: #F5F5F5FF; 75 | background-color: #D75F00FF; 76 | } 77 | #element selected.active { 78 | text-color: #F5F5F5FF; 79 | background-color: #005F87FF; 80 | } 81 | #element alternate.normal { 82 | text-color: #002B36FF; 83 | background-color: #D0D0D0FF; 84 | } 85 | #element alternate.urgent { 86 | text-color: #D75F00FF; 87 | background-color: #D0D0D0FF; 88 | } 89 | #element alternate.active { 90 | text-color: #005F87FF; 91 | background-color: #D0D0D0FF; 92 | } 93 | #scrollbar { 94 | border: 0; 95 | padding: 0; 96 | } 97 | #inputbar { 98 | spacing: 0; 99 | border: 2px; 100 | padding: 0.5em 1em; 101 | background-color: @grey; 102 | index: 0; 103 | } 104 | #inputbar normal { 105 | foreground-color: #002B36FF; 106 | background-color: #F5F5F500; 107 | } 108 | 109 | #sidebar { 110 | border: 2px; 111 | padding: 0.5em 1em; 112 | background-color: @grey; 113 | index: 10; 114 | } 115 | #button selected { 116 | text-color: #4271AEFF; 117 | } 118 | #inputbar { 119 | children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; 120 | } 121 | #textbox-prompt-colon { 122 | expand: false; 123 | str: ":"; 124 | margin: 0px 0.3em 0em 0em ; 125 | text-color: @normal-foreground; 126 | } 127 | -------------------------------------------------------------------------------- /modules/workspace/i3/rofi/themes/shadow-sidebar.rasi: -------------------------------------------------------------------------------- 1 | // ROFI Color theme 2 | // User: SmokeKing 3 | // vim:ft=css 4 | * { 5 | background-color: rgba ( 20, 20, 25, 0 % ); 6 | text-color: rgba ( 255, 255, 255, 100 % ); 7 | } 8 | #window { 9 | fullscreen: true; 10 | location: east; 11 | anchor: east; 12 | orientation: horizontal; 13 | border: 0; 14 | padding: 20; 15 | children: [dummy, mainbox]; 16 | } 17 | #dummy { 18 | expand: true; 19 | } 20 | #mainbox { 21 | border: 0; 22 | expand: false; 23 | padding: 10; 24 | background-color: rgba ( 20, 20, 25, 100 % ); 25 | } 26 | #message { 27 | border: 1; 28 | padding: 10 2% 10; 29 | background-color: rgba ( 20, 20, 25, 100 % ); 30 | } 31 | #listview { 32 | spacing: 2; 33 | padding: 0em 0.4em 0em 1em; 34 | dynamic: false; 35 | lines: 0; 36 | background-color: rgba ( 20, 20, 25, 100 % ); 37 | } 38 | #element { 39 | padding: 5 5 9; 40 | radius: 4; 41 | background-color: rgba ( 20, 20, 25, 100 % ); 42 | } 43 | #element.selected.normal { 44 | text-color: rgba ( 23, 147, 209, 100 % ); 45 | background-color: rgba ( 15, 15, 20, 100 % ); 46 | border: 0 2 4; 47 | border-radius: 2; 48 | border-color: rgba ( 10, 10, 10, 100 % ); 49 | } 50 | #element.selected.urgent { 51 | text-color: rgba ( 23, 147, 209, 100 % ); 52 | background-color: rgba ( 15, 15, 20, 100 % ); 53 | border: 0 2 4; 54 | border-radius: 2; 55 | border-color: rgba ( 10, 10, 10, 100 % ); 56 | } 57 | #element.selected.active { 58 | text-color: rgba ( 23, 147, 209, 100 % ); 59 | background-color: rgba ( 15, 15, 20, 100 % ); 60 | border: 0 2 4; 61 | border-radius: 2; 62 | border-color: rgba ( 10, 10, 10, 100 % ); 63 | } 64 | #scrollbar { 65 | width: 4; 66 | handle-width: 8; 67 | } 68 | #sidebar { 69 | padding: 1% 2% 2%; 70 | background-color: rgba ( 20, 20, 25, 100 % ); 71 | } 72 | #button { 73 | padding: 8 0 8; 74 | } 75 | #button.selected { 76 | padding: 8 0 8; 77 | text-color: rgba ( 23, 147, 209, 100 % ); 78 | background-color: rgba ( 15, 15, 20, 100 % ); 79 | border: 0 2 4; 80 | border-radius: 2; 81 | border-color: rgba ( 10, 10, 10, 100 % ); 82 | } 83 | #inputbar { 84 | border: 0 1 3; 85 | border-radius: 2; 86 | border-color: rgba ( 10, 10, 10, 100 % ); 87 | background-color: rgba ( 20, 20, 25, 100 % ); 88 | padding: 0% 1.8% 0% 0.2%; 89 | } 90 | #entry { 91 | spacing: 5; 92 | border: 0; 93 | width: 20em; 94 | padding: 5 5 5; 95 | border-radius: 4; 96 | border-color: rgba ( 0, 0, 0, 100 % ); 97 | background-color: rgba ( 20, 20, 25, 100 % ); 98 | } 99 | #prompt { 100 | spacing: 0; 101 | border: 0; 102 | border-radius: 4; 103 | padding: 5 5 5; 104 | text-color: rgba ( 255, 255, 255, 100 % ); 105 | border-color: rgba ( 0, 0, 0, 100 % ); 106 | background-color: rgba ( 20, 20, 25, 100 % ); 107 | } 108 | -------------------------------------------------------------------------------- /modules/workspace/i3/rofi/themes/flat-orange.rasi: -------------------------------------------------------------------------------- 1 | /** 2 | * ROFI Color theme 3 | * User: mbfraga 4 | * Copyright: Martin B. Fraga 5 | */ 6 | 7 | /* global settings and color variables */ 8 | * { 9 | maincolor: #ed8712; 10 | highlight: bold #ed8712; 11 | urgentcolor: #e53714; 12 | 13 | fgwhite: #cfcfcf; 14 | blackdarkest: #1d1d1d; 15 | blackwidget: #262626; 16 | blackentry: #292929; 17 | blackselect: #303030; 18 | darkgray: #848484; 19 | scrollbarcolor: #505050; 20 | font: "DejaVu Sans Mono Regular 14"; 21 | background-color: @blackdarkest; 22 | } 23 | 24 | window { 25 | background-color: @blackdarkest; 26 | anchor: north; 27 | location: north; 28 | y-offset: 20%; 29 | } 30 | 31 | mainbox { 32 | background-color: @blackdarkest; 33 | spacing:0px; 34 | children: [inputbar, message, sidebar, listview]; 35 | } 36 | 37 | message { 38 | padding: 6px 10px; 39 | background-color:@blackwidget; 40 | } 41 | 42 | textbox { 43 | text-color:@darkgray; 44 | background-color:@blackwidget; 45 | } 46 | 47 | listview { 48 | fixed-height: false; 49 | dynamic: true; 50 | scrollbar: true; 51 | spacing: 0px; 52 | padding: 1px 0px 0px 0px; 53 | margin: 0px 0px 1px 0px; 54 | background: @blackdarkest; 55 | } 56 | 57 | element { 58 | padding: 2px 15px; 59 | } 60 | 61 | element normal.normal { 62 | padding: 0px 15px; 63 | background-color: @blackentry; 64 | text-color: @fgwhite; 65 | } 66 | 67 | element normal.urgent { 68 | background-color: @blackentry; 69 | text-color: @urgentcolor; 70 | } 71 | 72 | element normal.active { 73 | background-color: @blackentry; 74 | text-color: @maincolor; 75 | } 76 | 77 | element selected.normal { 78 | background-color: @blackselect; 79 | text-color: @fgwhite; 80 | } 81 | 82 | element selected.urgent { 83 | background-color: @urgentcolor; 84 | text-color: @blackdarkest; 85 | } 86 | 87 | element selected.active { 88 | background-color: @maincolor; 89 | text-color: @blackdarkest; 90 | } 91 | 92 | element alternate.normal { 93 | background-color: @blackentry; 94 | text-color: @fgwhite; 95 | } 96 | 97 | element alternate.urgent { 98 | background-color: @blackentry; 99 | text-color: @urgentcolor; 100 | } 101 | 102 | element alternate.active { 103 | background-color: @blackentry; 104 | text-color: @maincolor; 105 | } 106 | 107 | scrollbar { 108 | background-color: @blackwidget; 109 | handle-color: @darkgray; 110 | handle-width: 15px; 111 | } 112 | 113 | sidebar { 114 | background-color: @blackwidget; 115 | } 116 | 117 | button { 118 | background-color: @blackwidget; 119 | text-color: @darkgray; 120 | } 121 | 122 | button selected { 123 | text-color: @maincolor; 124 | } 125 | 126 | inputbar { 127 | background-color: @blackdarkest; 128 | spacing: 0px; 129 | } 130 | 131 | prompt { 132 | padding:6px 9px; 133 | background-color: @maincolor; 134 | text-color:@blackwidget; 135 | } 136 | 137 | entry { 138 | padding:6px 10px; 139 | background-color:@blackwidget; 140 | text-color:@fgwhite; 141 | } 142 | 143 | case-indicator { 144 | padding:6px 10px; 145 | text-color:@maincolor; 146 | background-color:@blackwidget; 147 | } 148 | -------------------------------------------------------------------------------- /modules/services.nix: -------------------------------------------------------------------------------- 1 | { pkgs, inputs, ... }: 2 | 3 | { 4 | services = { 5 | # Enable ACPI deamon. When an event occurs, it executes 6 | # programs to handle the event. These events are triggered 7 | # by certain actions, such as: 8 | # - Pressing special keys, including the Power/Sleep/Suspend button 9 | # - Closing a notebook lid 10 | # - (Un)Plugging an AC power adapter from a notebook 11 | # - (Un)Plugging phone jack etc 12 | acpid.enable = true; 13 | 14 | # Enable a deamon that allows updating some devices 15 | # firmware, including UEFI for several machines 16 | fwupd.enable = true; 17 | 18 | # Enable programs to publish and discover services and 19 | # hosts running on a local network. For example, a user can 20 | # plug a computer into a network and have Avahi 21 | # automatically advertise the network services running on 22 | # its machine, facilitating user access to those services 23 | avahi.enable = true; 24 | 25 | # Many GTK-based file managers like Nautilus, Thunar, and PCManFM can browse samba 26 | # shares thanks to GVFS. GVFS is a dbus daemon which must be running for this to work. 27 | # If you use Gnome, you have nothing to do as the module already enables it for you, 28 | # but in less full-featured desktop environments, some further configuration options are needed. 29 | gvfs.enable = true; 30 | 31 | # Basically EarlyOOM prevents freezes due to running out of memory. 32 | # Checks the amount of available memory and free swap up to 33 | # 10 times a second (less often if there is a lot of free memory). 34 | # By default if both are below min values, it will 35 | # kill the largest process (highest oom_score) 36 | earlyoom = { 37 | enable = true; 38 | # Minimum of availabe memory (in percent). If the free 39 | # memory falls below this threshold and the analog is true 40 | # for freeSwapThreshold the killing begins 41 | freeMemThreshold = 5; 42 | # Minimum of availabe swap space (in percent). If the 43 | # available swap space falls below this threshold and the 44 | # analog is true for freeMemThreshold the killing begins 45 | freeSwapThreshold = 100; 46 | }; 47 | 48 | # Enable printer support 49 | printing = { 50 | enable = true; 51 | drivers = [ pkgs.gutenprint ]; 52 | }; 53 | 54 | # Enable scanner support 55 | # Docs: https://nixos.wiki/wiki/Scanners 56 | saned.enable = true; 57 | 58 | # systemd-logind settings 59 | logind = { 60 | # What to be done when the laptop lid is closed 61 | lidSwitch = "hibernate"; 62 | # What to be done when the laptop lid is closed and 63 | # the system is on external power 64 | lidSwitchExternalPower = "ignore"; 65 | # Pressing power button means hibernate 66 | extraConfig = "HandlePowerKey=hibernate"; 67 | }; 68 | 69 | interception-tools = { enable = true; }; 70 | }; 71 | 72 | home-manager.users.vyorkin = { 73 | home.packages = with pkgs; [ acpi ]; 74 | }; 75 | 76 | services.openvpn = { 77 | servers = { 78 | home = { 79 | config = "config ${inputs.secrets}/vpn/home.ovpn"; 80 | autoStart = false; 81 | updateResolvConf = true; 82 | }; 83 | 84 | work = { 85 | config = "config ${inputs.secrets}/vpn/work.ovpn"; 86 | autoStart = false; 87 | updateResolvConf = true; 88 | }; 89 | }; 90 | }; 91 | } 92 | -------------------------------------------------------------------------------- /modules/workspace/i3/rofi/themes/sidetab.rasi: -------------------------------------------------------------------------------- 1 | /** 2 | * User: deadguy 3 | * Copyright: deadguy 4 | */ 5 | 6 | configuration { 7 | display-drun: "Activate"; 8 | display-run: "Execute"; 9 | display-window: "Window"; 10 | show-icons: true; 11 | sidebar-mode: true; 12 | } 13 | 14 | * { 15 | background-color: #080808; 16 | text-color: #d3d7cf; 17 | selbg: #215d9c; 18 | actbg: #262626; 19 | urgbg: #e53935; 20 | winbg: #26c6da; 21 | 22 | selected-normal-foreground: @winbg; 23 | normal-foreground: @text-color; 24 | selected-normal-background: @actbg; 25 | normal-background: @background-color; 26 | 27 | selected-urgent-foreground: @background-color; 28 | urgent-foreground: @text-color; 29 | selected-urgent-background: @urgbg; 30 | urgent-background: @background-color; 31 | 32 | selected-active-foreground: @winbg; 33 | active-foreground: @text-color; 34 | selected-active-background: @actbg; 35 | active-background: @selbg; 36 | 37 | line-margin: 2; 38 | line-padding: 2; 39 | separator-style: "none"; 40 | hide-scrollbar: "true"; 41 | margin: 0; 42 | padding: 0; 43 | } 44 | 45 | window { 46 | location: west; 47 | anchor: west; 48 | height: 100%; 49 | width: 22%; 50 | orientation: horizontal; 51 | children: [mainbox]; 52 | } 53 | 54 | mainbox { 55 | spacing: 0.8em; 56 | children: [ entry,listview,sidebar ]; 57 | } 58 | 59 | button { padding: 5px 2px; } 60 | 61 | button selected { 62 | background-color: @active-background; 63 | text-color: @background-color; 64 | } 65 | 66 | inputbar { 67 | padding: 5px; 68 | spacing: 5px; 69 | } 70 | 71 | listview { 72 | spacing: 0.5em; 73 | dynamic: false; 74 | cycle: true; 75 | } 76 | 77 | element { padding: 10px; } 78 | 79 | entry { 80 | expand: false; 81 | text-color: @normal-foreground; 82 | vertical-align: 1; 83 | padding: 5px; 84 | } 85 | 86 | element normal.normal { 87 | background-color: @normal-background; 88 | text-color: @normal-foreground; 89 | } 90 | 91 | element normal.urgent { 92 | background-color: @urgent-background; 93 | text-color: @urgent-foreground; 94 | } 95 | 96 | element normal.active { 97 | background-color: @active-background; 98 | text-color: @active-foreground; 99 | } 100 | 101 | element selected.normal { 102 | background-color: @selected-normal-background; 103 | text-color: @selected-normal-foreground; 104 | border: 0 5px solid 0 0; 105 | border-color: @active-background; 106 | } 107 | 108 | element selected.urgent { 109 | background-color: @selected-urgent-background; 110 | text-color: @selected-urgent-foreground; 111 | } 112 | 113 | element selected.active { 114 | background-color: @selected-active-background; 115 | text-color: @selected-active-foreground; 116 | } 117 | 118 | element alternate.normal { 119 | background-color: @normal-background; 120 | text-color: @normal-foreground; 121 | } 122 | 123 | element alternate.urgent { 124 | background-color: @urgent-background; 125 | text-color: @urgent-foreground; 126 | } 127 | 128 | element alternate.active { 129 | background-color: @active-background; 130 | text-color: @active-foreground; 131 | } 132 | -------------------------------------------------------------------------------- /modules/overlay.nix: -------------------------------------------------------------------------------- 1 | { pkgs, config, lib, inputs, ... }: 2 | 3 | let 4 | filterGit = 5 | builtins.filterSource (type: name: name != ".git" || type != "directory"); 6 | 7 | system = "x86_64-linux"; 8 | old = import inputs.nixpkgs-21-11 ({ 9 | config = config.nixpkgs.config; 10 | localSystem = { inherit system; }; 11 | }); 12 | 13 | mkKeyValue = key: value: 14 | let 15 | mvalue = if builtins.isBool value then 16 | (if value then "true" else "false") 17 | else if builtins.isString value then 18 | value 19 | else 20 | builtins.toString value; 21 | in ''${key}=${mvalue}''; 22 | attrsToList = with builtins; 23 | x: 24 | (map (key: { 25 | name = key; 26 | value = getAttr key x; 27 | }) (attrNames x)); 28 | in { 29 | nixpkgs.overlays = [ 30 | inputs.emacs.overlay 31 | # inputs.nixpkgs-wayland.overlay 32 | 33 | (self: super: rec { 34 | nix = super.nix // { 35 | meta = super.nix.meta // { platforms = lib.platforms.unix; }; 36 | }; 37 | 38 | my = rec { 39 | genIni = lib.generators.toINI { inherit mkKeyValue; }; 40 | genIniOrdered = lst: 41 | (builtins.concatStringsSep "\n" (map ({ name ? "widget", ... }@attrs: 42 | builtins.concatStringsSep "\n" ([ "[${name}]" ] 43 | ++ (map ({ name, value }: mkKeyValue name value) 44 | (attrsToList (builtins.removeAttrs attrs [ "name" ]))))) lst)) 45 | + "\n"; 46 | thm = config.themes.colors; 47 | splitHex = hexStr: 48 | map (x: builtins.elemAt x 0) (builtins.filter (a: a != "" && a != [ ]) 49 | (builtins.split "(.{2})" hexStr)); 50 | hex2decDigits = rec { 51 | "0" = 0; 52 | "1" = 1; 53 | "2" = 2; 54 | "3" = 3; 55 | "4" = 4; 56 | "5" = 5; 57 | "6" = 6; 58 | "7" = 7; 59 | "8" = 8; 60 | "9" = 9; 61 | "a" = 10; 62 | "b" = 11; 63 | "c" = 12; 64 | "d" = 13; 65 | "e" = 14; 66 | "f" = 15; 67 | A = a; 68 | B = b; 69 | C = c; 70 | D = d; 71 | E = e; 72 | F = f; 73 | }; 74 | 75 | doubleDigitHexToDec = hex: 76 | 16 * hex2decDigits."${builtins.substring 0 1 hex}" 77 | + hex2decDigits."${builtins.substring 1 2 hex}"; 78 | thmDec = builtins.mapAttrs (name: color: colorHex2Dec color) thm; 79 | thmHash = builtins.mapAttrs (name: color: "#${color}") thm; 80 | colorHex2Dec = color: 81 | builtins.concatStringsSep "," 82 | (map (x: toString (doubleDigitHexToDec x)) (splitHex color)); 83 | }; 84 | 85 | nur = (import inputs.NUR { 86 | pkgs = old; 87 | nurpkgs = pkgs; 88 | }).repos; 89 | 90 | inherit old; 91 | 92 | nerdfonts = nur.balsoft.pkgs.roboto-mono-nerd; 93 | 94 | mtxclient = super.mtxclient.overrideAttrs (_: { 95 | src = inputs.mtxclient; 96 | }); 97 | 98 | nheko = (super.nheko.overrideAttrs (oa: { 99 | src = inputs.nheko; 100 | })).override { mtxclient = self.mtxclient; }; 101 | 102 | weechatScripts.wee-slack = super.weechatScripts.wee-slack.overrideAttrs (oa: { 103 | src = inputs.wee-slack; 104 | patches = [(builtins.elemAt oa.patches 0)]; 105 | }); 106 | 107 | nix-zsh-completions = super.nix-zsh-completions.overrideAttrs (_: { 108 | src = inputs.nix-zsh-completions; 109 | }); 110 | }) 111 | ]; 112 | } 113 | -------------------------------------------------------------------------------- /modules/workspace/i3/rofi/themes/fancy.rasi: -------------------------------------------------------------------------------- 1 | /** 2 | * User: Rasi 3 | * Copyright: Rasmus Steinke 4 | */ 5 | 6 | /* global settings and color variables */ 7 | * { 8 | blue: #A7c6E2; 9 | blue-trans: #A7c6e2aa; 10 | darkblue: #005F87; 11 | white: #FFFFFF; 12 | green: #00330088; 13 | black: #000000; 14 | grey: #444444; 15 | orange: #FFD391; 16 | dark-orange: #FFA664; 17 | light-grey: #F5F5F5; 18 | medium-grey: #D0D0D0; 19 | dark-grey: #002B36; 20 | urgent: #D75F00; 21 | active: #005F87; 22 | transparent: #000000aa; 23 | spacing: 0em; 24 | font: "Iosevka Term Regular 14"; 25 | padding: 0px; 26 | background-color: @white; 27 | line-style: "none"; 28 | } 29 | 30 | prompt-box { 31 | background-color: transparent; 32 | } 33 | 34 | prompt { 35 | background-color: transparent; 36 | text-color: @white; 37 | } 38 | 39 | window { 40 | border-radius: 10px; 41 | background-color: @transparent; 42 | border: 2; 43 | color: @grey; 44 | } 45 | mainbox { 46 | padding: 0px; 47 | background-color: @blue-trans; 48 | color: @grey; 49 | border: 2px; 50 | spacing: 0%; 51 | } 52 | 53 | listview { 54 | // Looks. 55 | border-radius: 10px; 56 | border: 5px 5px 5px 5px; 57 | padding: 20px 20px 20px 20px; 58 | margin: 20px 30px 30px 30px; 59 | background-color: @orange; 60 | // Enable scrollbar 61 | scrollbar: false; 62 | scrollbar-width: 5px; 63 | fixed-height: true; 64 | reverse: false; 65 | color: #000000; 66 | spacing: 0.3em; 67 | } 68 | scrollbar { 69 | color: @black; 70 | background-color: @blue; 71 | padding: 1px; 72 | } 73 | element { 74 | border: 0px; 75 | padding: 0px; 76 | margin: 0px; 77 | color: @black; 78 | background-color: @blue; 79 | } 80 | element normal.normal { 81 | color: @black; 82 | background-color: @orange; 83 | } 84 | element normal.urgent { 85 | color: @urgent; 86 | background-color: @light-grey; 87 | } 88 | element normal.active { 89 | color: @active; 90 | background-color: @light-grey; 91 | } 92 | element selected.normal { 93 | border-radius: 0px; 94 | color: @black; 95 | background-color: @dark-orange; 96 | } 97 | element selected.urgent { 98 | color: @light-grey; 99 | background-color: @urgent; 100 | } 101 | element selected.active { 102 | color: @light-grey; 103 | background-color: @active; 104 | } 105 | element alternate.normal { 106 | color: @black; 107 | background-color: @orange; 108 | } 109 | element alternate.urgent { 110 | color: @urgent; 111 | background-color: @medium-grey; 112 | } 113 | element alternate.active { 114 | color: @active; 115 | background-color: @medium-grey; 116 | } 117 | inputbar { 118 | spacing: 0; 119 | background-color: #88003300; 120 | border: 0px 0px 2px 0px; 121 | border-radius: 0px; 122 | padding: 5px 10px 5px 35px; 123 | background-color: #00330088; 124 | color: @black; 125 | end: false; 126 | } 127 | 128 | separator { 129 | background-color: @blue; 130 | color: #00000000; 131 | } 132 | prompt normal.normal { 133 | background-color: #00000000; 134 | color: #ffffff; 135 | padding: 0px; 136 | } 137 | entry normal.normal { 138 | background-color: #00000000; 139 | color: #ffffff; 140 | padding: 0px; 141 | } 142 | case-indicator normal.normal { 143 | background-color: #00000000; 144 | color: #ffffff; 145 | padding: 0px; 146 | } 147 | 148 | message { 149 | margin: 30px 30px 30px 30px; 150 | padding: 20px 30px 20px 20px; 151 | padding: 1px ; 152 | border-radius: 10px; 153 | border: 5px 5px 5px 5px; 154 | } 155 | 156 | prompt-colon { 157 | spacing: 0; 158 | enabled: false; 159 | } 160 | 161 | -------------------------------------------------------------------------------- /modules/workspace/i3/rofi/themes/Pop-Dark.rasi: -------------------------------------------------------------------------------- 1 | /** 2 | * Author: Primetoxinz 3 | */ 4 | * { 5 | text-color: #f2f2f2; 6 | background-color: #4e4743; 7 | lightbg: #534c48; 8 | red: #f15d22; 9 | orange: #faa41a; 10 | blue: #48b9c7; 11 | 12 | selected-normal-foreground: @foreground; 13 | normal-foreground: @foreground; 14 | alternate-normal-background: @background; 15 | selected-urgent-foreground: @foreground; 16 | urgent-foreground: @foreground; 17 | alternate-urgent-background: @background; 18 | active-foreground: @foreground; 19 | selected-active-foreground: @foreground; 20 | alternate-normal-foreground: @foreground; 21 | alternate-active-background: @blue; 22 | bordercolor: @foreground; 23 | normal-background: @background; 24 | selected-normal-background: @blue; 25 | separatorcolor: @orange; 26 | spacing: 2; 27 | urgent-background: @red; 28 | alternate-urgent-foreground: @foreground; 29 | selected-urgent-background: @red; 30 | alternate-active-foreground: @foreground; 31 | selected-active-background: @blue; 32 | active-background: @orange; 33 | } 34 | #window { 35 | border: 0; 36 | text-color: @foreground; 37 | background-color: rgba ( 0, 0, 0, 0 % ); 38 | padding: 5; 39 | text-color: @bordercolor; 40 | background-color: @background; 41 | } 42 | #mainbox { 43 | border: 0; 44 | padding: 0; 45 | } 46 | #message { 47 | border: 1px dash 0px 0px ; 48 | text-color: @separatorcolor; 49 | padding: 2px 0px 0px ; 50 | } 51 | #textbox { 52 | text-color: @foreground; 53 | } 54 | #listview { 55 | fixed-height: 0; 56 | border: 2px 0px 0px ; 57 | padding: 2px 0px 0px ; 58 | text-color: @separatorcolor; 59 | } 60 | #element { 61 | border: 0; 62 | } 63 | #element.normal.normal { 64 | text-color: @normal-foreground; 65 | background-color: @normal-background; 66 | } 67 | #element.normal.urgent { 68 | text-color: @urgent-foreground; 69 | background-color: @urgent-background; 70 | } 71 | #element.normal.active { 72 | text-color: @active-foreground; 73 | background-color: @active-background; 74 | } 75 | #element.selected.normal { 76 | text-color: @selected-normal-foreground; 77 | background-color: @selected-normal-background; 78 | } 79 | #element.selected.urgent { 80 | text-color: @selected-urgent-foreground; 81 | background-color: @selected-urgent-background; 82 | } 83 | #element.selected.active { 84 | text-color: @selected-active-foreground; 85 | background-color: @selected-active-background; 86 | } 87 | #element.alternate.normal { 88 | text-color: @alternate-normal-foreground; 89 | background-color: @alternate-normal-background; 90 | } 91 | #element.alternate.urgent { 92 | text-color: @alternate-urgent-foreground; 93 | background-color: @alternate-urgent-background; 94 | } 95 | #element.alternate.active { 96 | text-color: @alternate-active-foreground; 97 | background-color: @alternate-active-background; 98 | } 99 | #sidebar { 100 | border: 1px dash 0px 0px ; 101 | } 102 | #button selected { 103 | text-color: @selected-normal-foreground; 104 | background-color: @selected-normal-background; 105 | } 106 | #inputbar { 107 | spacing: 0; 108 | border: 0px ; 109 | } 110 | #button normal { 111 | text-color: @foreground; 112 | } 113 | 114 | #inputbar { 115 | children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; 116 | } 117 | #textbox-prompt-colon { 118 | expand: false; 119 | str: ":"; 120 | margin: 0px 0.3em 0em 0em ; 121 | text-color: @normal-foreground; 122 | } 123 | -------------------------------------------------------------------------------- /modules/workspace/i3/base.nix: -------------------------------------------------------------------------------- 1 | { pkgs, inputs, lib, config, ... }: 2 | 3 | let 4 | cfg = import ./config/base.nix { inherit pkgs lib config; }; 5 | env = import ./config/env.nix { }; 6 | scripts = import ./scripts pkgs config; 7 | in { 8 | services.xserver = { 9 | windowManager.i3 = { 10 | enable = true; 11 | package = pkgs.i3-gaps; 12 | configFile = ./config/native; 13 | extraPackages = with pkgs; [ 14 | i3status 15 | i3blocks 16 | xrandr-invert-colors 17 | dmenu 18 | nitrogen 19 | rofi 20 | dunst 21 | betterlockscreen 22 | i3lock-pixeled 23 | ]; 24 | }; 25 | }; 26 | 27 | # It seems that i3blocks read it's contents from a hardcoded path in /etc by default. 28 | # Since in nixos, this path look something like: 29 | # /nix/store/k78nc1bplhy4yjblqwlc14h6rdisix3w-i3blocks-1.4/libexec/i3blocks/[BLOCKS] 30 | # So we have to create a link to this path by adding this line: 31 | environment.pathsToLink = [ "/libexec" ]; 32 | 33 | home-manager.users.vyorkin = { 34 | services.picom = { 35 | # Enable Picom X11 compositor. 36 | enable = true; 37 | 38 | # Opacity of active windows. 39 | activeOpacity = 1.0; 40 | 41 | # Backend to use: glx or xrender. 42 | backend = "xrender"; 43 | 44 | # Don't fade windows in and out. 45 | fade = true; 46 | 47 | # Time between fade animation step (in ms). 48 | fadeDelta = 7; 49 | 50 | # List of conditions of windows that should not be faded. 51 | # See the picom(1) man page for more examples. 52 | fadeExclude = []; 53 | 54 | # Opacity change between fade steps (in and out). 55 | fadeSteps = [ 0.05 0.05 ]; 56 | 57 | # Dim inactive windows. 58 | # inactiveDim = "0.2"; 59 | 60 | # Opacity of inactive windows. 61 | inactiveOpacity = 1; 62 | 63 | # Opacity of dropdown and popup mune. 64 | menuOpacity = 1; 65 | 66 | # Draw window shadows. 67 | shadow = true; 68 | 69 | # List of conditions of windows that should have no shadow. 70 | # See the picom(1) man page for more examples. 71 | shadowExclude = [ 72 | "name = 'Notification'" 73 | "_GTK_FRAME_EXTENTS@:c" 74 | "class_g = 'i3-frame'" 75 | "_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'" 76 | "_NET_WM_STATE@:32a *= '_NET_WM_STATE_STICKY'" 77 | "!I3_FLOATING_WINDOW@:c" 78 | "! name~=''" 79 | "n:e:Notification" 80 | "n:e:Plank" 81 | "n:e:Docky" 82 | "g:e:Synapse" 83 | "g:e:Kupfer" 84 | "g:e:Conky" 85 | "n:w:*Firefox*" 86 | "n:w:*Chrome*" 87 | "n:w:*Chromium*" 88 | "class_g ?= 'Notify-osd'" 89 | "class_g ?= 'Cairo-dock'" 90 | "class_g ?= 'Xfce4-notifyd'" 91 | "class_g ?= 'Xfce4-power-manager'" 92 | ]; 93 | 94 | # Horizontal and vertical offsets for shadows (in pixels). 95 | shadowOffsets = [ (-5) 0 ]; 96 | 97 | # Window shadows opacity (number in range 0 - 1). 98 | shadowOpacity = 0.8; 99 | 100 | # Disable vertical synchronization. 101 | vSync = false; 102 | }; 103 | 104 | home.file = { 105 | "i3blocks-contrib" = { 106 | source = inputs.i3blocks-contrib; 107 | target = ".config/i3blocks-contrib"; 108 | }; 109 | "i3blocks-custom" = { 110 | source = ./config/blocks; 111 | target = ".config/i3blocks-custom"; 112 | }; 113 | "i3blocks" = { 114 | source = ./config/i3blocks.conf; 115 | target = ".i3blocks.conf"; 116 | }; 117 | "dunst" = { 118 | source = ./dunst; 119 | target = ".config/dunst"; 120 | recursive = true; 121 | }; 122 | "rofi" = { 123 | source = ./rofi; 124 | target = ".config/rofi"; 125 | }; 126 | }; 127 | }; 128 | } 129 | -------------------------------------------------------------------------------- /modules/workspace/i3/rofi/themes/hack.rasi: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Author : Aditya Shakya 4 | * Mail : adi1090x@gmail.com 5 | * Github : @adi1090x 6 | * Twitter : @adi1090x 7 | * 8 | */ 9 | 10 | configuration { 11 | font: "IBM Plex Sans 18"; 12 | fixed-num-lines: true; 13 | show-icons: false; 14 | sidebar-mode: true; 15 | scroll-method: 0; 16 | window-format: "[{w}] ··· {c} ··· {t}"; 17 | click-to-exit: true; 18 | combi-hide-mode-prefix: false; 19 | display-window: ""; 20 | display-windowcd: ""; 21 | display-run: ""; 22 | display-ssh: ""; 23 | display-drun: ""; 24 | display-combi: ""; 25 | } 26 | 27 | @import "styles/colors.rasi" 28 | 29 | * { 30 | background-color: @bg; 31 | } 32 | 33 | window { 34 | border: 0px; 35 | border-color: @ac; 36 | border-radius: 6px; 37 | padding: 30; 38 | width: 20%; 39 | } 40 | 41 | prompt { 42 | spacing: 0; 43 | border: 0; 44 | text-color: @fg; 45 | } 46 | 47 | textbox-prompt-colon { 48 | expand: false; 49 | str: " "; 50 | margin: 0px 4px 0px 0px; 51 | text-color: inherit; 52 | } 53 | 54 | entry { 55 | spacing: 0; 56 | text-color: @fg; 57 | } 58 | 59 | case-indicator { 60 | spacing: 0; 61 | text-color: @fg; 62 | } 63 | 64 | inputbar { 65 | spacing: 0px; 66 | text-color: @fg; 67 | padding: 1px; 68 | children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; 69 | } 70 | 71 | mainbox { 72 | border: 0px; 73 | border-color: @ac; 74 | padding: 6; 75 | } 76 | 77 | listview { 78 | lines: 10; 79 | columns: 1; 80 | fixed-height: 0; 81 | border: 0px; 82 | border-color: @ac; 83 | spacing: 4px; 84 | scrollbar: false; 85 | padding: 5px 5px 0px 5px; 86 | } 87 | 88 | element-text, element-icon { 89 | background-color: #00000000; 90 | text-color: inherit; 91 | } 92 | 93 | element { 94 | border: 0px; 95 | border-radius: 4px; 96 | padding: 5px; 97 | } 98 | element normal.normal { 99 | background-color: @bg; 100 | text-color: @fg; 101 | } 102 | element normal.urgent { 103 | background-color: @bg; 104 | text-color: @red; 105 | } 106 | element normal.active { 107 | background-color: @green; 108 | text-color: @bg; 109 | } 110 | element selected.normal { 111 | background-color: @fg; 112 | text-color: @bg; 113 | } 114 | element selected.urgent { 115 | background-color: @bg; 116 | text-color: @red; 117 | } 118 | element selected.active { 119 | background-color: @fg; 120 | text-color: @bg; 121 | } 122 | element alternate.normal { 123 | background-color: @bg; 124 | text-color: @fg; 125 | } 126 | element alternate.urgent { 127 | background-color: @bg; 128 | text-color: @fg; 129 | } 130 | element alternate.active { 131 | background-color: @bg; 132 | text-color: @fg; 133 | } 134 | 135 | sidebar { 136 | border: 0px; 137 | border-color: @ac; 138 | border-radius: 0px; 139 | } 140 | 141 | button { 142 | horizontal-align: 0.5; 143 | vertical-align: 0.5; 144 | background-color: @fg; 145 | margin: 5px; 146 | padding: 5px; 147 | text-color: @bg; 148 | border: 0px; 149 | border-radius: 4px; 150 | border-color: @fg; 151 | } 152 | 153 | button selected { 154 | background-color: @ac; 155 | text-color: @fg; 156 | border: 0px; 157 | border-radius: 4px; 158 | border-color: @fg; 159 | } 160 | 161 | scrollbar { 162 | width: 4px; 163 | border: 0px; 164 | handle-color: @fg; 165 | handle-width: 8px; 166 | padding: 0; 167 | } 168 | 169 | message { 170 | border: 0px; 171 | border-color: @ac; 172 | padding: 1px; 173 | } 174 | 175 | textbox { 176 | text-color: @fg; 177 | } 178 | --------------------------------------------------------------------------------