Compare commits
25 Commits
cd0e4479f7
..
laptop
| Author | SHA1 | Date | |
|---|---|---|---|
| 8af65c3607 | |||
| f0129a370f | |||
| 723c7ae6c1 | |||
| d2af9c3d5a | |||
| df42bdaefd | |||
| b27e71f228 | |||
| 80825915df | |||
| dd44d1a7d2 | |||
| 594dd8f937 | |||
| 1cf0ee3c42 | |||
| 84c57d53ea | |||
| 7f40a5bbea | |||
| 58906ccfdb | |||
| 75c5ec6422 | |||
| ddaa1c4222 | |||
| 6816ebc07f | |||
| d1a8a9ba91 | |||
| 6753a9e68e | |||
| 8b1a3f4eab | |||
| 9abbff4c7e | |||
| 61bf1af1af | |||
| db2287f15b | |||
| 491bfa2c49 | |||
| 9224505e4e | |||
| ac567ebcaa |
@@ -1,58 +0,0 @@
|
|||||||
name: Update Nix Flake
|
|
||||||
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
- cron: "30 0 * * *" # daily run
|
|
||||||
workflow_dispatch: {}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
update-flake:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
token: "${{ gitea.token }}"
|
|
||||||
fetch-depth: 0
|
|
||||||
ref: flake-updates
|
|
||||||
|
|
||||||
- name: Git config
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
git config user.name "Gitea Actions"
|
|
||||||
git config user.email "actions@gitea.local"
|
|
||||||
|
|
||||||
- name: Rebase from master branch
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
git fetch origin master
|
|
||||||
commits_ahead=$(git rev-list --count HEAD..origin/master)
|
|
||||||
echo "Commits ahead: $commits_ahead"
|
|
||||||
git log --oneline -5
|
|
||||||
echo "----------"
|
|
||||||
git log --oneline -5 origin/master
|
|
||||||
echo .
|
|
||||||
|
|
||||||
if [ $commits_ahead -ne 0 ]
|
|
||||||
then
|
|
||||||
git rebase -X theirs origin/master
|
|
||||||
git push --force-with-lease origin flake-updates
|
|
||||||
else
|
|
||||||
echo "Rebase not necessary"
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Set up Nix
|
|
||||||
uses: cachix/install-nix-action@v31
|
|
||||||
|
|
||||||
- name: Update Flake
|
|
||||||
run: nix flake update
|
|
||||||
|
|
||||||
- name: Commit and push changes
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
git add flake.lock
|
|
||||||
git status
|
|
||||||
git diff --cached --quiet && echo "No changes to commit." && exit 0
|
|
||||||
|
|
||||||
git commit -m "Update flake.lock $(date -I)"
|
|
||||||
git push --force-with-lease origin flake-updates
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
.direnv
|
|
||||||
result*
|
|
||||||
*.qcow2
|
|
||||||
-19
@@ -1,19 +0,0 @@
|
|||||||
keys:
|
|
||||||
- &primary age1ee5udznhadk6m7jtglu4709rep080yjyd2ukzdl8jma4mm92y3psv0slpg
|
|
||||||
- &aspi-ssh age1q8lc5340gz5xw2f57nglrss68wv0j0hf36py2pdtrl6ky3yrq9qqk0njr4
|
|
||||||
- &builder-ssh age1kw4kmdm45zprvdkrrpvgq966l7585vhusmum083qlwnr0xxgd3uqatcyja
|
|
||||||
- &kardorf-ssh age15lxw97z03q40xrdscnxqqugh5ky5aqrerg2t2rphkcqm6rnllurq8v98q5
|
|
||||||
|
|
||||||
creation_rules:
|
|
||||||
- path_regex: hosts/secrets-common.yaml$
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *primary
|
|
||||||
- *aspi-ssh
|
|
||||||
- *kardorf-ssh
|
|
||||||
|
|
||||||
- path_regex: hosts/builder/secrets.yaml$
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *primary
|
|
||||||
- *builder-ssh
|
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# My dotfiles
|
||||||
|
Welcome!
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
All neccessary dependencies I could think of are listed in the *dependencies* file.
|
||||||
|
|
||||||
|
## Link configs
|
||||||
|
```sh
|
||||||
|
cd .dotfiles
|
||||||
|
stow i3 mc emacs vim
|
||||||
|
```
|
||||||
-38
@@ -1,38 +0,0 @@
|
|||||||
#+title: My dotfiles
|
|
||||||
|
|
||||||
* Quick start for home-manger only (no need to pull this repo)
|
|
||||||
- Install nix using the https://github.com/DeterminateSystems/nix-installer
|
|
||||||
- Then run
|
|
||||||
#+begin_src shell
|
|
||||||
nix run nixpkgs#home-manager -- switch --flake git+https://gitlab.julian-mutter.de/julian/dotfiles.git#julian@quickstart
|
|
||||||
#+end_src
|
|
||||||
- Done
|
|
||||||
|
|
||||||
* Machine selection
|
|
||||||
=home-manager= automatically searches for =user= or =user@hostname= config in the flake, so specify one of those or you will have to manually specify them:
|
|
||||||
=home-manager switch --flake .#user@hostname=
|
|
||||||
|
|
||||||
* Manual symlinks
|
|
||||||
[[file:laptop-nix.conf]] was manually symlinked to file:/etc/nix/nix.conf
|
|
||||||
and [[file:flake.nix]] was symlinked to file:~/.config/home-manager/flake.nix
|
|
||||||
|
|
||||||
For deployment!!
|
|
||||||
|
|
||||||
* Secrets management with sops
|
|
||||||
Full documentation here: https://github.com/Mic92/sops-nix
|
|
||||||
|
|
||||||
** Edit secrets
|
|
||||||
#+begin_src sh
|
|
||||||
sops edit secrets/secrets.yaml
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Authorize new device
|
|
||||||
- Generate public key from ssh -> Private age key generation not needed
|
|
||||||
#+begin_src sh
|
|
||||||
ssh-to-age < /etc/ssh/ssh_host_ed25519_key.pub
|
|
||||||
#+end_src
|
|
||||||
- Add age public key to file:.sops.yaml
|
|
||||||
- Update keys
|
|
||||||
#+begin_src sh
|
|
||||||
sops updatekeys secrets/*
|
|
||||||
#+end_src
|
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
dunst
|
||||||
|
element-desktop
|
||||||
|
feh
|
||||||
|
firefox
|
||||||
|
i3exit
|
||||||
|
i3-scrot
|
||||||
|
i3-wm
|
||||||
|
libqalculate
|
||||||
|
nextcloud
|
||||||
|
pavucontrol
|
||||||
|
rofi
|
||||||
|
stow
|
||||||
|
telegram-desktop
|
||||||
|
thunderbird
|
||||||
|
xclip
|
||||||
|
xwacomcalibrate
|
||||||
@@ -0,0 +1,142 @@
|
|||||||
|
;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
;; Place your private configuration here! Remember, you do not need to run 'doom
|
||||||
|
;; sync' after modifying this file!
|
||||||
|
|
||||||
|
|
||||||
|
;; Some functionality uses this to identify you, e.g. GPG configuration, email
|
||||||
|
;; clients, file templates and snippets.
|
||||||
|
(setq user-full-name "Julian Mutter"
|
||||||
|
user-mail-address "julian.mutter@comumail.de")
|
||||||
|
|
||||||
|
;; Doom exposes five (optional) variables for controlling fonts in Doom. Here
|
||||||
|
;; are the three important ones:
|
||||||
|
;;
|
||||||
|
;; + `doom-font'
|
||||||
|
;; + `doom-variable-pitch-font'
|
||||||
|
;; + `doom-big-font' -- used for `doom-big-font-mode'; use this for
|
||||||
|
;; presentations or streaming.
|
||||||
|
;;
|
||||||
|
;; They all accept either a font-spec, font string ("Input Mono-12"), or xlfd
|
||||||
|
;; font string. You generally only need these two:
|
||||||
|
;; (setq doom-font (font-spec :family "monospace" :size 13 :weight 'semi-light)
|
||||||
|
;; doom-variable-pitch-font (font-spec :family "sans" :size 13))
|
||||||
|
(setq doom-font (font-spec :family "Source Code Pro" :size 14))
|
||||||
|
|
||||||
|
;; There are two ways to load a theme. Both assume the theme is installed and
|
||||||
|
;; available. You can either set `doom-theme' or manually load a theme with the
|
||||||
|
;; `load-theme' function. This is the default:
|
||||||
|
(setq doom-theme 'doom-one)
|
||||||
|
|
||||||
|
;; If you use `org' and don't want your org files in the default location below,
|
||||||
|
;; change `org-directory'. It must be set before org loads!
|
||||||
|
(setq org-directory "~/org")
|
||||||
|
|
||||||
|
;; This determines the style of line numbers in effect. If set to `nil', line
|
||||||
|
;; numbers are disabled. For relative line numbers, set this to `relative'.
|
||||||
|
(setq display-line-numbers-type 'relative)
|
||||||
|
|
||||||
|
|
||||||
|
;; Here are some additional functions/macros that could help you configure Doom:
|
||||||
|
;;
|
||||||
|
;; - `load!' for loading external *.el files relative to this one
|
||||||
|
;; - `use-package!' for configuring packages
|
||||||
|
;; - `after!' for running code after a package has loaded
|
||||||
|
;; - `add-load-path!' for adding directories to the `load-path', relative to
|
||||||
|
;; this file. Emacs searches the `load-path' when you load packages with
|
||||||
|
;; `require' or `use-package'.
|
||||||
|
;; - `map!' for binding new keys
|
||||||
|
;;
|
||||||
|
;; To get information about any of these functions/macros, move the cursor over
|
||||||
|
;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k').
|
||||||
|
;; This will open documentation for it, including demos of how they are used.
|
||||||
|
;;
|
||||||
|
;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how
|
||||||
|
;; they are implemented.
|
||||||
|
|
||||||
|
;; Open external terminal
|
||||||
|
;; (map! :map doom-leader-open-map :desc "Open" "t" (cmd! (call-process-shell-command "terminal&" nil 0)))
|
||||||
|
(map! :leader :desc "Open external terminal" "o t" (cmd! (call-process-shell-command "xfce4-terminal&" nil 0)))
|
||||||
|
|
||||||
|
;; Remap font scaling keybindings to make more sense
|
||||||
|
(map! :desc "Increase font size" :n "C-+" #'text-scale-increase)
|
||||||
|
(map! :desc "Decrease font size" :n "C--" #'text-scale-decrease)
|
||||||
|
(map! :desc "Reset font size" :n "C-=" #'doom/reset-font-size)
|
||||||
|
|
||||||
|
|
||||||
|
;; Org-mode custom keybindings
|
||||||
|
;; (map! :map org-mode-map :nvi "C-k" #'org-backward-element)
|
||||||
|
;; (map! :map org-mode-map :nvi "C-j" #'org-forward-element)
|
||||||
|
;; (map! :map org-mode-map :nvi "C-h" #'org-up-element)
|
||||||
|
;; (map! :map org-mode-map :nvi "C-l" #'org-down-element)
|
||||||
|
|
||||||
|
|
||||||
|
;; Spell checking settings
|
||||||
|
;; TODO make toggling of spell checking ('SPC t s') use flyspell-mode in text modes and flyspell-prog-mode in programming modes (see hooks below)
|
||||||
|
;; Removing hooks for automatic spell checking set here: https://github.com/hlissner/doom-emacs/blob/develop/modules/checkers/spell/config.el
|
||||||
|
(remove-hook! '(org-mode-hook
|
||||||
|
markdown-mode-hook
|
||||||
|
TeX-mode-hook
|
||||||
|
rst-mode-hook
|
||||||
|
mu4e-compose-mode-hook
|
||||||
|
message-mode-hook
|
||||||
|
git-commit-mode-hook)
|
||||||
|
#'flyspell-mode)
|
||||||
|
|
||||||
|
(remove-hook! '(yaml-mode-hook
|
||||||
|
conf-mode-hook
|
||||||
|
prog-mode-hook)
|
||||||
|
#'flyspell-prog-mode)
|
||||||
|
|
||||||
|
(setq ispell-dictionary "english")
|
||||||
|
|
||||||
|
(map! :map doom-leader-toggle-map :desc "Toggle dictionary" "d" #'fd-switch-dictionary)
|
||||||
|
|
||||||
|
(defun fd-switch-dictionary()
|
||||||
|
(interactive)
|
||||||
|
(let* ((dic ispell-current-dictionary)
|
||||||
|
(change (if (string= dic "german") "english" "german")))
|
||||||
|
(ispell-change-dictionary change)
|
||||||
|
(message "Dictionary switched from %s to %s" dic change)
|
||||||
|
))
|
||||||
|
|
||||||
|
;; (autoload 'matlab-mode "matlab" "Matlab Editing Mode" t)
|
||||||
|
;; (add-to-list
|
||||||
|
;; 'auto-mode-alist
|
||||||
|
;; '("\\.m$" . matlab-mode))
|
||||||
|
;; (setq matlab-indent-function t)
|
||||||
|
;; (setq matlab-shell-command "/urs/local/bin/matlab")
|
||||||
|
|
||||||
|
;; (setq org-agenda-files (list "~/org"))
|
||||||
|
;; (custom-set-variables
|
||||||
|
;; '(org-directory "~/org")
|
||||||
|
;; '(org-agenda-files (list org-directory)))
|
||||||
|
|
||||||
|
;; (add-to-list 'org-agenda-files "~/org/anothertest.org" 'append)
|
||||||
|
|
||||||
|
;; Adding my org-agenda files
|
||||||
|
(after! org
|
||||||
|
(setq org-agenda-files (expand-file-name "org-agenda-files" doom-private-dir)))
|
||||||
|
|
||||||
|
(map! :desc "Toggle case of word" :nv "g C" #'toggle-word-case)
|
||||||
|
|
||||||
|
(defun toggle-word-case ()
|
||||||
|
"Toggle the case of current word or text selection."
|
||||||
|
|
||||||
|
(interactive)
|
||||||
|
(let (
|
||||||
|
(deactivate-mark nil)
|
||||||
|
$p1 $p2)
|
||||||
|
(if (use-region-p)
|
||||||
|
(setq $p1 (region-beginning) $p2 (region-end))
|
||||||
|
(save-excursion
|
||||||
|
(skip-chars-backward "[:alpha:]")
|
||||||
|
(setq $p1 (point))
|
||||||
|
(skip-chars-forward "[:alpha:]")
|
||||||
|
(setq $p2 (point))))
|
||||||
|
(let ((first-char-prop (get-char-code-property (char-after $p1) 'general-category)))
|
||||||
|
(cond ((string= "Ll" first-char-prop) ; Lower case
|
||||||
|
(upcase-region $p1 (+ $p1 1)))
|
||||||
|
((string= "Lu" first-char-prop) ; Upper case
|
||||||
|
(downcase-region $p1 (+ $p1 1)))
|
||||||
|
(t (message "Word does not start with a alphabetic character"))))))
|
||||||
@@ -0,0 +1,188 @@
|
|||||||
|
;;; init.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
;; This file controls what Doom modules are enabled and what order they load
|
||||||
|
;; in. Remember to run 'doom sync' after modifying it!
|
||||||
|
|
||||||
|
;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's
|
||||||
|
;; documentation. There you'll find a "Module Index" link where you'll find
|
||||||
|
;; a comprehensive list of Doom's modules and what flags they support.
|
||||||
|
|
||||||
|
;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or
|
||||||
|
;; 'C-c c k' for non-vim users) to view its documentation. This works on
|
||||||
|
;; flags as well (those symbols that start with a plus).
|
||||||
|
;;
|
||||||
|
;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its
|
||||||
|
;; directory (for easy access to its source code).
|
||||||
|
|
||||||
|
(doom! :input
|
||||||
|
;;chinese
|
||||||
|
;;japanese
|
||||||
|
;;layout ; auie,ctsrnm is the superior home row
|
||||||
|
|
||||||
|
:completion
|
||||||
|
company ; the ultimate code completion backend
|
||||||
|
;;helm ; the *other* search engine for love and life
|
||||||
|
;;ido ; the other *other* search engine...
|
||||||
|
ivy ; a search engine for love and life
|
||||||
|
|
||||||
|
:ui
|
||||||
|
;;deft ; notational velocity for Emacs
|
||||||
|
doom ; what makes DOOM look the way it does
|
||||||
|
doom-dashboard ; a nifty splash screen for Emacs
|
||||||
|
doom-quit ; DOOM quit-message prompts when you quit Emacs
|
||||||
|
;;(emoji +unicode) ; 🙂
|
||||||
|
;;fill-column ; a `fill-column' indicator
|
||||||
|
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
|
||||||
|
;;hydra
|
||||||
|
;;indent-guides ; highlighted indent columns
|
||||||
|
;;ligatures ; ligatures and symbols to make your code pretty again
|
||||||
|
;;minimap ; show a map of the code on the side
|
||||||
|
modeline ; snazzy, Atom-inspired modeline, plus API
|
||||||
|
;;nav-flash ; blink cursor line after big motions
|
||||||
|
neotree ; a project drawer, like NERDTree for vim
|
||||||
|
ophints ; highlight the region an operation acts on
|
||||||
|
(popup +defaults) ; tame sudden yet inevitable temporary windows
|
||||||
|
;;tabs ; a tab bar for Emacs
|
||||||
|
;; treemacs ; a project drawer, like neotree but cooler
|
||||||
|
;;unicode ; extended unicode support for various languages
|
||||||
|
vc-gutter ; vcs diff in the fringe
|
||||||
|
vi-tilde-fringe ; fringe tildes to mark beyond EOB
|
||||||
|
;;window-select ; visually switch windows
|
||||||
|
workspaces ; tab emulation, persistence & separate workspaces
|
||||||
|
;;zen ; distraction-free coding or writing
|
||||||
|
|
||||||
|
:editor
|
||||||
|
(evil +everywhere); come to the dark side, we have cookies
|
||||||
|
file-templates ; auto-snippets for empty files
|
||||||
|
fold ; (nigh) universal code folding
|
||||||
|
;;(format +onsave) ; automated prettiness
|
||||||
|
;;god ; run Emacs commands without modifier keys
|
||||||
|
;;lispy ; vim for lisp, for people who don't like vim
|
||||||
|
;;multiple-cursors ; editing in many places at once
|
||||||
|
;;objed ; text object editing for the innocent
|
||||||
|
;;parinfer ; turn lisp into python, sort of
|
||||||
|
;;rotate-text ; cycle region at point between text candidates
|
||||||
|
snippets ; my elves. They type so I don't have to
|
||||||
|
;;word-wrap ; soft wrapping with language-aware indent
|
||||||
|
|
||||||
|
:emacs
|
||||||
|
dired ; making dired pretty [functional]
|
||||||
|
electric ; smarter, keyword-based electric-indent
|
||||||
|
;;ibuffer ; interactive buffer management
|
||||||
|
undo ; persistent, smarter undo for your inevitable mistakes
|
||||||
|
vc ; version-control and Emacs, sitting in a tree
|
||||||
|
|
||||||
|
:term
|
||||||
|
;;eshell ; the elisp shell that works everywhere
|
||||||
|
;;shell ; simple shell REPL for Emacs
|
||||||
|
;;term ; basic terminal emulator for Emacs
|
||||||
|
;;vterm ; the best terminal emulation in Emacs
|
||||||
|
|
||||||
|
:checkers
|
||||||
|
syntax ; tasing you for every semicolon you forget
|
||||||
|
(spell +flyspell +everywhere) ; tasing you for misspelling mispelling
|
||||||
|
;;grammar ; tasing grammar mistake every you make
|
||||||
|
|
||||||
|
:tools
|
||||||
|
;;ansible
|
||||||
|
;;debugger ; FIXME stepping through code, to help you add bugs
|
||||||
|
;;direnv
|
||||||
|
;;docker
|
||||||
|
;;editorconfig ; let someone else argue about tabs vs spaces
|
||||||
|
;;ein ; tame Jupyter notebooks with emacs
|
||||||
|
(eval +overlay) ; run code, run (also, repls)
|
||||||
|
;;gist ; interacting with github gists
|
||||||
|
lookup ; navigate your code and its documentation
|
||||||
|
lsp
|
||||||
|
magit ; a git porcelain for Emacs
|
||||||
|
;;make ; run make tasks from Emacs
|
||||||
|
;;pass ; password manager for nerds
|
||||||
|
;;pdf ; pdf enhancements
|
||||||
|
;;prodigy ; FIXME managing external services & code builders
|
||||||
|
;;rgb ; creating color strings
|
||||||
|
;;taskrunner ; taskrunner for all your projects
|
||||||
|
;;terraform ; infrastructure as code
|
||||||
|
;;tmux ; an API for interacting with tmux
|
||||||
|
;;upload ; map local to remote projects via ssh/ftp
|
||||||
|
|
||||||
|
:os
|
||||||
|
(:if IS-MAC macos) ; improve compatibility with macOS
|
||||||
|
;;tty ; improve the terminal Emacs experience
|
||||||
|
|
||||||
|
:lang
|
||||||
|
;;agda ; types of types of types of types...
|
||||||
|
;;beancount ; mind the GAAP
|
||||||
|
(cc +lsp) ; C > C++ == 1
|
||||||
|
;;clojure ; java with a lisp
|
||||||
|
;;common-lisp ; if you've seen one lisp, you've seen them all
|
||||||
|
;;coq ; proofs-as-programs
|
||||||
|
;;crystal ; ruby at the speed of c
|
||||||
|
;;csharp ; unity, .NET, and mono shenanigans
|
||||||
|
;;data ; config/data formats
|
||||||
|
;;(dart +flutter) ; paint ui and not much else
|
||||||
|
;;elixir ; erlang done right
|
||||||
|
;;elm ; care for a cup of TEA?
|
||||||
|
emacs-lisp ; drown in parentheses
|
||||||
|
;;erlang ; an elegant language for a more civilized age
|
||||||
|
;;ess ; emacs speaks statistics
|
||||||
|
;;factor
|
||||||
|
;;faust ; dsp, but you get to keep your soul
|
||||||
|
;;fsharp ; ML stands for Microsoft's Language
|
||||||
|
;;fstar ; (dependent) types and (monadic) effects and Z3
|
||||||
|
;;gdscript ; the language you waited for
|
||||||
|
;;(go +lsp) ; the hipster dialect
|
||||||
|
;;(haskell +dante) ; a language that's lazier than I am
|
||||||
|
;;hy ; readability of scheme w/ speed of python
|
||||||
|
;;idris ; a language you can depend on
|
||||||
|
;;json ; At least it ain't XML
|
||||||
|
;;(java +meghanada) ; the poster child for carpal tunnel syndrome
|
||||||
|
;;javascript ; all(hope(abandon(ye(who(enter(here))))))
|
||||||
|
;; julia ; a better, faster MATLAB
|
||||||
|
;;kotlin ; a better, slicker Java(Script)
|
||||||
|
latex ; writing papers in Emacs has never been so fun
|
||||||
|
;;lean ; for folks with too much to prove
|
||||||
|
;;ledger ; be audit you can be
|
||||||
|
;;lua ; one-based indices? one-based indices
|
||||||
|
markdown ; writing docs for people to ignore
|
||||||
|
;;nim ; python + lisp at the speed of c
|
||||||
|
;;nix ; I hereby declare "nix geht mehr!"
|
||||||
|
;;ocaml ; an objective camel
|
||||||
|
org ; organize your plain life in plain text
|
||||||
|
;;php ; perl's insecure younger brother
|
||||||
|
;;plantuml ; diagrams for confusing people more
|
||||||
|
;;purescript ; javascript, but functional
|
||||||
|
(python +lsp) ; beautiful is better than ugly
|
||||||
|
;;qt ; the 'cutest' gui framework ever
|
||||||
|
;;racket ; a DSL for DSLs
|
||||||
|
;;raku ; the artist formerly known as perl6
|
||||||
|
;;rest ; Emacs as a REST client
|
||||||
|
;;rst ; ReST in peace
|
||||||
|
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
|
||||||
|
rust ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
|
||||||
|
;;scala ; java, but good
|
||||||
|
;;(scheme +guile) ; a fully conniving family of lisps
|
||||||
|
sh ; she sells {ba,z,fi}sh shells on the C xor
|
||||||
|
;;sml
|
||||||
|
;;solidity ; do you need a blockchain? No.
|
||||||
|
;;swift ; who asked for emoji variables?
|
||||||
|
;;terra ; Earth and Moon in alignment for performance.
|
||||||
|
;;web ; the tubes
|
||||||
|
;;yaml ; JSON, but readable
|
||||||
|
;;zig ; C, but simpler
|
||||||
|
|
||||||
|
:email
|
||||||
|
;;(mu4e +gmail)
|
||||||
|
;;notmuch
|
||||||
|
;;(wanderlust +gmail)
|
||||||
|
|
||||||
|
:app
|
||||||
|
;;calendar
|
||||||
|
;;emms
|
||||||
|
;;everywhere ; *leave* Emacs!? You must be joking
|
||||||
|
;;irc ; how neckbeards socialize
|
||||||
|
;;(rss +org) ; emacs as an RSS reader
|
||||||
|
;;twitter ; twitter client https://twitter.com/vnought
|
||||||
|
|
||||||
|
:config
|
||||||
|
;;literate
|
||||||
|
(default +bindings +smartparens))
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
~/nextcloud/studium/vorlesungen/SS21/raumfahrtbetrieb/rb-vorbereitung.org
|
||||||
|
~/nextcloud/studium/vorlesungen/SS21/borddatenverarbeitung/bdv-fragenkatalog.org
|
||||||
|
~/nextcloud/studium/vorlesungen/SS21/luftundraumfahrtlabor/lrl-fragenkatalog.org
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
;; -*- no-byte-compile: t; -*-
|
||||||
|
;;; $DOOMDIR/packages.el
|
||||||
|
|
||||||
|
;; To install a package with Doom you must declare them here and run 'doom sync'
|
||||||
|
;; on the command line, then restart Emacs for the changes to take effect -- or
|
||||||
|
;; use 'M-x doom/reload'.
|
||||||
|
|
||||||
|
|
||||||
|
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
|
||||||
|
;(package! some-package)
|
||||||
|
|
||||||
|
;; To install a package directly from a remote git repo, you must specify a
|
||||||
|
;; `:recipe'. You'll find documentation on what `:recipe' accepts here:
|
||||||
|
;; https://github.com/raxod502/straight.el#the-recipe-format
|
||||||
|
;(package! another-package
|
||||||
|
; :recipe (:host github :repo "username/repo"))
|
||||||
|
|
||||||
|
;; If the package you are trying to install does not contain a PACKAGENAME.el
|
||||||
|
;; file, or is located in a subdirectory of the repo, you'll need to specify
|
||||||
|
;; `:files' in the `:recipe':
|
||||||
|
;(package! this-package
|
||||||
|
; :recipe (:host github :repo "username/repo"
|
||||||
|
; :files ("some-file.el" "src/lisp/*.el")))
|
||||||
|
|
||||||
|
;; If you'd like to disable a package included with Doom, you can do so here
|
||||||
|
;; with the `:disable' property:
|
||||||
|
;(package! builtin-package :disable t)
|
||||||
|
|
||||||
|
;; You can override the recipe of a built in package without having to specify
|
||||||
|
;; all the properties for `:recipe'. These will inherit the rest of its recipe
|
||||||
|
;; from Doom or MELPA/ELPA/Emacsmirror:
|
||||||
|
;(package! builtin-package :recipe (:nonrecursive t))
|
||||||
|
;(package! builtin-package-2 :recipe (:repo "myfork/package"))
|
||||||
|
|
||||||
|
;; Specify a `:branch' to install a package from a particular branch or tag.
|
||||||
|
;; This is required for some packages whose default branch isn't 'master' (which
|
||||||
|
;; our package manager can't deal with; see raxod502/straight.el#279)
|
||||||
|
;(package! builtin-package :recipe (:branch "develop"))
|
||||||
|
|
||||||
|
;; Use `:pin' to specify a particular commit to install.
|
||||||
|
;(package! builtin-package :pin "1a2b3c4d5e")
|
||||||
|
|
||||||
|
|
||||||
|
;; Doom's packages are pinned to a specific commit and updated from release to
|
||||||
|
;; release. The `unpin!' macro allows you to unpin single packages...
|
||||||
|
;(unpin! pinned-package)
|
||||||
|
;; ...or multiple packages
|
||||||
|
;(unpin! pinned-package another-pinned-package)
|
||||||
|
;; ...Or *all* packages (NOT RECOMMENDED; will likely break things)
|
||||||
|
;(unpin! t)
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
inputs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
system.hydraAutoUpgrade = {
|
|
||||||
# Only enable if not dirty
|
|
||||||
enable = inputs.self ? rev;
|
|
||||||
dates = "*:0/10"; # Every 10 minutes
|
|
||||||
instance = "http://hydra.julian-mutter.de";
|
|
||||||
project = "dotfiles";
|
|
||||||
jobset = "main";
|
|
||||||
job = "hosts.${config.networking.hostName}";
|
|
||||||
oldFlakeRef = "self";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
# Common config for all hosts
|
|
||||||
{
|
|
||||||
inputs,
|
|
||||||
outputs,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports =
|
|
||||||
[
|
|
||||||
./fish.nix # fish for admin
|
|
||||||
./locale.nix
|
|
||||||
./nix.nix
|
|
||||||
./sops.nix
|
|
||||||
./root.nix
|
|
||||||
./stylix.nix
|
|
||||||
]
|
|
||||||
++ [
|
|
||||||
inputs.home-manager.nixosModules.home-manager
|
|
||||||
]
|
|
||||||
++ (builtins.attrValues outputs.nixosModules);
|
|
||||||
|
|
||||||
# Replaces the (modulesPath + "/installer/scan/not-detected.nix") from default hardware-configuration.nix
|
|
||||||
# Enables non-free firmware
|
|
||||||
hardware.enableRedistributableFirmware = true;
|
|
||||||
|
|
||||||
# Networking
|
|
||||||
networking.networkmanager = {
|
|
||||||
enable = true;
|
|
||||||
plugins = with pkgs; [
|
|
||||||
networkmanager-openconnect
|
|
||||||
];
|
|
||||||
};
|
|
||||||
services.resolved.enable = false;
|
|
||||||
# MDNS Taken by avahi
|
|
||||||
# networking.networkmanager.dns = "none";
|
|
||||||
networking.nameservers = lib.mkDefault [
|
|
||||||
"1.1.1.1"
|
|
||||||
"8.8.8.8"
|
|
||||||
];
|
|
||||||
|
|
||||||
# HM module
|
|
||||||
home-manager.useGlobalPkgs = true; # hm module uses the pkgs of the nixos config
|
|
||||||
home-manager.backupFileExtension = "hm-backup"; # backup conflicting files. So hm activation never fails
|
|
||||||
home-manager.extraSpecialArgs = {
|
|
||||||
inherit inputs outputs;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
programs.fish = {
|
|
||||||
enable = true;
|
|
||||||
vendor = {
|
|
||||||
completions.enable = true;
|
|
||||||
config.enable = true;
|
|
||||||
functions.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
{
|
|
||||||
# Select internationalisation properties.
|
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
|
||||||
|
|
||||||
i18n.extraLocaleSettings = {
|
|
||||||
LC_ADDRESS = "de_DE.UTF-8";
|
|
||||||
LC_IDENTIFICATION = "de_DE.UTF-8";
|
|
||||||
LC_MEASUREMENT = "de_DE.UTF-8";
|
|
||||||
LC_MONETARY = "de_DE.UTF-8";
|
|
||||||
LC_NAME = "de_DE.UTF-8";
|
|
||||||
LC_NUMERIC = "en_US.UTF-8";
|
|
||||||
LC_PAPER = "de_DE.UTF-8";
|
|
||||||
LC_TELEPHONE = "de_DE.UTF-8";
|
|
||||||
LC_TIME = "de_DE.UTF-8";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Keymap
|
|
||||||
services.xserver.xkb = {
|
|
||||||
layout = "de";
|
|
||||||
variant = "";
|
|
||||||
};
|
|
||||||
|
|
||||||
console.keyMap = "de";
|
|
||||||
|
|
||||||
time.timeZone = "Europe/Berlin";
|
|
||||||
}
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
{outputs, ...}: {
|
|
||||||
# Apply overlays
|
|
||||||
nixpkgs = {
|
|
||||||
overlays = builtins.attrValues outputs.overlays;
|
|
||||||
config = {
|
|
||||||
nvidia.acceptLicense = true;
|
|
||||||
allowUnfree = true;
|
|
||||||
allowUnfreePredicate = _: true; # TODO: what is this
|
|
||||||
warn-dirty = false;
|
|
||||||
permittedInsecurePackages = [
|
|
||||||
"olm-3.2.16"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# optimize at every build, slows down builds
|
|
||||||
# better to do optimise.automatic for regular optimising
|
|
||||||
# nix.settings.auto-optimise-store = lib.mkDefault true;
|
|
||||||
nix.settings.experimental-features = [
|
|
||||||
"nix-command"
|
|
||||||
"flakes"
|
|
||||||
"ca-derivations"
|
|
||||||
];
|
|
||||||
# warn-dirty = false;
|
|
||||||
|
|
||||||
nix.gc = {
|
|
||||||
automatic = true;
|
|
||||||
dates = "weekly";
|
|
||||||
options = "--delete-older-than 30d";
|
|
||||||
persistent = true;
|
|
||||||
};
|
|
||||||
nix.optimise = {
|
|
||||||
automatic = true;
|
|
||||||
dates = ["weekly"]; # Optional; allows customizing optimisation schedule
|
|
||||||
persistent = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.nix-ld.enable = true;
|
|
||||||
|
|
||||||
# TODO: is this useful?, what does it do?
|
|
||||||
# nix.settings.flake-registry = ""; # Disable global flake registry
|
|
||||||
# Add each flake input as a registry and nix_path
|
|
||||||
# registry = lib.mapAttrs (_: flake: { inherit flake; }) flakeInputs;
|
|
||||||
# nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs;
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
# Packages needed as root
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
vim
|
|
||||||
htop
|
|
||||||
mc
|
|
||||||
gparted-xhost # needs to be installed as system package so it can be actually opened
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
pwd,
|
|
||||||
inputs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
isEd25519 = k: k.type == "ed25519";
|
|
||||||
getKeyPath = k: k.path;
|
|
||||||
keys = builtins.filter isEd25519 config.services.openssh.hostKeys;
|
|
||||||
in {
|
|
||||||
imports = [inputs.sops-nix.nixosModules.sops];
|
|
||||||
|
|
||||||
sops.age = {
|
|
||||||
sshKeyPaths = map getKeyPath keys;
|
|
||||||
|
|
||||||
# TODO: remove? only rely on ssh or pgp keys (e.g. ubikey like misterio is using!!!)
|
|
||||||
# keyFile = "/home/julian/.config/sops/age/keys.txt";
|
|
||||||
# Generate key if none of the above worked. With this, building will still work, just without secrets
|
|
||||||
generateKey = false; # TODO: building should not work without secrets!?
|
|
||||||
};
|
|
||||||
|
|
||||||
sops.defaultSopsFile = "${pwd}/hosts/secrets-common.yaml";
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [inputs.stylix.nixosModules.stylix];
|
|
||||||
|
|
||||||
stylix.enable = true;
|
|
||||||
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml";
|
|
||||||
|
|
||||||
stylix.fonts = {
|
|
||||||
serif = {
|
|
||||||
package = pkgs.dejavu_fonts;
|
|
||||||
name = "DejaVu Serif";
|
|
||||||
};
|
|
||||||
|
|
||||||
sansSerif = {
|
|
||||||
package = pkgs.dejavu_fonts;
|
|
||||||
name = "DejaVu Sans";
|
|
||||||
};
|
|
||||||
|
|
||||||
monospace = {
|
|
||||||
package = pkgs.dejavu_fonts;
|
|
||||||
name = "DejaVu Sans Mono";
|
|
||||||
};
|
|
||||||
|
|
||||||
emoji = {
|
|
||||||
package = pkgs.noto-fonts-color-emoji;
|
|
||||||
name = "Noto Color Emoji";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
# Make programs like nextcloud client access saved passwords
|
|
||||||
services.gnome.gnome-keyring.enable = true;
|
|
||||||
|
|
||||||
programs.seahorse.enable = true;
|
|
||||||
programs.ssh.askPassword = lib.mkForce "${pkgs.seahorse}/libexec/seahorse/ssh-askpass"; # Solve conflicting definition in seahorse and plasma6
|
|
||||||
|
|
||||||
# Make authentication work for e.g. gparted
|
|
||||||
security.polkit.enable = true;
|
|
||||||
systemd = {
|
|
||||||
user.services.polkit-gnome-authentication-agent-1 = {
|
|
||||||
description = "polkit-gnome-authentication-agent-1";
|
|
||||||
wantedBy = ["graphical-session.target"];
|
|
||||||
wants = ["graphical-session.target"];
|
|
||||||
after = ["graphical-session.target"];
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "simple";
|
|
||||||
ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
|
|
||||||
Restart = "on-failure";
|
|
||||||
RestartSec = 1;
|
|
||||||
TimeoutStopSec = 10;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
# MDNS on local network
|
|
||||||
services.avahi = {
|
|
||||||
enable = true;
|
|
||||||
nssmdns4 = true;
|
|
||||||
nssmdns6 = true;
|
|
||||||
publish.enable = true;
|
|
||||||
publish.addresses = true;
|
|
||||||
ipv4 = true;
|
|
||||||
ipv6 = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
outputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
# Setup binary caches
|
|
||||||
nix.settings = {
|
|
||||||
substituters = [
|
|
||||||
"https://nix-community.cachix.org"
|
|
||||||
"https://cache.nixos.org/"
|
|
||||||
"https://hyprland.cachix.org"
|
|
||||||
# "http://binarycache.julian-mutter.de"
|
|
||||||
"https://devenv.cachix.org"
|
|
||||||
"https://noctalia.cachix.org"
|
|
||||||
];
|
|
||||||
trusted-public-keys = [
|
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
|
||||||
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
|
||||||
"binarycache.julian-mutter.de:oJ67uRFwRhNPKL58CHzy3QQLv38Kx7OA1K+6xlEPu7E="
|
|
||||||
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
|
||||||
"devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="
|
|
||||||
"noctalia.cachix.org-1:pCOR47nnMEo5thcxNDtzWpOxNFQsBRglJzxWPp3dkU4="
|
|
||||||
];
|
|
||||||
|
|
||||||
trusted-users = [
|
|
||||||
"root"
|
|
||||||
"@wheel"
|
|
||||||
]; # needed for devenv to add custom caches
|
|
||||||
|
|
||||||
# Ensure we can still build when missing-server is not accessible
|
|
||||||
fallback = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
{
|
|
||||||
# Bootloader
|
|
||||||
# Use this for simple nix boot menu, if no dual boot required
|
|
||||||
boot.loader.systemd-boot.enable = true;
|
|
||||||
boot.loader.systemd-boot.configurationLimit = 10;
|
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
|
||||||
|
|
||||||
# https://github.com/NixOS/nixpkgs/blob/c32c39d6f3b1fe6514598fa40ad2cf9ce22c3fb7/nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix#L66
|
|
||||||
boot.loader.systemd-boot.editor = false;
|
|
||||||
|
|
||||||
boot.supportedFilesystems = [
|
|
||||||
"btrfs"
|
|
||||||
"ntfs"
|
|
||||||
"nfs"
|
|
||||||
"cifs"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
virtualisation.docker = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
services.flatpak.enable = true;
|
|
||||||
xdg.portal.enable = true;
|
|
||||||
xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-gtk];
|
|
||||||
xdg.portal.config.common.default = "*"; # Use first portal implementation found
|
|
||||||
}
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
programs.gamemode = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
general = {
|
|
||||||
softrealtime = "auto";
|
|
||||||
inhibit_screensaver = 1;
|
|
||||||
renice = 5;
|
|
||||||
};
|
|
||||||
# gpu = {
|
|
||||||
# apply_gpu_optimisations = "accept-responsibility";
|
|
||||||
# gpu_device = 1;
|
|
||||||
# amd_performance_level = "high";
|
|
||||||
# };
|
|
||||||
custom = {
|
|
||||||
start = "${pkgs.libnotify}/bin/notify-send 'GameMode started'";
|
|
||||||
end = "${pkgs.libnotify}/bin/notify-send 'GameMode ended'";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
services.xserver.displayManager.gdm = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# unlock GPG keyring on login
|
|
||||||
security.pam.services.gdm.enableGnomeKeyring = true;
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
users.extraUsers.greeter = {
|
|
||||||
# For caching
|
|
||||||
home = "/tmp/greeter-home";
|
|
||||||
createHome = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.regreet = {
|
|
||||||
enable = true;
|
|
||||||
cageArgs = [
|
|
||||||
"-s"
|
|
||||||
"-m"
|
|
||||||
"last"
|
|
||||||
]; # multimonitor use last monitor
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
services.xserver.windowManager.i3.enable = true;
|
|
||||||
services.xserver.windowManager.i3.package = pkgs.i3-gaps;
|
|
||||||
services.displayManager.defaultSession = "none+i3";
|
|
||||||
|
|
||||||
programs.xss-lock = {
|
|
||||||
# responds to "loginctl lock-session" via dbus
|
|
||||||
enable = true;
|
|
||||||
lockerCommand = "${pkgs.i3lock}/bin/i3lock --ignore-empty-password --color=000000";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
security.krb5.enable = true;
|
|
||||||
security.krb5.settings = {
|
|
||||||
# domain_realm = {
|
|
||||||
# ".julian-mutter.de" = "julian-mutter.de";
|
|
||||||
# "julian-mutter.de" = "julian-mutter.de";
|
|
||||||
# };
|
|
||||||
libdefaults = {
|
|
||||||
default_realm = "julian-mutter.de";
|
|
||||||
# dns_lookup_realm = true;
|
|
||||||
# dns_lookup_kdc = true;
|
|
||||||
# ticket_lifetime = "24h";
|
|
||||||
# renew_lifetime = "7d";
|
|
||||||
};
|
|
||||||
realms = {
|
|
||||||
"julian-mutter.de" = {
|
|
||||||
kdc = ["kerberos.julian-mutter.de"];
|
|
||||||
admin_server = "kerberos-admin.julian-mutter.de";
|
|
||||||
default_domain = "julian-mutter.de";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
{
|
|
||||||
outputs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
hosts = lib.attrNames outputs.nixosConfigurations;
|
|
||||||
in {
|
|
||||||
services.openssh = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
# Harden
|
|
||||||
PasswordAuthentication = false;
|
|
||||||
PermitRootLogin = "no";
|
|
||||||
|
|
||||||
# TODO: what does this do
|
|
||||||
# Let WAYLAND_DISPLAY be forwarded
|
|
||||||
# AcceptEnv = "WAYLAND_DISPLAY";
|
|
||||||
X11Forwarding = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
hostKeys = [
|
|
||||||
{
|
|
||||||
path = "/etc/ssh/ssh_host_ed25519_key";
|
|
||||||
type = "ed25519";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# TODO: is automatic known hosts file even necessary?
|
|
||||||
# programs.ssh = {
|
|
||||||
# # Each hosts public key
|
|
||||||
# knownHosts = lib.genAttrs hosts (hostname: {
|
|
||||||
# publicKeyFile = ../../${hostname}/ssh_host_ed25519_key.pub;
|
|
||||||
# extraHostNames =
|
|
||||||
# [
|
|
||||||
# # "${hostname}.m7.rs"
|
|
||||||
# ]
|
|
||||||
# ++
|
|
||||||
# # Alias for localhost if it's the same host
|
|
||||||
# (lib.optional (hostname == config.networking.hostName) "localhost")
|
|
||||||
# # Alias to m7.rs and git.m7.rs if it's alcyone
|
|
||||||
# ++ (lib.optionals (hostname == "alcyone") [
|
|
||||||
# "m7.rs"
|
|
||||||
# "git.m7.rs"
|
|
||||||
# ]);
|
|
||||||
# });
|
|
||||||
# };
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
shared-mime-info # extended mimetype support
|
|
||||||
lxmenu-data # open with "Installed Applications"
|
|
||||||
pcmanfm
|
|
||||||
];
|
|
||||||
|
|
||||||
services.gvfs.enable = true; # Mount, trash, and other functionalities
|
|
||||||
}
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
{
|
|
||||||
security.rtkit.enable = true;
|
|
||||||
services.pulseaudio.enable = false;
|
|
||||||
services.pipewire = {
|
|
||||||
enable = true;
|
|
||||||
wireplumber.enable = true;
|
|
||||||
alsa.enable = true;
|
|
||||||
alsa.support32Bit = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
jack.enable = true;
|
|
||||||
extraConfig.pipewire = {
|
|
||||||
"99-no-bell" = {
|
|
||||||
# Disable bell sound
|
|
||||||
"context.properties" = {
|
|
||||||
"module.x11.bell" = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"10-increase-buffer" = {
|
|
||||||
"context.properties" = {
|
|
||||||
"default.clock.rate" = 48000;
|
|
||||||
"default.clock.quantum" = 1024;
|
|
||||||
"default.clock.min-quantum" = 1024;
|
|
||||||
"default.clock.max-quantum" = 2048;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
{config, ...}: let
|
|
||||||
dockerEnabled = config.virtualisation.docker.enable;
|
|
||||||
in {
|
|
||||||
virtualisation.podman = {
|
|
||||||
enable = true;
|
|
||||||
dockerCompat = !dockerEnabled;
|
|
||||||
dockerSocket.enable = !dockerEnabled;
|
|
||||||
defaultNetwork.settings.dns_enabled = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
# Set location used by redshift
|
|
||||||
location.provider = "manual";
|
|
||||||
location.latitude = 47.92;
|
|
||||||
location.longitude = 10.12;
|
|
||||||
services.redshift.enable = true;
|
|
||||||
}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
{
|
|
||||||
nix.distributedBuilds = true;
|
|
||||||
nix.settings.builders-use-substitutes = true;
|
|
||||||
|
|
||||||
nix.buildMachines = [
|
|
||||||
{
|
|
||||||
hostName = "builder.julian-mutter.de";
|
|
||||||
protocol = "ssh";
|
|
||||||
sshUser = "nix";
|
|
||||||
systems = [
|
|
||||||
"x86_64-linux"
|
|
||||||
"aarch64-linux"
|
|
||||||
];
|
|
||||||
maxJobs = 4;
|
|
||||||
speedFactor = 3;
|
|
||||||
supportedFeatures = [
|
|
||||||
"nixos-test"
|
|
||||||
"benchmark"
|
|
||||||
"big-parallel"
|
|
||||||
"kvm"
|
|
||||||
];
|
|
||||||
mandatoryFeatures = [];
|
|
||||||
}
|
|
||||||
# {
|
|
||||||
# hostName = "localhost";
|
|
||||||
# protocol = null;
|
|
||||||
# systems = [
|
|
||||||
# "x86_64-linux"
|
|
||||||
# ];
|
|
||||||
# maxJobs = 4;
|
|
||||||
# speedFactor = 1;
|
|
||||||
# }
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
programs.thunar.enable = true;
|
|
||||||
programs.xfconf.enable = true; # Persist saved preferences
|
|
||||||
programs.thunar.plugins = with pkgs.xfce; [
|
|
||||||
thunar-archive-plugin
|
|
||||||
thunar-volman
|
|
||||||
thunar-media-tags-plugin
|
|
||||||
];
|
|
||||||
services.gvfs.enable = true; # Mount, trash, and other functionalities
|
|
||||||
services.tumbler.enable = true; # Thumbnail support for images
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
virtualisation.virtualbox.host.enable = true;
|
|
||||||
# virtualisation.virtualbox.host.enableExtensionPack = true;
|
|
||||||
# virtualisation.virtualbox.guest.enable = true;
|
|
||||||
# virtualisation.virtualbox.guest.x11 = true;
|
|
||||||
users.extraGroups.vboxusers.members = ["julian"];
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
networking.wg-quick.interfaces = {
|
|
||||||
julian = {
|
|
||||||
configFile = "/etc/wireguard/julian.conf";
|
|
||||||
autostart = true; # This interface is started on boot
|
|
||||||
};
|
|
||||||
comu = {
|
|
||||||
configFile = "/etc/wireguard/comu.conf";
|
|
||||||
autostart = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
programs.wireshark = {
|
|
||||||
enable = true;
|
|
||||||
dumpcap.enable = true;
|
|
||||||
usbmon.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
users.users.julian.extraGroups = ["wireshark"];
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
services.xserver = {
|
|
||||||
enable = true;
|
|
||||||
wacom.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
{
|
|
||||||
pwd,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
ifTheyExist = groups: builtins.filter (group: builtins.hasAttr group config.users.groups) groups;
|
|
||||||
in {
|
|
||||||
users.mutableUsers = false;
|
|
||||||
users.users.julian = {
|
|
||||||
description = "Julian";
|
|
||||||
group = "julian";
|
|
||||||
isNormalUser = true;
|
|
||||||
uid = 1000;
|
|
||||||
shell = pkgs.fish;
|
|
||||||
extraGroups = ifTheyExist [
|
|
||||||
"networkmanager"
|
|
||||||
"wheel"
|
|
||||||
"audio"
|
|
||||||
"realtime"
|
|
||||||
"rtkit"
|
|
||||||
"network"
|
|
||||||
"video"
|
|
||||||
"podman"
|
|
||||||
"docker"
|
|
||||||
"git"
|
|
||||||
"gamemode"
|
|
||||||
"dialout"
|
|
||||||
];
|
|
||||||
|
|
||||||
openssh.authorizedKeys.keys = lib.splitString "\n" (
|
|
||||||
builtins.readFile ./ssh.pub
|
|
||||||
);
|
|
||||||
# hashedPasswordFile = config.sops.secrets.julian-password.path;
|
|
||||||
hashedPassword = "$y$j9T$N33kLJQbV8soUoCbDkpwA1$r/yahJDgOPo4GGOrAi6BUG5zLTzmaBrA5NQ4nno561A";
|
|
||||||
packages = [pkgs.home-manager];
|
|
||||||
};
|
|
||||||
users.groups.julian = {
|
|
||||||
gid = 1000;
|
|
||||||
};
|
|
||||||
|
|
||||||
sops.secrets.julian-password = {
|
|
||||||
sopsFile = "${pwd}/hosts/secrets-common.yaml";
|
|
||||||
neededForUsers = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager.users.julian = import "${pwd}/homes/julian/${config.networking.hostName}.nix";
|
|
||||||
|
|
||||||
security.pam.services.swaylock = {}; # Make swaylock unlocking work
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFjSZYdoF/51F+ykcBAYVCzCPTF5EEigWBL1APiR0h+H
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
ifTheyExist = groups: builtins.filter (group: builtins.hasAttr group config.users.groups) groups;
|
|
||||||
in {
|
|
||||||
users.mutableUsers = false;
|
|
||||||
users.users.wolfi = {
|
|
||||||
description = "Wolfi";
|
|
||||||
group = "wolfi";
|
|
||||||
isNormalUser = true;
|
|
||||||
shell = pkgs.fish;
|
|
||||||
extraGroups = ifTheyExist [
|
|
||||||
"networkmanager"
|
|
||||||
"wheel"
|
|
||||||
"audio"
|
|
||||||
"network"
|
|
||||||
"video"
|
|
||||||
"podman"
|
|
||||||
"docker"
|
|
||||||
"git"
|
|
||||||
"gamemode"
|
|
||||||
];
|
|
||||||
|
|
||||||
hashedPassword = "$y$j9T$ifzWjoZaRtPUOOfMYnbJ20$uFOO1EyDApL52vRUicZYgupaTA/a6sGNUj3imZ/lcb6";
|
|
||||||
packages = [pkgs.home-manager];
|
|
||||||
};
|
|
||||||
users.groups.wolfi = {};
|
|
||||||
}
|
|
||||||
Generated
-1044
File diff suppressed because it is too large
Load Diff
@@ -1,168 +0,0 @@
|
|||||||
{
|
|
||||||
description = "Home Manager configuration of julian";
|
|
||||||
|
|
||||||
inputs = {
|
|
||||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-26.05";
|
|
||||||
systems.url = "github:nix-systems/default-linux";
|
|
||||||
nixos-hardware.url = "github:nixos/nixos-hardware";
|
|
||||||
impermanence.url = "github:nix-community/impermanence";
|
|
||||||
deploy-rs.url = "github:serokell/deploy-rs";
|
|
||||||
|
|
||||||
noctalia = {
|
|
||||||
url = "github:noctalia-dev/noctalia-shell";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
stylix = {
|
|
||||||
url = "github:nix-community/stylix/release-26.05";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
nixos-generators = {
|
|
||||||
url = "github:nix-community/nixos-generators";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager = {
|
|
||||||
url = "github:nix-community/home-manager/release-26.05";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
nix-index-database = {
|
|
||||||
url = "github:nix-community/nix-index-database";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
sops-nix = {
|
|
||||||
url = "github:Mic92/sops-nix";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
nix-gl = {
|
|
||||||
url = "github:nix-community/nixgl";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
disko = {
|
|
||||||
url = "github:nix-community/disko";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Various flakes
|
|
||||||
yazi-flavors = {
|
|
||||||
url = "github:yazi-rs/flavors";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
nixvim = {
|
|
||||||
url = "github:nix-community/nixvim/nixos-26.05";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
nix-matlab = {
|
|
||||||
url = "gitlab:doronbehar/nix-matlab";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
# My projects
|
|
||||||
sheet-organizer = {
|
|
||||||
url = "git+https://gitlab.julian-mutter.de/julian/sheet-organizer";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
music-reader = {
|
|
||||||
url = "git+https://gitlab.julian-mutter.de/julian/music-reader";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
outputs = {
|
|
||||||
self,
|
|
||||||
nixpkgs,
|
|
||||||
home-manager,
|
|
||||||
systems,
|
|
||||||
...
|
|
||||||
} @ inputs: let
|
|
||||||
inherit (self) outputs;
|
|
||||||
lib = nixpkgs.lib // home-manager.lib;
|
|
||||||
forEachSystem = f: lib.genAttrs (import systems) (system: f pkgsFor.${system});
|
|
||||||
pkgsFor = lib.genAttrs (import systems) (
|
|
||||||
system:
|
|
||||||
import nixpkgs {
|
|
||||||
inherit system;
|
|
||||||
config.allowUnfree = true;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
in {
|
|
||||||
inherit lib;
|
|
||||||
|
|
||||||
nixosModules = import ./modules/nixos;
|
|
||||||
homeManagerModules = import ./modules/home-manager;
|
|
||||||
|
|
||||||
overlays = import ./overlays {inherit inputs outputs;};
|
|
||||||
|
|
||||||
packages = forEachSystem (pkgs: import ./packages {inherit pkgs;});
|
|
||||||
devShells = forEachSystem (pkgs: import ./shell.nix {inherit pkgs;});
|
|
||||||
formatter = forEachSystem (pkgs: pkgs.alejandra); # nix fmt *
|
|
||||||
|
|
||||||
nixosConfigurations = {
|
|
||||||
# Main laptop
|
|
||||||
aspi = lib.nixosSystem {
|
|
||||||
modules = [
|
|
||||||
./hosts/aspi
|
|
||||||
];
|
|
||||||
specialArgs = {
|
|
||||||
inherit inputs outputs;
|
|
||||||
pwd = "${self}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
kardorf = lib.nixosSystem {
|
|
||||||
modules = [./hosts/kardorf];
|
|
||||||
specialArgs = {
|
|
||||||
inherit inputs outputs;
|
|
||||||
pwd = "${self}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
builder = lib.nixosSystem {
|
|
||||||
modules = [./hosts/builder];
|
|
||||||
specialArgs = {
|
|
||||||
inherit inputs outputs;
|
|
||||||
pwd = "${self}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Standalone HM
|
|
||||||
homeConfigurations = {
|
|
||||||
"julian@v3ms" = lib.homeManagerConfiguration {
|
|
||||||
modules = [
|
|
||||||
./homes/julian/v3ms
|
|
||||||
./homes/julian/hm-standalone-config.nix
|
|
||||||
];
|
|
||||||
pkgs = pkgsFor.x86_64-linux;
|
|
||||||
extraSpecialArgs = {
|
|
||||||
inherit inputs outputs;
|
|
||||||
pwd = "${self}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"julian@quickstart" = lib.homeManagerConfiguration {
|
|
||||||
modules = [
|
|
||||||
./homes/julian/quickstart.nix
|
|
||||||
./homes/julian/hm-standalone-config.nix
|
|
||||||
];
|
|
||||||
pkgs = pkgsFor.x86_64-linux;
|
|
||||||
extraSpecialArgs = {
|
|
||||||
inherit inputs outputs;
|
|
||||||
pwd = "${self}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# deploy-rs node configuration
|
|
||||||
deploy.nodes = {
|
|
||||||
builder = {
|
|
||||||
hostname = "builder.julian-mutter.de";
|
|
||||||
profiles.system = {
|
|
||||||
sshUser = "root";
|
|
||||||
user = "root";
|
|
||||||
path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.builder;
|
|
||||||
remoteBuild = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
{
|
|
||||||
imports = [
|
|
||||||
./global
|
|
||||||
|
|
||||||
./features/fish
|
|
||||||
./features/direnv
|
|
||||||
./features/topgrade
|
|
||||||
./features/neovim
|
|
||||||
./features/ghostty
|
|
||||||
./features/wezterm
|
|
||||||
./features/alacritty
|
|
||||||
./features/yazi
|
|
||||||
./features/emacs
|
|
||||||
./features/tmux
|
|
||||||
./features/qt-distrobox
|
|
||||||
|
|
||||||
./features/hyprland
|
|
||||||
|
|
||||||
./features/suites/cli
|
|
||||||
./features/suites/desktop
|
|
||||||
./features/suites/development
|
|
||||||
];
|
|
||||||
|
|
||||||
hostName = "aspi";
|
|
||||||
is-nixos = true;
|
|
||||||
terminal = "alacritty";
|
|
||||||
|
|
||||||
# ------- ----------
|
|
||||||
# | eDP-1 | | HDMI-A-1 |
|
|
||||||
# ------- ----------
|
|
||||||
monitors = [
|
|
||||||
{
|
|
||||||
name = "HDMI-A-1";
|
|
||||||
# width = 1680;
|
|
||||||
# height = 1050;
|
|
||||||
workspaces = [
|
|
||||||
"1"
|
|
||||||
"2"
|
|
||||||
"3"
|
|
||||||
"4"
|
|
||||||
"5"
|
|
||||||
];
|
|
||||||
primary = true;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "eDP-1";
|
|
||||||
# width = 1680;
|
|
||||||
# height = 1050;
|
|
||||||
workspaces = [
|
|
||||||
"6"
|
|
||||||
"7"
|
|
||||||
"8"
|
|
||||||
"9"
|
|
||||||
"10"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
programs.alacritty = {
|
|
||||||
enable = true;
|
|
||||||
settings = {};
|
|
||||||
theme = "smoooooth";
|
|
||||||
};
|
|
||||||
|
|
||||||
home.sessionVariables.TERMINAL = lib.mkIf (config.terminal == "alacritty") "alacritty";
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
programs.direnv = {
|
|
||||||
enable = true;
|
|
||||||
nix-direnv.enable = true;
|
|
||||||
mise.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,102 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
doomRepoUrl = "https://github.com/doomemacs/doomemacs";
|
|
||||||
configRepoUrl = "https://gitlab.julian-mutter.de/julian/emacs-config";
|
|
||||||
in {
|
|
||||||
home.sessionPath = ["/home/julian/.config/emacs/bin"];
|
|
||||||
|
|
||||||
home.packages = with pkgs;
|
|
||||||
[
|
|
||||||
binutils # native-comp needs 'as', provided by this
|
|
||||||
|
|
||||||
## Doom dependencies
|
|
||||||
git
|
|
||||||
(ripgrep.override {withPCRE2 = true;})
|
|
||||||
|
|
||||||
## Optional dependencies
|
|
||||||
fd # faster projectile indexing
|
|
||||||
imagemagick # for image-dired
|
|
||||||
zstd # for undo-fu-session/undo-tree compression
|
|
||||||
|
|
||||||
## Module dependencies
|
|
||||||
(aspellWithDicts (
|
|
||||||
ds:
|
|
||||||
with ds; [
|
|
||||||
en
|
|
||||||
en-computers
|
|
||||||
en-science
|
|
||||||
de
|
|
||||||
]
|
|
||||||
))
|
|
||||||
|
|
||||||
hunspell
|
|
||||||
hunspellDicts.de_DE
|
|
||||||
hunspellDicts.en_US
|
|
||||||
|
|
||||||
sqlite
|
|
||||||
|
|
||||||
# Code formatters for use with doom emacs
|
|
||||||
nixfmt # nix
|
|
||||||
alejandra # nix
|
|
||||||
|
|
||||||
nixd # nix lsp
|
|
||||||
dockfmt # docker
|
|
||||||
google-java-format # java
|
|
||||||
black # python
|
|
||||||
rustfmt # rust
|
|
||||||
shfmt
|
|
||||||
pyright
|
|
||||||
clang-tools # c++ lsp etc
|
|
||||||
ccls # alternative c++ lsp
|
|
||||||
cmake
|
|
||||||
bear
|
|
||||||
cmake-language-server
|
|
||||||
|
|
||||||
# qt6.full # qt tools and libs including lsp
|
|
||||||
tinymist # typst lsp
|
|
||||||
|
|
||||||
ltex-ls # latex languagetool
|
|
||||||
|
|
||||||
graphviz
|
|
||||||
# Lsps for use with doom emacs
|
|
||||||
# neocmakelsp # cmake
|
|
||||||
|
|
||||||
emacs-all-the-icons-fonts
|
|
||||||
frajul.typst-languagetool
|
|
||||||
ltex-ls-plus
|
|
||||||
|
|
||||||
(texlive.combine {
|
|
||||||
inherit
|
|
||||||
(texlive)
|
|
||||||
scheme-basic
|
|
||||||
# for rendering latex in inkscape
|
|
||||||
standalone
|
|
||||||
amsmath
|
|
||||||
preview
|
|
||||||
# needed for org mode preview
|
|
||||||
dvisvgm
|
|
||||||
dvipng # for preview and export as html
|
|
||||||
wrapfig
|
|
||||||
# amsmath
|
|
||||||
ulem
|
|
||||||
hyperref
|
|
||||||
capt-of
|
|
||||||
;
|
|
||||||
})
|
|
||||||
]
|
|
||||||
++ lib.optional config.is-nixos emacs;
|
|
||||||
|
|
||||||
home.activation.installDoomEmacs = lib.hm.dag.entryAfter ["writeBoundary"] ''
|
|
||||||
if [ ! -d "/home/julian/.config/emacs" ]; then
|
|
||||||
$DRY_RUN_CMD ${pkgs.git}/bin/git clone --depth=1 --single-branch "${doomRepoUrl}" "/home/julian/.config/emacs"
|
|
||||||
fi
|
|
||||||
if [ ! -d "/home/julian/.config/doom" ]; then
|
|
||||||
$DRY_RUN_CMD ${pkgs.git}/bin/git clone "${configRepoUrl}" "/home/julian/.config/doom"
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; {
|
|
||||||
home.file = {
|
|
||||||
# ".config/starship.toml".source = ./starship.toml;
|
|
||||||
".config/fish/conf.d/last-working-dir.fish".source = ./last-working-dir.fish;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
starship
|
|
||||||
lazygit
|
|
||||||
];
|
|
||||||
|
|
||||||
home.shellAliases = {
|
|
||||||
g = "lazygit";
|
|
||||||
ls = "ls --color";
|
|
||||||
la = "ls -Alh --color";
|
|
||||||
grep = "grep --color";
|
|
||||||
conf = "edit-config";
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.starship = {
|
|
||||||
enable = true;
|
|
||||||
enableFishIntegration = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.zoxide = {
|
|
||||||
enable = true;
|
|
||||||
enableFishIntegration = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.fish = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
interactiveShellInit = "set fish_greeting"; # Disable default greeting
|
|
||||||
|
|
||||||
functions = {
|
|
||||||
mkcd = ''
|
|
||||||
mkdir $argv
|
|
||||||
cd $argv
|
|
||||||
'';
|
|
||||||
run = ''
|
|
||||||
nix run --impure nixpkgs#"$argv[1]" -- $argv[2..-1]
|
|
||||||
'';
|
|
||||||
shell = ''
|
|
||||||
set args
|
|
||||||
for arg in $argv
|
|
||||||
set args $args nixpkgs#$arg
|
|
||||||
end
|
|
||||||
nix shell --impure $args
|
|
||||||
'';
|
|
||||||
fish_user_key_bindings = ''
|
|
||||||
bind ctrl-space 'zi; commandline -f repaint'
|
|
||||||
bind -M insert ctrl-space 'zi; commandline -f repaint'
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
function lwd
|
|
||||||
cd $LAST_WORKING_DIR
|
|
||||||
end
|
|
||||||
|
|
||||||
function __onpwd --on-variable PWD
|
|
||||||
set --universal LAST_WORKING_DIR $PWD
|
|
||||||
end
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
# newline between shell prompts
|
|
||||||
add_newline = false
|
|
||||||
#format = "$all$directory$character"
|
|
||||||
|
|
||||||
[line_break]
|
|
||||||
disabled = true
|
|
||||||
|
|
||||||
[directory]
|
|
||||||
fish_style_pwd_dir_length = 1
|
|
||||||
|
|
||||||
[status]
|
|
||||||
map_symbol = true
|
|
||||||
format = '[$symbol$status $common_meaning$signal_name$maybe_int]($style) '
|
|
||||||
disabled = false
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; {
|
|
||||||
fonts.fontconfig.enable = true; # required to autoload fonts from packages
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
nerd-fonts.fira-code
|
|
||||||
nerd-fonts.jetbrains-mono
|
|
||||||
|
|
||||||
font-awesome
|
|
||||||
dejavu_fonts
|
|
||||||
noto-fonts
|
|
||||||
noto-fonts-cjk-sans
|
|
||||||
noto-fonts-color-emoji
|
|
||||||
liberation_ttf
|
|
||||||
fira-code
|
|
||||||
fira-code-symbols
|
|
||||||
source-code-pro
|
|
||||||
source-sans
|
|
||||||
roboto
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
services.gammastep = {
|
|
||||||
enable = true;
|
|
||||||
provider = "geoclue2";
|
|
||||||
temperature = {
|
|
||||||
day = 6000;
|
|
||||||
night = 4600;
|
|
||||||
};
|
|
||||||
settings = {
|
|
||||||
general.adjustment-method = "wayland";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
programs.ghostty = {
|
|
||||||
enable = true;
|
|
||||||
enableFishIntegration = true;
|
|
||||||
settings = {
|
|
||||||
# theme = "catppuccin-mocha";
|
|
||||||
font-size = 12;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home.sessionVariables.TERMINAL = lib.mkIf (config.terminal == "ghostty") "ghostty";
|
|
||||||
}
|
|
||||||
@@ -1,149 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
# Apply lib.mkDefault to a whole attrset recursively, used for the noctalia config
|
|
||||||
mkDefaultsRec = value:
|
|
||||||
if builtins.isAttrs value
|
|
||||||
then lib.mapAttrs (_: mkDefaultsRec) value
|
|
||||||
else if builtins.isList value
|
|
||||||
then map mkDefaultsRec value
|
|
||||||
else lib.mkDefault value;
|
|
||||||
in {
|
|
||||||
imports = [
|
|
||||||
# inputs.hyprland.homeManagerModules.default
|
|
||||||
# ./waybar
|
|
||||||
# ./wofi
|
|
||||||
# ./mako
|
|
||||||
# ./hyprlock
|
|
||||||
./wlogout
|
|
||||||
# ../gammastep
|
|
||||||
|
|
||||||
# ./swayidle.nix
|
|
||||||
./swaylock.nix
|
|
||||||
./waypipe.nix
|
|
||||||
|
|
||||||
# ./hyprbars.nix
|
|
||||||
inputs.noctalia.homeModules.default
|
|
||||||
];
|
|
||||||
|
|
||||||
xdg.portal = {
|
|
||||||
extraPortals = [pkgs.xdg-desktop-portal-wlr];
|
|
||||||
config.hyprland = {
|
|
||||||
default = [
|
|
||||||
"wlr"
|
|
||||||
"gtk"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home.pointerCursor = {
|
|
||||||
hyprcursor.enable = true;
|
|
||||||
package = pkgs.bibata-cursors;
|
|
||||||
name = "Bibata-Modern-Classic";
|
|
||||||
size = 24;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.imv.enable = true; # TODO: what is that
|
|
||||||
|
|
||||||
programs.noctalia-shell = {
|
|
||||||
enable = true;
|
|
||||||
# noctalia-shell ipc call state all | jq .settings | xclip
|
|
||||||
# mkDefaultsRec used so that stylix can overwrite style options
|
|
||||||
settings = mkDefaultsRec (builtins.fromJSON (builtins.readFile ./noctalia.json));
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
hyprpicker
|
|
||||||
hyprcursor
|
|
||||||
brightnessctl
|
|
||||||
playerctl
|
|
||||||
frajul.hyprshot-gui
|
|
||||||
frajul.wl-ocr
|
|
||||||
|
|
||||||
wf-recorder
|
|
||||||
wl-clipboard
|
|
||||||
|
|
||||||
(pkgs.writeShellScriptBin "toggle-screen-mirroring" (
|
|
||||||
builtins.readFile ./toggle-screen-mirroring.sh
|
|
||||||
))
|
|
||||||
|
|
||||||
(pkgs.writeShellScriptBin "correct-workspace-locations" (
|
|
||||||
lib.concatStringsSep "\n" (
|
|
||||||
builtins.concatLists (
|
|
||||||
map (
|
|
||||||
monitor:
|
|
||||||
map (ws: "hyprctl dispatch 'hl.dsp.workspace.move({workspace=\"${ws}\", monitor=\"${monitor.name}\"})'") monitor.workspaces
|
|
||||||
)
|
|
||||||
config.monitors
|
|
||||||
)
|
|
||||||
)
|
|
||||||
))
|
|
||||||
];
|
|
||||||
|
|
||||||
services.cliphist = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.sessionVariables = {
|
|
||||||
MOZ_ENABLE_WAYLAND = 1;
|
|
||||||
QT_QPA_PLATFORM = "wayland";
|
|
||||||
LIBSEAT_BACKEND = "logind";
|
|
||||||
};
|
|
||||||
|
|
||||||
services.network-manager-applet.enable = true;
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
configType = "lua";
|
|
||||||
extraConfig =
|
|
||||||
# Variables controllable by nix
|
|
||||||
''
|
|
||||||
-- Nix controlled variables
|
|
||||||
local terminal = "${config.terminal}"
|
|
||||||
local fileManager = "pcmanfm"
|
|
||||||
-- local menu = "wofi --show drun,run"
|
|
||||||
local menu = "noctalia-shell ipc call launcher toggle"
|
|
||||||
local calculator = "qalculate-gtk"
|
|
||||||
local browser = "firefox"
|
|
||||||
local editor = "emacs"
|
|
||||||
''
|
|
||||||
+ "-- Main config from `hyprland.lua`\n"
|
|
||||||
+ builtins.readFile ./hyprland.lua
|
|
||||||
+ "-- Assign workspaces to monitors\n"
|
|
||||||
+ lib.concatStringsSep "\n" (
|
|
||||||
builtins.concatLists (
|
|
||||||
map (
|
|
||||||
monitor:
|
|
||||||
map (ws: "hl.workspace_rule({ workspace = \"${ws}\", monitor = \"${monitor.name}\"})") monitor.workspaces
|
|
||||||
)
|
|
||||||
config.monitors
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
systemd = {
|
|
||||||
enable = true;
|
|
||||||
# Same as default, but stop graphical-session too
|
|
||||||
extraCommands = lib.mkBefore [
|
|
||||||
"systemctl --user stop graphical-session.target"
|
|
||||||
"systemctl --user start hyprland-session.target"
|
|
||||||
];
|
|
||||||
variables = [
|
|
||||||
"DISPLAY"
|
|
||||||
"HYPRLAND_INSTANCE_SIGNATURE"
|
|
||||||
"WAYLAND_DISPLAY"
|
|
||||||
"XDG_CURRENT_DESKTOP"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
xwayland.enable = true;
|
|
||||||
|
|
||||||
plugins = [
|
|
||||||
# hyprlandPlugins.hyprbars
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
outputs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
getHostname = x: lib.last (lib.splitString "@" x);
|
|
||||||
# remoteColorschemes = lib.mapAttrs' (n: v: {
|
|
||||||
# name = getHostname n;
|
|
||||||
# value = v.config.colorscheme.rawColorscheme.colors.${config.colorscheme.mode};
|
|
||||||
# }) outputs.homeConfigurations;
|
|
||||||
rgb = color: "rgb(${lib.removePrefix "#" color})";
|
|
||||||
rgba = color: alpha: "rgba(${lib.removePrefix "#" color}${alpha})";
|
|
||||||
|
|
||||||
hyprbars =
|
|
||||||
(pkgs.hyprlandPlugins.hyprbars.override {
|
|
||||||
# Make sure it's using the same hyprland package as we are
|
|
||||||
hyprland = config.wayland.windowManager.hyprland.package;
|
|
||||||
}).overrideAttrs
|
|
||||||
(old: {
|
|
||||||
# Yeet the initialization notification (I hate it)
|
|
||||||
postPatch =
|
|
||||||
(old.postPatch or "")
|
|
||||||
+ ''
|
|
||||||
${lib.getExe pkgs.gnused} -i '/Initialized successfully/d' main.cpp
|
|
||||||
'';
|
|
||||||
});
|
|
||||||
in {
|
|
||||||
wayland.windowManager.hyprland = {
|
|
||||||
plugins = [hyprbars];
|
|
||||||
settings = {
|
|
||||||
"plugin:hyprbars" = {
|
|
||||||
bar_height = 25;
|
|
||||||
# bar_color = rgba config.colorscheme.colors.surface "dd";
|
|
||||||
# "col.text" = rgb config.colorscheme.colors.primary;
|
|
||||||
# bar_text_font = config.fontProfiles.regular.name;
|
|
||||||
# bar_text_size = config.fontProfiles.regular.size;
|
|
||||||
bar_part_of_window = true;
|
|
||||||
bar_precedence_over_border = true;
|
|
||||||
hyprbars-button = let
|
|
||||||
closeAction = "hyprctl dispatch killactive";
|
|
||||||
|
|
||||||
isOnSpecial = ''hyprctl activewindow -j | jq -re 'select(.workspace.name == "special")' >/dev/null'';
|
|
||||||
moveToSpecial = "hyprctl dispatch movetoworkspacesilent special";
|
|
||||||
moveToActive = "hyprctl dispatch movetoworkspacesilent name:$(hyprctl -j activeworkspace | jq -re '.name')";
|
|
||||||
minimizeAction = "${isOnSpecial} && ${moveToActive} || ${moveToSpecial}";
|
|
||||||
|
|
||||||
maximizeAction = "hyprctl dispatch fullscreen 1";
|
|
||||||
in [
|
|
||||||
# Red close button
|
|
||||||
# "${rgb config.colorscheme.colors.red},12,,${closeAction}"
|
|
||||||
# # Yellow "minimize" (send to special workspace) button
|
|
||||||
# "${rgb config.colorscheme.colors.yellow},12,,${minimizeAction}"
|
|
||||||
# # Green "maximize" (fullscreen) button
|
|
||||||
# "${rgb config.colorscheme.colors.green},12,,${maximizeAction}"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# windowrulev2 =
|
|
||||||
# [
|
|
||||||
# "plugin:hyprbars:bar_color ${rgba config.colorscheme.colors.primary "ee"}, focus:1"
|
|
||||||
# "plugin:hyprbars:title_color ${rgb config.colorscheme.colors.on_primary}, focus:1"
|
|
||||||
# ]
|
|
||||||
# ++ (lib.flatten (
|
|
||||||
# lib.mapAttrsToList (name: colors: [
|
|
||||||
# "plugin:hyprbars:bar_color ${rgba colors.primary_container "dd"}, title:\\[${name}\\].*"
|
|
||||||
# "plugin:hyprbars:title_color ${rgb colors.on_primary_container}, title:\\[${name}\\].*"
|
|
||||||
|
|
||||||
# "plugin:hyprbars:bar_color ${rgba colors.primary "ee"}, title:\\[${name}\\].*, focus:1"
|
|
||||||
# "plugin:hyprbars:title_color ${rgb colors.on_primary}, title:\\[${name}\\].*, focus:1"
|
|
||||||
# ]) remoteColorschemes
|
|
||||||
# ));
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,348 +0,0 @@
|
|||||||
------------------
|
|
||||||
---- MONITORS ----
|
|
||||||
------------------
|
|
||||||
|
|
||||||
-- See https://wiki.hypr.land/Configuring/Basics/Monitors/
|
|
||||||
hl.monitor({
|
|
||||||
output = "",
|
|
||||||
mode = "preferred",
|
|
||||||
position = "auto",
|
|
||||||
scale = "auto",
|
|
||||||
mirror = "",
|
|
||||||
})
|
|
||||||
|
|
||||||
-------------------
|
|
||||||
---- AUTOSTART ----
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
-- See https://wiki.hypr.land/Configuring/Basics/Autostart/
|
|
||||||
hl.on("hyprland.start", function()
|
|
||||||
-- hl.exec_cmd("waybar")
|
|
||||||
hl.exec_cmd("noctalia-shell")
|
|
||||||
hl.exec_cmd("firefox")
|
|
||||||
end)
|
|
||||||
hl.on("config.reloaded", function()
|
|
||||||
hl.exec_cmd("correct-workspace-locations")
|
|
||||||
end)
|
|
||||||
|
|
||||||
-------------------------------
|
|
||||||
---- ENVIRONMENT VARIABLES ----
|
|
||||||
-------------------------------
|
|
||||||
|
|
||||||
-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Environment-variables/
|
|
||||||
hl.env("TERMINAL", terminal) -- e.g. for emacs
|
|
||||||
|
|
||||||
-----------------------
|
|
||||||
----- PERMISSIONS -----
|
|
||||||
-----------------------
|
|
||||||
|
|
||||||
-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Permissions/
|
|
||||||
-- Please note permission changes here require a Hyprland restart and are not applied on-the-fly
|
|
||||||
-- for security reasons
|
|
||||||
|
|
||||||
-- hl.config({
|
|
||||||
-- ecosystem = {
|
|
||||||
-- enforce_permissions = true,
|
|
||||||
-- },
|
|
||||||
-- })
|
|
||||||
|
|
||||||
-- hl.permission("/usr/(bin|local/bin)/grim", "screencopy", "allow")
|
|
||||||
-- hl.permission("/usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland", "screencopy", "allow")
|
|
||||||
-- hl.permission("/usr/(bin|local/bin)/hyprpm", "plugin", "allow")
|
|
||||||
|
|
||||||
-----------------------
|
|
||||||
---- LOOK AND FEEL ----
|
|
||||||
-----------------------
|
|
||||||
|
|
||||||
-- Refer to https://wiki.hypr.land/Configuring/Basics/Variables/
|
|
||||||
hl.config({
|
|
||||||
general = {
|
|
||||||
gaps_in = 5,
|
|
||||||
gaps_out = 5,
|
|
||||||
|
|
||||||
border_size = 2,
|
|
||||||
|
|
||||||
-- Set to true to enable resizing windows by clicking and dragging on borders and gaps
|
|
||||||
resize_on_border = true,
|
|
||||||
|
|
||||||
-- Please see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Tearing/ before you turn this on
|
|
||||||
allow_tearing = false,
|
|
||||||
|
|
||||||
layout = "dwindle",
|
|
||||||
},
|
|
||||||
|
|
||||||
decoration = {
|
|
||||||
-- power saving
|
|
||||||
shadow = {
|
|
||||||
enabled = false,
|
|
||||||
},
|
|
||||||
|
|
||||||
-- power saving
|
|
||||||
blur = {
|
|
||||||
enabled = false,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
animations = {
|
|
||||||
enabled = true,
|
|
||||||
},
|
|
||||||
|
|
||||||
misc = {
|
|
||||||
disable_autoreload = true,
|
|
||||||
},
|
|
||||||
cursor = {
|
|
||||||
no_hardware_cursors = 1, -- disable hardware cursors to fix tearing on kardorf
|
|
||||||
},
|
|
||||||
render = {
|
|
||||||
direct_scanout = 1,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Default curves and animations, see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Animations/
|
|
||||||
hl.curve("easeOutQuint", { type = "bezier", points = { { 0.23, 1 }, { 0.32, 1 } } })
|
|
||||||
hl.curve("easeInOutCubic", { type = "bezier", points = { { 0.65, 0.05 }, { 0.36, 1 } } })
|
|
||||||
hl.curve("linear", { type = "bezier", points = { { 0, 0 }, { 1, 1 } } })
|
|
||||||
hl.curve("almostLinear", { type = "bezier", points = { { 0.5, 0.5 }, { 0.75, 1 } } })
|
|
||||||
hl.curve("quick", { type = "bezier", points = { { 0.15, 0 }, { 0.1, 1 } } })
|
|
||||||
|
|
||||||
-- Default springs
|
|
||||||
hl.curve("easy", { type = "spring", mass = 1, stiffness = 71.2633, dampening = 15.8273644 })
|
|
||||||
|
|
||||||
hl.animation({ leaf = "global", enabled = false })
|
|
||||||
hl.animation({ leaf = "border", enabled = true, speed = 5.39, bezier = "easeOutQuint" })
|
|
||||||
hl.animation({ leaf = "windows", enabled = true, speed = 4.79, spring = "easy" })
|
|
||||||
hl.animation({ leaf = "windowsIn", enabled = true, speed = 4.1, spring = "easy", style = "popin 87%" })
|
|
||||||
hl.animation({ leaf = "windowsOut", enabled = true, speed = 1.49, bezier = "linear", style = "popin 87%" })
|
|
||||||
hl.animation({ leaf = "fadeIn", enabled = true, speed = 1.73, bezier = "almostLinear" })
|
|
||||||
hl.animation({ leaf = "fadeOut", enabled = true, speed = 1.46, bezier = "almostLinear" })
|
|
||||||
hl.animation({ leaf = "fade", enabled = true, speed = 3.03, bezier = "quick" })
|
|
||||||
hl.animation({ leaf = "layers", enabled = true, speed = 3.81, bezier = "easeOutQuint" })
|
|
||||||
hl.animation({ leaf = "layersIn", enabled = true, speed = 4, bezier = "easeOutQuint", style = "fade" })
|
|
||||||
hl.animation({ leaf = "layersOut", enabled = true, speed = 1.5, bezier = "linear", style = "fade" })
|
|
||||||
hl.animation({ leaf = "fadeLayersIn", enabled = true, speed = 1.79, bezier = "almostLinear" })
|
|
||||||
hl.animation({ leaf = "fadeLayersOut", enabled = true, speed = 1.39, bezier = "almostLinear" })
|
|
||||||
hl.animation({ leaf = "workspaces", enabled = true, speed = 1.94, bezier = "almostLinear", style = "fade" })
|
|
||||||
hl.animation({ leaf = "workspacesIn", enabled = true, speed = 1.21, bezier = "almostLinear", style = "fade" })
|
|
||||||
hl.animation({ leaf = "workspacesOut", enabled = true, speed = 1.94, bezier = "almostLinear", style = "fade" })
|
|
||||||
hl.animation({ leaf = "zoomFactor", enabled = true, speed = 7, bezier = "quick" })
|
|
||||||
|
|
||||||
-- Ref https://wiki.hypr.land/Configuring/Basics/Workspace-Rules/
|
|
||||||
-- "Smart gaps" / "No gaps when only"
|
|
||||||
hl.workspace_rule({ workspace = "w[tv1]", gaps_out = 0, gaps_in = 0 })
|
|
||||||
hl.workspace_rule({ workspace = "f[1]", gaps_out = 0, gaps_in = 0 })
|
|
||||||
|
|
||||||
-- See https://wiki.hypr.land/Configuring/Layouts/Dwindle-Layout/ for more
|
|
||||||
hl.config({
|
|
||||||
dwindle = {
|
|
||||||
preserve_split = false,
|
|
||||||
smart_split = false,
|
|
||||||
smart_resizing = true,
|
|
||||||
force_split = 2,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
----------------
|
|
||||||
---- MISC ----
|
|
||||||
----------------
|
|
||||||
|
|
||||||
hl.config({
|
|
||||||
misc = {
|
|
||||||
force_default_wallpaper = -1, -- Set to 0 or 1 to disable the anime mascot wallpapers
|
|
||||||
disable_hyprland_logo = false, -- If true disables the random hyprland logo / anime girl background. :(
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
---------------
|
|
||||||
---- INPUT ----
|
|
||||||
---------------
|
|
||||||
|
|
||||||
hl.config({
|
|
||||||
input = {
|
|
||||||
kb_layout = "de",
|
|
||||||
follow_mouse = 1,
|
|
||||||
touchpad = {
|
|
||||||
natural_scroll = false,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
---------------------
|
|
||||||
---- KEYBINDINGS ----
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
local mainMod = "SUPER"
|
|
||||||
|
|
||||||
-- Example binds, see https://wiki.hypr.land/Configuring/Basics/Binds/ for more
|
|
||||||
hl.bind(mainMod .. " + RETURN", hl.dsp.exec_cmd(terminal))
|
|
||||||
hl.bind(mainMod .. " + E", hl.dsp.exec_cmd(fileManager))
|
|
||||||
hl.bind(mainMod .. " + D", hl.dsp.exec_cmd(menu))
|
|
||||||
hl.bind(mainMod .. " + B", hl.dsp.exec_cmd(browser))
|
|
||||||
hl.bind(mainMod .. " + C", hl.dsp.exec_cmd(calculator))
|
|
||||||
hl.bind(mainMod .. " + V", hl.dsp.exec_cmd(editor))
|
|
||||||
|
|
||||||
hl.bind(mainMod .. " + X", hl.dsp.window.close())
|
|
||||||
hl.bind(mainMod .. " + SHIFT + E", hl.dsp.exec_cmd("wlogout -p layer-shell"))
|
|
||||||
hl.bind(mainMod .. " + ESCAPE", hl.dsp.exec_cmd("wlogout -p layer-shell"))
|
|
||||||
hl.bind(mainMod .. " + SHIFT + R", hl.dsp.exec_cmd("hyprctl reload"))
|
|
||||||
hl.bind(mainMod .. " + PRINT", hl.dsp.exec_cmd("hyprshot-gui"))
|
|
||||||
hl.bind("PRINT", hl.dsp.exec_cmd("hyprshot-gui"))
|
|
||||||
hl.bind(mainMod .. " + P", hl.dsp.exec_cmd("toggle-screen-mirroring; correct-workspace-locations"))
|
|
||||||
hl.bind(mainMod .. " + TAB", hl.dsp.exec_cmd("swaylock --daemonize"))
|
|
||||||
hl.bind(mainMod .. " + W", hl.dsp.exec_cmd("makoctl dismiss"))
|
|
||||||
hl.bind(mainMod .. " + SHIFT + W", hl.dsp.exec_cmd("makoctl restore"))
|
|
||||||
hl.bind(mainMod .. " + R", hl.dsp.submap("resize"))
|
|
||||||
hl.bind(mainMod .. " + O", hl.dsp.submap("open"))
|
|
||||||
|
|
||||||
-- hl.bind(mainMod .. " + P", hl.dsp.window.pseudo())
|
|
||||||
-- hl.bind(mainMod .. " + J", hl.dsp.layout("togglesplit")) -- dwindle only
|
|
||||||
|
|
||||||
hl.bind(mainMod .. " + SHIFT + SPACE", hl.dsp.window.float({ action = "toggle" }))
|
|
||||||
hl.bind(mainMod .. " + SPACE", hl.dsp.focus({ window = "floating" }))
|
|
||||||
hl.bind(mainMod .. " + F", hl.dsp.window.fullscreen({ action = "toggle" }))
|
|
||||||
|
|
||||||
-- Move focus with mainMod + arrow keys
|
|
||||||
hl.bind(mainMod .. " + left", hl.dsp.focus({ direction = "left" }))
|
|
||||||
hl.bind(mainMod .. " + right", hl.dsp.focus({ direction = "right" }))
|
|
||||||
hl.bind(mainMod .. " + up", hl.dsp.focus({ direction = "up" }))
|
|
||||||
hl.bind(mainMod .. " + down", hl.dsp.focus({ direction = "down" }))
|
|
||||||
hl.bind(mainMod .. " + H", hl.dsp.focus({ direction = "left" }))
|
|
||||||
hl.bind(mainMod .. " + L", hl.dsp.focus({ direction = "right" }))
|
|
||||||
hl.bind(mainMod .. " + K", hl.dsp.focus({ direction = "up" }))
|
|
||||||
hl.bind(mainMod .. " + J", hl.dsp.focus({ direction = "down" }))
|
|
||||||
|
|
||||||
-- Move window with mainMod + SHIFT + arrow keys
|
|
||||||
hl.bind(mainMod .. " + SHIFT + left", hl.dsp.window.move({ direction = "left" }))
|
|
||||||
hl.bind(mainMod .. " + SHIFT + right", hl.dsp.window.move({ direction = "right" }))
|
|
||||||
hl.bind(mainMod .. " + SHIFT + up", hl.dsp.window.move({ direction = "up" }))
|
|
||||||
hl.bind(mainMod .. " + SHIFT + down", hl.dsp.window.move({ direction = "down" }))
|
|
||||||
hl.bind(mainMod .. " + SHIFT + H", hl.dsp.window.move({ direction = "left" }))
|
|
||||||
hl.bind(mainMod .. " + SHIFT + L", hl.dsp.window.move({ direction = "right" }))
|
|
||||||
hl.bind(mainMod .. " + SHIFT + K", hl.dsp.window.move({ direction = "up" }))
|
|
||||||
hl.bind(mainMod .. " + SHIFT + J", hl.dsp.window.move({ direction = "down" }))
|
|
||||||
|
|
||||||
for i = 1, 10 do
|
|
||||||
local key = i % 10 -- 10 maps to key 0
|
|
||||||
-- Switch workspaces
|
|
||||||
hl.bind(mainMod .. " + " .. key, hl.dsp.focus({ workspace = i }))
|
|
||||||
-- Move active window to a workspace
|
|
||||||
hl.bind(mainMod .. " + SHIFT + " .. key, hl.dsp.window.move({ workspace = i }))
|
|
||||||
-- Move active window to a workspace without following
|
|
||||||
hl.bind(mainMod .. " + CTRL + " .. key, hl.dsp.window.move({ workspace = i }))
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Example special workspace (scratchpad)
|
|
||||||
-- hl.bind(mainMod .. " + S", hl.dsp.workspace.toggle_special("magic"))
|
|
||||||
-- hl.bind(mainMod .. " + SHIFT + S", hl.dsp.window.move({ workspace = "special:magic" }))
|
|
||||||
|
|
||||||
-- Scroll through existing workspaces with mainMod + scroll
|
|
||||||
hl.bind(mainMod .. " + mouse_down", hl.dsp.focus({ workspace = "e+1" }))
|
|
||||||
hl.bind(mainMod .. " + mouse_up", hl.dsp.focus({ workspace = "e-1" }))
|
|
||||||
|
|
||||||
-- Move/resize windows with mainMod + LMB/RMB and dragging
|
|
||||||
hl.bind(mainMod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true }) -- leftclick
|
|
||||||
hl.bind(mainMod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true }) -- rightclick
|
|
||||||
|
|
||||||
-- Laptop multimedia keys for volume and LCD brightness
|
|
||||||
hl.bind(
|
|
||||||
"XF86AudioRaiseVolume",
|
|
||||||
hl.dsp.exec_cmd("wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"),
|
|
||||||
{ locked = true, repeating = true }
|
|
||||||
)
|
|
||||||
hl.bind(
|
|
||||||
"XF86AudioLowerVolume",
|
|
||||||
hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"),
|
|
||||||
{ locked = true, repeating = true }
|
|
||||||
)
|
|
||||||
hl.bind(
|
|
||||||
"XF86AudioMute",
|
|
||||||
hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"),
|
|
||||||
{ locked = true, repeating = true }
|
|
||||||
)
|
|
||||||
hl.bind(
|
|
||||||
"XF86AudioMicMute",
|
|
||||||
hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"),
|
|
||||||
{ locked = true, repeating = true }
|
|
||||||
)
|
|
||||||
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%+"), { locked = true, repeating = true })
|
|
||||||
hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%-"), { locked = true, repeating = true })
|
|
||||||
|
|
||||||
-- Requires playerctl
|
|
||||||
hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next"), { locked = true })
|
|
||||||
hl.bind("XF86AudioPause", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
|
|
||||||
hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
|
|
||||||
hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"), { locked = true })
|
|
||||||
|
|
||||||
hl.define_submap("resize", function()
|
|
||||||
-- Set repeating binds for resizing the active window.
|
|
||||||
hl.bind("right", hl.dsp.window.resize({ x = 20, y = 0, relative = true }), { repeating = true })
|
|
||||||
hl.bind("left", hl.dsp.window.resize({ x = -20, y = 0, relative = true }), { repeating = true })
|
|
||||||
hl.bind("up", hl.dsp.window.resize({ x = 0, y = 20, relative = true }), { repeating = true })
|
|
||||||
hl.bind("down", hl.dsp.window.resize({ x = 0, y = -20, relative = true }), { repeating = true })
|
|
||||||
hl.bind("H", hl.dsp.window.resize({ x = 20, y = 0, relative = true }), { repeating = true })
|
|
||||||
hl.bind("L", hl.dsp.window.resize({ x = -20, y = 0, relative = true }), { repeating = true })
|
|
||||||
hl.bind("K", hl.dsp.window.resize({ x = 0, y = 20, relative = true }), { repeating = true })
|
|
||||||
hl.bind("J", hl.dsp.window.resize({ x = 0, y = -20, relative = true }), { repeating = true })
|
|
||||||
|
|
||||||
-- Use `reset` to go back to the global submap
|
|
||||||
hl.bind("escape", hl.dsp.submap("reset"))
|
|
||||||
end)
|
|
||||||
|
|
||||||
hl.define_submap("open", "reset", function()
|
|
||||||
hl.bind("E", hl.dsp.exec_cmd("emacs"))
|
|
||||||
hl.bind("M", hl.dsp.exec_cmd("open-messaging"))
|
|
||||||
hl.bind("B", hl.dsp.exec_cmd("firefox"))
|
|
||||||
|
|
||||||
-- Use `reset` to go back to the global submap
|
|
||||||
hl.bind("escape", hl.dsp.submap("reset"))
|
|
||||||
end)
|
|
||||||
|
|
||||||
--------------------------------
|
|
||||||
---- WINDOWS AND WORKSPACES ----
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
-- See https://wiki.hypr.land/Configuring/Basics/Window-Rules/
|
|
||||||
-- and https://wiki.hypr.land/Configuring/Basics/Workspace-Rules/
|
|
||||||
|
|
||||||
-- Default workspaces for certain windows
|
|
||||||
hl.window_rule({ match = { class = "firefox" }, workspace = "1" })
|
|
||||||
hl.window_rule({ match = { class = "Zotero" }, workspace = "8" })
|
|
||||||
hl.window_rule({ match = { class = "nheko" }, workspace = "9" })
|
|
||||||
hl.window_rule({ match = { class = "element" }, workspace = "9" })
|
|
||||||
hl.window_rule({ match = { class = "discord" }, workspace = "9" })
|
|
||||||
hl.window_rule({ match = { class = "org.telegram.desktop" }, workspace = "9" })
|
|
||||||
hl.window_rule({ match = { class = "thunderbird" }, workspace = "10" })
|
|
||||||
|
|
||||||
-- Float calculator
|
|
||||||
hl.window_rule({ match = { class = "qalculate-gtk" }, float = true })
|
|
||||||
|
|
||||||
-- Example window rules that are useful
|
|
||||||
|
|
||||||
hl.window_rule({
|
|
||||||
-- Ignore maximize requests from all apps.
|
|
||||||
name = "suppress-maximize-events",
|
|
||||||
match = { class = ".*" },
|
|
||||||
|
|
||||||
suppress_event = "maximize",
|
|
||||||
})
|
|
||||||
|
|
||||||
hl.window_rule({
|
|
||||||
-- Fix some dragging issues with XWayland
|
|
||||||
name = "fix-xwayland-drags",
|
|
||||||
match = {
|
|
||||||
class = "^$",
|
|
||||||
title = "^$",
|
|
||||||
xwayland = true,
|
|
||||||
float = true,
|
|
||||||
fullscreen = false,
|
|
||||||
pin = false,
|
|
||||||
},
|
|
||||||
|
|
||||||
no_focus = true,
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Disable animations for selection, fixes screenshots
|
|
||||||
hl.layer_rule({
|
|
||||||
name = "no-anim-overlay",
|
|
||||||
match = { namespace = "^my-overlay$" }, -- selection
|
|
||||||
no_anim = true,
|
|
||||||
})
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
{
|
|
||||||
programs.hyprlock.enable = true;
|
|
||||||
programs.hyprlock.settings = {
|
|
||||||
general = {
|
|
||||||
disable_loading_bar = true;
|
|
||||||
hide_cursor = true;
|
|
||||||
ignore_empty_input = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
input-field = [
|
|
||||||
{
|
|
||||||
size = "200, 50";
|
|
||||||
position = "0, -80";
|
|
||||||
monitor = "";
|
|
||||||
dots_center = true;
|
|
||||||
fade_on_empty = false;
|
|
||||||
outline_thickness = 5;
|
|
||||||
placeholder_text = "Password...";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
home.packages = with pkgs; [libnotify];
|
|
||||||
|
|
||||||
services.mako = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
defaultTimeout = "5000"; # milliseconds, can be overwritten by notification sender
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,648 +0,0 @@
|
|||||||
{
|
|
||||||
"settingsVersion": 59,
|
|
||||||
"bar": {
|
|
||||||
"barType": "simple",
|
|
||||||
"position": "bottom",
|
|
||||||
"monitors": [],
|
|
||||||
"density": "default",
|
|
||||||
"showOutline": false,
|
|
||||||
"showCapsule": false,
|
|
||||||
"capsuleOpacity": 1,
|
|
||||||
"capsuleColorKey": "none",
|
|
||||||
"widgetSpacing": 6,
|
|
||||||
"contentPadding": 2,
|
|
||||||
"fontScale": 1,
|
|
||||||
"enableExclusionZoneInset": true,
|
|
||||||
"backgroundOpacity": 1,
|
|
||||||
"useSeparateOpacity": false,
|
|
||||||
"marginVertical": 4,
|
|
||||||
"marginHorizontal": 4,
|
|
||||||
"frameThickness": 8,
|
|
||||||
"frameRadius": 12,
|
|
||||||
"outerCorners": true,
|
|
||||||
"hideOnOverview": false,
|
|
||||||
"displayMode": "always_visible",
|
|
||||||
"autoHideDelay": 500,
|
|
||||||
"autoShowDelay": 150,
|
|
||||||
"showOnWorkspaceSwitch": true,
|
|
||||||
"widgets": {
|
|
||||||
"left": [
|
|
||||||
{
|
|
||||||
"characterCount": 2,
|
|
||||||
"colorizeIcons": false,
|
|
||||||
"emptyColor": "secondary",
|
|
||||||
"enableScrollWheel": true,
|
|
||||||
"focusedColor": "primary",
|
|
||||||
"followFocusedScreen": false,
|
|
||||||
"fontWeight": "bold",
|
|
||||||
"groupedBorderOpacity": 1,
|
|
||||||
"hideUnoccupied": false,
|
|
||||||
"iconScale": 0.8,
|
|
||||||
"id": "Workspace",
|
|
||||||
"labelMode": "index",
|
|
||||||
"occupiedColor": "secondary",
|
|
||||||
"pillSize": 0.8,
|
|
||||||
"showApplications": false,
|
|
||||||
"showApplicationsHover": false,
|
|
||||||
"showBadge": true,
|
|
||||||
"showLabelsOnlyWhenOccupied": false,
|
|
||||||
"unfocusedIconsOpacity": 1
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"center": [],
|
|
||||||
"right": [
|
|
||||||
{
|
|
||||||
"compactMode": false,
|
|
||||||
"diskPath": "/",
|
|
||||||
"iconColor": "none",
|
|
||||||
"id": "SystemMonitor",
|
|
||||||
"showCpuCores": false,
|
|
||||||
"showCpuFreq": false,
|
|
||||||
"showCpuTemp": false,
|
|
||||||
"showCpuUsage": true,
|
|
||||||
"showDiskAvailable": true,
|
|
||||||
"showDiskUsage": true,
|
|
||||||
"showDiskUsageAsPercent": false,
|
|
||||||
"showGpuTemp": false,
|
|
||||||
"showLoadAverage": false,
|
|
||||||
"showMemoryAsPercent": true,
|
|
||||||
"showMemoryUsage": true,
|
|
||||||
"showNetworkStats": false,
|
|
||||||
"showSwapUsage": false,
|
|
||||||
"textColor": "none",
|
|
||||||
"useMonospaceFont": true,
|
|
||||||
"usePadding": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"compactMode": false,
|
|
||||||
"diskPath": "/",
|
|
||||||
"iconColor": "none",
|
|
||||||
"id": "SystemMonitor",
|
|
||||||
"showCpuCores": false,
|
|
||||||
"showCpuFreq": false,
|
|
||||||
"showCpuTemp": false,
|
|
||||||
"showCpuUsage": false,
|
|
||||||
"showDiskAvailable": false,
|
|
||||||
"showDiskUsage": false,
|
|
||||||
"showDiskUsageAsPercent": false,
|
|
||||||
"showGpuTemp": false,
|
|
||||||
"showLoadAverage": false,
|
|
||||||
"showMemoryAsPercent": false,
|
|
||||||
"showMemoryUsage": false,
|
|
||||||
"showNetworkStats": true,
|
|
||||||
"showSwapUsage": false,
|
|
||||||
"textColor": "none",
|
|
||||||
"useMonospaceFont": true,
|
|
||||||
"usePadding": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"displayMode": "alwaysShow",
|
|
||||||
"iconColor": "none",
|
|
||||||
"id": "Volume",
|
|
||||||
"middleClickCommand": "pwvucontrol || pavucontrol",
|
|
||||||
"textColor": "none"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"deviceNativePath": "__default__",
|
|
||||||
"displayMode": "graphic-clean",
|
|
||||||
"hideIfIdle": false,
|
|
||||||
"hideIfNotDetected": true,
|
|
||||||
"id": "Battery",
|
|
||||||
"showNoctaliaPerformance": false,
|
|
||||||
"showPowerProfiles": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"clockColor": "none",
|
|
||||||
"customFont": "",
|
|
||||||
"formatHorizontal": "ddd, dd.MM. HH:mm:ss",
|
|
||||||
"formatVertical": "HH mm - dd MM",
|
|
||||||
"id": "Clock",
|
|
||||||
"tooltipFormat": "HH:mm ddd, MMM dd",
|
|
||||||
"useCustomFont": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"blacklist": [
|
|
||||||
"nm-applet"
|
|
||||||
],
|
|
||||||
"chevronColor": "none",
|
|
||||||
"colorizeIcons": false,
|
|
||||||
"drawerEnabled": false,
|
|
||||||
"hidePassive": false,
|
|
||||||
"id": "Tray",
|
|
||||||
"pinned": []
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"mouseWheelAction": "workspace",
|
|
||||||
"reverseScroll": false,
|
|
||||||
"mouseWheelWrap": true,
|
|
||||||
"middleClickAction": "launcherPanel",
|
|
||||||
"middleClickFollowMouse": false,
|
|
||||||
"middleClickCommand": "",
|
|
||||||
"rightClickAction": "controlCenter",
|
|
||||||
"rightClickFollowMouse": true,
|
|
||||||
"rightClickCommand": "",
|
|
||||||
"screenOverrides": []
|
|
||||||
},
|
|
||||||
"general": {
|
|
||||||
"avatarImage": "/home/julian/.face",
|
|
||||||
"dimmerOpacity": 0.2,
|
|
||||||
"showScreenCorners": false,
|
|
||||||
"forceBlackScreenCorners": false,
|
|
||||||
"scaleRatio": 1,
|
|
||||||
"radiusRatio": 1,
|
|
||||||
"iRadiusRatio": 1,
|
|
||||||
"boxRadiusRatio": 1,
|
|
||||||
"screenRadiusRatio": 1,
|
|
||||||
"animationSpeed": 1,
|
|
||||||
"animationDisabled": false,
|
|
||||||
"compactLockScreen": false,
|
|
||||||
"lockScreenAnimations": false,
|
|
||||||
"lockOnSuspend": true,
|
|
||||||
"showSessionButtonsOnLockScreen": true,
|
|
||||||
"showHibernateOnLockScreen": false,
|
|
||||||
"enableLockScreenMediaControls": false,
|
|
||||||
"enableShadows": true,
|
|
||||||
"enableBlurBehind": true,
|
|
||||||
"shadowDirection": "bottom_right",
|
|
||||||
"shadowOffsetX": 2,
|
|
||||||
"shadowOffsetY": 3,
|
|
||||||
"language": "",
|
|
||||||
"allowPanelsOnScreenWithoutBar": true,
|
|
||||||
"showChangelogOnStartup": true,
|
|
||||||
"telemetryEnabled": false,
|
|
||||||
"enableLockScreenCountdown": false,
|
|
||||||
"lockScreenCountdownDuration": 10000,
|
|
||||||
"autoStartAuth": false,
|
|
||||||
"allowPasswordWithFprintd": false,
|
|
||||||
"clockStyle": "custom",
|
|
||||||
"clockFormat": "hh\\nmm",
|
|
||||||
"passwordChars": false,
|
|
||||||
"lockScreenMonitors": [],
|
|
||||||
"lockScreenBlur": 0,
|
|
||||||
"lockScreenTint": 0,
|
|
||||||
"keybinds": {
|
|
||||||
"keyUp": [
|
|
||||||
"Up"
|
|
||||||
],
|
|
||||||
"keyDown": [
|
|
||||||
"Down"
|
|
||||||
],
|
|
||||||
"keyLeft": [
|
|
||||||
"Left"
|
|
||||||
],
|
|
||||||
"keyRight": [
|
|
||||||
"Right"
|
|
||||||
],
|
|
||||||
"keyEnter": [
|
|
||||||
"Return",
|
|
||||||
"Enter"
|
|
||||||
],
|
|
||||||
"keyEscape": [
|
|
||||||
"Esc"
|
|
||||||
],
|
|
||||||
"keyRemove": [
|
|
||||||
"Del"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"reverseScroll": false,
|
|
||||||
"smoothScrollEnabled": true
|
|
||||||
},
|
|
||||||
"ui": {
|
|
||||||
"fontDefault": "DejaVu Sans",
|
|
||||||
"fontFixed": "DejaVu Sans Mono",
|
|
||||||
"fontDefaultScale": 1,
|
|
||||||
"fontFixedScale": 1,
|
|
||||||
"tooltipsEnabled": true,
|
|
||||||
"scrollbarAlwaysVisible": true,
|
|
||||||
"boxBorderEnabled": false,
|
|
||||||
"panelBackgroundOpacity": 1,
|
|
||||||
"translucentWidgets": false,
|
|
||||||
"panelsAttachedToBar": true,
|
|
||||||
"settingsPanelMode": "attached",
|
|
||||||
"settingsPanelSideBarCardStyle": false
|
|
||||||
},
|
|
||||||
"location": {
|
|
||||||
"name": "",
|
|
||||||
"weatherEnabled": true,
|
|
||||||
"weatherShowEffects": true,
|
|
||||||
"weatherTaliaMascotAlways": false,
|
|
||||||
"useFahrenheit": false,
|
|
||||||
"use12hourFormat": false,
|
|
||||||
"showWeekNumberInCalendar": false,
|
|
||||||
"showCalendarEvents": true,
|
|
||||||
"showCalendarWeather": true,
|
|
||||||
"analogClockInCalendar": false,
|
|
||||||
"firstDayOfWeek": -1,
|
|
||||||
"hideWeatherTimezone": false,
|
|
||||||
"hideWeatherCityName": false,
|
|
||||||
"autoLocate": false
|
|
||||||
},
|
|
||||||
"calendar": {
|
|
||||||
"cards": [
|
|
||||||
{
|
|
||||||
"enabled": true,
|
|
||||||
"id": "calendar-header-card"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enabled": true,
|
|
||||||
"id": "calendar-month-card"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enabled": true,
|
|
||||||
"id": "weather-card"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"wallpaper": {
|
|
||||||
"enabled": false,
|
|
||||||
"overviewEnabled": false,
|
|
||||||
"directory": "/home/julian/Pictures/Wallpapers",
|
|
||||||
"monitorDirectories": [],
|
|
||||||
"enableMultiMonitorDirectories": false,
|
|
||||||
"showHiddenFiles": false,
|
|
||||||
"viewMode": "single",
|
|
||||||
"setWallpaperOnAllMonitors": true,
|
|
||||||
"linkLightAndDarkWallpapers": true,
|
|
||||||
"fillMode": "crop",
|
|
||||||
"fillColor": "#000000",
|
|
||||||
"useSolidColor": false,
|
|
||||||
"solidColor": "#1a1a2e",
|
|
||||||
"automationEnabled": false,
|
|
||||||
"wallpaperChangeMode": "random",
|
|
||||||
"randomIntervalSec": 300,
|
|
||||||
"transitionDuration": 1500,
|
|
||||||
"transitionType": [
|
|
||||||
"fade",
|
|
||||||
"disc",
|
|
||||||
"stripes",
|
|
||||||
"wipe",
|
|
||||||
"pixelate",
|
|
||||||
"honeycomb"
|
|
||||||
],
|
|
||||||
"skipStartupTransition": false,
|
|
||||||
"transitionEdgeSmoothness": 0.05,
|
|
||||||
"panelPosition": "follow_bar",
|
|
||||||
"hideWallpaperFilenames": false,
|
|
||||||
"useOriginalImages": false,
|
|
||||||
"overviewBlur": 0.4,
|
|
||||||
"overviewTint": 0.6,
|
|
||||||
"useWallhaven": false,
|
|
||||||
"wallhavenQuery": "",
|
|
||||||
"wallhavenSorting": "relevance",
|
|
||||||
"wallhavenOrder": "desc",
|
|
||||||
"wallhavenCategories": "111",
|
|
||||||
"wallhavenPurity": "100",
|
|
||||||
"wallhavenRatios": "",
|
|
||||||
"wallhavenApiKey": "",
|
|
||||||
"wallhavenResolutionMode": "atleast",
|
|
||||||
"wallhavenResolutionWidth": "",
|
|
||||||
"wallhavenResolutionHeight": "",
|
|
||||||
"sortOrder": "name",
|
|
||||||
"favorites": []
|
|
||||||
},
|
|
||||||
"appLauncher": {
|
|
||||||
"enableClipboardHistory": false,
|
|
||||||
"autoPasteClipboard": false,
|
|
||||||
"enableClipPreview": true,
|
|
||||||
"clipboardWrapText": true,
|
|
||||||
"enableClipboardSmartIcons": true,
|
|
||||||
"enableClipboardChips": true,
|
|
||||||
"clipboardWatchTextCommand": "wl-paste --type text --watch cliphist store",
|
|
||||||
"clipboardWatchImageCommand": "wl-paste --type image --watch cliphist store",
|
|
||||||
"position": "center",
|
|
||||||
"pinnedApps": [],
|
|
||||||
"sortByMostUsed": true,
|
|
||||||
"terminalCommand": "alacritty -e",
|
|
||||||
"customLaunchPrefixEnabled": false,
|
|
||||||
"customLaunchPrefix": "",
|
|
||||||
"viewMode": "list",
|
|
||||||
"showCategories": true,
|
|
||||||
"iconMode": "tabler",
|
|
||||||
"showIconBackground": false,
|
|
||||||
"enableSettingsSearch": true,
|
|
||||||
"enableWindowsSearch": true,
|
|
||||||
"enableSessionSearch": true,
|
|
||||||
"ignoreMouseInput": false,
|
|
||||||
"screenshotAnnotationTool": "",
|
|
||||||
"overviewLayer": false,
|
|
||||||
"density": "default"
|
|
||||||
},
|
|
||||||
"controlCenter": {
|
|
||||||
"position": "close_to_bar_button",
|
|
||||||
"diskPath": "/",
|
|
||||||
"shortcuts": {
|
|
||||||
"left": [
|
|
||||||
{
|
|
||||||
"id": "Network"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "Bluetooth"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "WallpaperSelector"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "NoctaliaPerformance"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"right": [
|
|
||||||
{
|
|
||||||
"id": "Notifications"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "PowerProfile"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "KeepAwake"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "NightLight"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"cards": [
|
|
||||||
{
|
|
||||||
"enabled": true,
|
|
||||||
"id": "profile-card"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enabled": true,
|
|
||||||
"id": "shortcuts-card"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enabled": true,
|
|
||||||
"id": "audio-card"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enabled": false,
|
|
||||||
"id": "brightness-card"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enabled": true,
|
|
||||||
"id": "weather-card"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enabled": false,
|
|
||||||
"id": "media-sysmon-card"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"systemMonitor": {
|
|
||||||
"cpuWarningThreshold": 80,
|
|
||||||
"cpuCriticalThreshold": 90,
|
|
||||||
"tempWarningThreshold": 80,
|
|
||||||
"tempCriticalThreshold": 90,
|
|
||||||
"gpuWarningThreshold": 80,
|
|
||||||
"gpuCriticalThreshold": 90,
|
|
||||||
"memWarningThreshold": 80,
|
|
||||||
"memCriticalThreshold": 90,
|
|
||||||
"swapWarningThreshold": 80,
|
|
||||||
"swapCriticalThreshold": 90,
|
|
||||||
"diskWarningThreshold": 80,
|
|
||||||
"diskCriticalThreshold": 90,
|
|
||||||
"diskAvailWarningThreshold": 20,
|
|
||||||
"diskAvailCriticalThreshold": 10,
|
|
||||||
"batteryWarningThreshold": 20,
|
|
||||||
"batteryCriticalThreshold": 5,
|
|
||||||
"enableDgpuMonitoring": false,
|
|
||||||
"useCustomColors": false,
|
|
||||||
"warningColor": "",
|
|
||||||
"criticalColor": "",
|
|
||||||
"externalMonitor": "resources || missioncenter || jdsystemmonitor || corestats || system-monitoring-center || gnome-system-monitor || plasma-systemmonitor || mate-system-monitor || ukui-system-monitor || deepin-system-monitor || pantheon-system-monitor"
|
|
||||||
},
|
|
||||||
"noctaliaPerformance": {
|
|
||||||
"disableWallpaper": true,
|
|
||||||
"disableDesktopWidgets": true
|
|
||||||
},
|
|
||||||
"dock": {
|
|
||||||
"enabled": false,
|
|
||||||
"position": "bottom",
|
|
||||||
"displayMode": "auto_hide",
|
|
||||||
"dockType": "floating",
|
|
||||||
"backgroundOpacity": 1,
|
|
||||||
"floatingRatio": 1,
|
|
||||||
"size": 1,
|
|
||||||
"onlySameOutput": true,
|
|
||||||
"monitors": [],
|
|
||||||
"pinnedApps": [],
|
|
||||||
"colorizeIcons": false,
|
|
||||||
"showLauncherIcon": false,
|
|
||||||
"launcherPosition": "end",
|
|
||||||
"launcherUseDistroLogo": false,
|
|
||||||
"launcherIcon": "",
|
|
||||||
"launcherIconColor": "none",
|
|
||||||
"pinnedStatic": false,
|
|
||||||
"inactiveIndicators": false,
|
|
||||||
"groupApps": false,
|
|
||||||
"groupContextMenuMode": "extended",
|
|
||||||
"groupClickAction": "cycle",
|
|
||||||
"groupIndicatorStyle": "dots",
|
|
||||||
"deadOpacity": 0.6,
|
|
||||||
"animationSpeed": 1,
|
|
||||||
"sitOnFrame": false,
|
|
||||||
"showDockIndicator": false,
|
|
||||||
"indicatorThickness": 3,
|
|
||||||
"indicatorColor": "primary",
|
|
||||||
"indicatorOpacity": 0.6
|
|
||||||
},
|
|
||||||
"network": {
|
|
||||||
"bluetoothRssiPollingEnabled": false,
|
|
||||||
"bluetoothRssiPollIntervalMs": 60000,
|
|
||||||
"networkPanelView": "wifi",
|
|
||||||
"wifiDetailsViewMode": "grid",
|
|
||||||
"bluetoothDetailsViewMode": "grid",
|
|
||||||
"bluetoothHideUnnamedDevices": false,
|
|
||||||
"disableDiscoverability": false,
|
|
||||||
"bluetoothAutoConnect": true
|
|
||||||
},
|
|
||||||
"sessionMenu": {
|
|
||||||
"enableCountdown": false,
|
|
||||||
"countdownDuration": 10000,
|
|
||||||
"position": "center",
|
|
||||||
"showHeader": true,
|
|
||||||
"showKeybinds": true,
|
|
||||||
"largeButtonsStyle": false,
|
|
||||||
"largeButtonsLayout": "single-row",
|
|
||||||
"powerOptions": [
|
|
||||||
{
|
|
||||||
"action": "lock",
|
|
||||||
"command": "",
|
|
||||||
"countdownEnabled": true,
|
|
||||||
"enabled": true,
|
|
||||||
"keybind": "1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"action": "suspend",
|
|
||||||
"command": "",
|
|
||||||
"countdownEnabled": true,
|
|
||||||
"enabled": false,
|
|
||||||
"keybind": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"action": "hibernate",
|
|
||||||
"command": "",
|
|
||||||
"countdownEnabled": true,
|
|
||||||
"enabled": false,
|
|
||||||
"keybind": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"action": "reboot",
|
|
||||||
"command": "",
|
|
||||||
"countdownEnabled": true,
|
|
||||||
"enabled": true,
|
|
||||||
"keybind": "2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"action": "logout",
|
|
||||||
"command": "",
|
|
||||||
"countdownEnabled": true,
|
|
||||||
"enabled": true,
|
|
||||||
"keybind": "3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"action": "shutdown",
|
|
||||||
"command": "",
|
|
||||||
"countdownEnabled": true,
|
|
||||||
"enabled": true,
|
|
||||||
"keybind": "4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"action": "rebootToUefi",
|
|
||||||
"command": "",
|
|
||||||
"countdownEnabled": true,
|
|
||||||
"enabled": false,
|
|
||||||
"keybind": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"action": "userspaceReboot",
|
|
||||||
"command": "",
|
|
||||||
"countdownEnabled": true,
|
|
||||||
"enabled": false,
|
|
||||||
"keybind": ""
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"notifications": {
|
|
||||||
"enabled": true,
|
|
||||||
"enableMarkdown": false,
|
|
||||||
"density": "default",
|
|
||||||
"monitors": [],
|
|
||||||
"location": "top_right",
|
|
||||||
"overlayLayer": true,
|
|
||||||
"backgroundOpacity": 1,
|
|
||||||
"respectExpireTimeout": false,
|
|
||||||
"lowUrgencyDuration": 3,
|
|
||||||
"normalUrgencyDuration": 8,
|
|
||||||
"criticalUrgencyDuration": 15,
|
|
||||||
"clearDismissed": true,
|
|
||||||
"saveToHistory": {
|
|
||||||
"low": true,
|
|
||||||
"normal": true,
|
|
||||||
"critical": true
|
|
||||||
},
|
|
||||||
"sounds": {
|
|
||||||
"enabled": false,
|
|
||||||
"volume": 0.5,
|
|
||||||
"separateSounds": false,
|
|
||||||
"criticalSoundFile": "",
|
|
||||||
"normalSoundFile": "",
|
|
||||||
"lowSoundFile": "",
|
|
||||||
"excludedApps": "discord,firefox,chrome,chromium,edge"
|
|
||||||
},
|
|
||||||
"enableMediaToast": false,
|
|
||||||
"enableKeyboardLayoutToast": true,
|
|
||||||
"enableBatteryToast": true
|
|
||||||
},
|
|
||||||
"osd": {
|
|
||||||
"enabled": true,
|
|
||||||
"location": "top_right",
|
|
||||||
"autoHideMs": 2000,
|
|
||||||
"overlayLayer": true,
|
|
||||||
"backgroundOpacity": 1,
|
|
||||||
"enabledTypes": [
|
|
||||||
0,
|
|
||||||
1,
|
|
||||||
2
|
|
||||||
],
|
|
||||||
"monitors": []
|
|
||||||
},
|
|
||||||
"audio": {
|
|
||||||
"volumeStep": 5,
|
|
||||||
"volumeOverdrive": false,
|
|
||||||
"spectrumFrameRate": 30,
|
|
||||||
"visualizerType": "linear",
|
|
||||||
"spectrumMirrored": true,
|
|
||||||
"mprisBlacklist": [],
|
|
||||||
"preferredPlayer": "",
|
|
||||||
"volumeFeedback": false,
|
|
||||||
"volumeFeedbackSoundFile": ""
|
|
||||||
},
|
|
||||||
"brightness": {
|
|
||||||
"brightnessStep": 5,
|
|
||||||
"enforceMinimum": true,
|
|
||||||
"enableDdcSupport": false,
|
|
||||||
"backlightDeviceMappings": []
|
|
||||||
},
|
|
||||||
"colorSchemes": {
|
|
||||||
"useWallpaperColors": false,
|
|
||||||
"predefinedScheme": "Noctalia (default)",
|
|
||||||
"darkMode": true,
|
|
||||||
"schedulingMode": "off",
|
|
||||||
"manualSunrise": "06:30",
|
|
||||||
"manualSunset": "18:30",
|
|
||||||
"generationMethod": "tonal-spot",
|
|
||||||
"monitorForColors": "",
|
|
||||||
"syncGsettings": true
|
|
||||||
},
|
|
||||||
"templates": {
|
|
||||||
"activeTemplates": [],
|
|
||||||
"enableUserTheming": false
|
|
||||||
},
|
|
||||||
"nightLight": {
|
|
||||||
"enabled": true,
|
|
||||||
"forced": false,
|
|
||||||
"autoSchedule": true,
|
|
||||||
"nightTemp": "4000",
|
|
||||||
"dayTemp": "6500",
|
|
||||||
"manualSunrise": "06:30",
|
|
||||||
"manualSunset": "18:30"
|
|
||||||
},
|
|
||||||
"hooks": {
|
|
||||||
"enabled": false,
|
|
||||||
"wallpaperChange": "",
|
|
||||||
"darkModeChange": "",
|
|
||||||
"screenLock": "",
|
|
||||||
"screenUnlock": "",
|
|
||||||
"performanceModeEnabled": "",
|
|
||||||
"performanceModeDisabled": "",
|
|
||||||
"startup": "",
|
|
||||||
"session": "",
|
|
||||||
"colorGeneration": ""
|
|
||||||
},
|
|
||||||
"plugins": {
|
|
||||||
"autoUpdate": false,
|
|
||||||
"notifyUpdates": true
|
|
||||||
},
|
|
||||||
"idle": {
|
|
||||||
"enabled": false,
|
|
||||||
"screenOffTimeout": 600,
|
|
||||||
"lockTimeout": 660,
|
|
||||||
"suspendTimeout": 1800,
|
|
||||||
"fadeDuration": 5,
|
|
||||||
"screenOffCommand": "",
|
|
||||||
"lockCommand": "",
|
|
||||||
"suspendCommand": "",
|
|
||||||
"resumeScreenOffCommand": "",
|
|
||||||
"resumeLockCommand": "",
|
|
||||||
"resumeSuspendCommand": "",
|
|
||||||
"customCommands": "[]"
|
|
||||||
},
|
|
||||||
"desktopWidgets": {
|
|
||||||
"enabled": false,
|
|
||||||
"overviewEnabled": true,
|
|
||||||
"gridSnap": false,
|
|
||||||
"gridSnapScale": false,
|
|
||||||
"monitorWidgets": []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
swaylock = "${config.programs.swaylock.package}/bin/swaylock";
|
|
||||||
pgrep = "${pkgs.procps}/bin/pgrep";
|
|
||||||
pactl = "${pkgs.pulseaudio}/bin/pactl";
|
|
||||||
hyprctl = "${config.wayland.windowManager.hyprland.package}/bin/hyprctl";
|
|
||||||
swaymsg = "${config.wayland.windowManager.sway.package}/bin/swaymsg";
|
|
||||||
|
|
||||||
isLocked = "${pgrep} -x ${swaylock}";
|
|
||||||
lockTime = 4 * 60; # TODO: configurable desktop (10 min)/laptop (4 min)
|
|
||||||
|
|
||||||
# Makes two timeouts: one for when the screen is not locked (lockTime+timeout) and one for when it is.
|
|
||||||
afterLockTimeout = {
|
|
||||||
timeout,
|
|
||||||
command,
|
|
||||||
resumeCommand ? null,
|
|
||||||
}: [
|
|
||||||
{
|
|
||||||
timeout = lockTime + timeout;
|
|
||||||
inherit command resumeCommand;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
command = "${isLocked} && ${command}";
|
|
||||||
inherit resumeCommand timeout;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
in {
|
|
||||||
services.swayidle = {
|
|
||||||
enable = true;
|
|
||||||
systemdTargets = ["graphical-session.target"];
|
|
||||||
timeouts =
|
|
||||||
# Lock screen
|
|
||||||
[
|
|
||||||
{
|
|
||||||
timeout = lockTime;
|
|
||||||
command = "${swaylock} --daemonize --grace 15";
|
|
||||||
}
|
|
||||||
]
|
|
||||||
++
|
|
||||||
# Turn off displays (hyprland)
|
|
||||||
(lib.optionals config.wayland.windowManager.hyprland.enable (afterLockTimeout {
|
|
||||||
timeout = 300;
|
|
||||||
command = "${hyprctl} dispatch dpms off";
|
|
||||||
resumeCommand = "${hyprctl} dispatch dpms on";
|
|
||||||
}))
|
|
||||||
++
|
|
||||||
# Turn off displays (sway)
|
|
||||||
(lib.optionals config.wayland.windowManager.sway.enable (afterLockTimeout {
|
|
||||||
timeout = 300;
|
|
||||||
command = "${swaymsg} 'output * dpms off'";
|
|
||||||
resumeCommand = "${swaymsg} 'output * dpms on'";
|
|
||||||
}));
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
programs.swaylock = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
ignore-empty-password = true;
|
|
||||||
indicator-idle-visible = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
#! /usr/bin/env sh
|
|
||||||
|
|
||||||
# A hyprland script for a laptop-external-monitor setup, toggling between which is in use
|
|
||||||
|
|
||||||
# TODO: Detect these instead of hardcoding them
|
|
||||||
INTERNAL_MONITOR="eDP-1"
|
|
||||||
EXTERNAL_MONITOR="HDMI-A-1"
|
|
||||||
|
|
||||||
MIRROR_SETTING=$(hyprctl monitors all -j | jq -r '.[] | select(.name == "HDMI-A-1") | .mirrorOf')
|
|
||||||
|
|
||||||
echo "current setting: "
|
|
||||||
echo $MIRROR_SETTING
|
|
||||||
if [ "$MIRROR_SETTING" = "none" ]; then
|
|
||||||
echo "mirroring..."
|
|
||||||
hyprctl eval "hl.monitor({output=\"$EXTERNAL_MONITOR\", mode=\"preferred\", position=\"auto\", scale=\"auto\", mirror=\"$INTERNAL_MONITOR\"})"
|
|
||||||
else
|
|
||||||
# hyprctl keyword monitor "$EXTERNAL_MONITOR, disable" # shortly disable monitor so waybar recognizes the new monitor again # TODO: find better solution
|
|
||||||
hyprctl eval "hl.monitor({output=\"$EXTERNAL_MONITOR\", mode=\"preferred\", position=\"auto\", scale=\"auto\", mirror=\"\"})"
|
|
||||||
fi
|
|
||||||
@@ -1,104 +0,0 @@
|
|||||||
{
|
|
||||||
"layer": "top",
|
|
||||||
"position": "bottom",
|
|
||||||
"mode": "dock",
|
|
||||||
"exclusive": true,
|
|
||||||
"passtrough": true,
|
|
||||||
"height": 16,
|
|
||||||
|
|
||||||
"modules-left": [
|
|
||||||
"hyprland/workspaces"
|
|
||||||
],
|
|
||||||
|
|
||||||
"modules-center": [],
|
|
||||||
|
|
||||||
"modules-right": ["idle_inhibitor", "custom/nixos-update", "disk", "cpu", "memory", "pulseaudio", "battery", "clock", "tray"],
|
|
||||||
|
|
||||||
"custom/nixos-update": {
|
|
||||||
"exec": "frajul-auto-upgrade-status",
|
|
||||||
"return-type": "json",
|
|
||||||
"interval": 2,
|
|
||||||
"on-click-right": "frajul-auto-upgrade-toggle"
|
|
||||||
},
|
|
||||||
|
|
||||||
"hyprland/workspaces": {
|
|
||||||
"on-scroll-up": "hyprctl dispatch workspace m+1",
|
|
||||||
"on-scroll-down": "hyprctl dispatch workspace m-1",
|
|
||||||
"all-outputs": false,
|
|
||||||
"on-click": "activate",
|
|
||||||
"format": "{icon}",
|
|
||||||
"format-icons": {
|
|
||||||
"1": "1",
|
|
||||||
"2": "2",
|
|
||||||
"3": "3",
|
|
||||||
"4": "4",
|
|
||||||
"5": "5",
|
|
||||||
"6": "6",
|
|
||||||
"7": "7",
|
|
||||||
"8": "8",
|
|
||||||
"9": "9",
|
|
||||||
"10": "10"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
"idle_inhibitor": {
|
|
||||||
"start-activated": true,
|
|
||||||
"format": "{icon}",
|
|
||||||
"format-icons": {
|
|
||||||
"activated": "",
|
|
||||||
"deactivated": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
"disk": {
|
|
||||||
"interval": 30,
|
|
||||||
"format": "Free: {percentage_free}% ({free})",
|
|
||||||
"path": "/",
|
|
||||||
"unit": "GB"
|
|
||||||
},
|
|
||||||
|
|
||||||
"cpu": {
|
|
||||||
"format": " {usage}%"
|
|
||||||
},
|
|
||||||
|
|
||||||
"memory": {
|
|
||||||
"format": " {}%"
|
|
||||||
},
|
|
||||||
|
|
||||||
"pulseaudio": {
|
|
||||||
"format": "{icon} {volume}%",
|
|
||||||
"format-muted": "<big></big>",
|
|
||||||
"format-icons": {
|
|
||||||
"headphone": "",
|
|
||||||
"default": ["", "", ""]
|
|
||||||
},
|
|
||||||
"scroll-step": 5.0,
|
|
||||||
"max-volume": 200,
|
|
||||||
"on-click": "pulseaudio-popup",
|
|
||||||
"on-click-right": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
|
||||||
},
|
|
||||||
|
|
||||||
"battery": {
|
|
||||||
"states": {
|
|
||||||
"warning": 30,
|
|
||||||
"critical": 15
|
|
||||||
},
|
|
||||||
"format": "{icon} {capacity}%",
|
|
||||||
"format-charging": " {capacity}%",
|
|
||||||
"format-plugged": " {capacity}%",
|
|
||||||
"format-full": "{icon} ",
|
|
||||||
"format-icons": ["", "", "", "", ""]
|
|
||||||
},
|
|
||||||
|
|
||||||
"clock": {
|
|
||||||
"tooltip-format": "{calendar}",
|
|
||||||
"format": "{:%a %d.%m %H:%M:%S}",
|
|
||||||
"interval": 1
|
|
||||||
},
|
|
||||||
|
|
||||||
"tray": {
|
|
||||||
"icon-size": 20,
|
|
||||||
"tooltip": false,
|
|
||||||
"spacing": 10
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
{config, ...}: let
|
|
||||||
palette = config.lib.stylix.colors;
|
|
||||||
in {
|
|
||||||
stylix.targets.waybar.enable = false;
|
|
||||||
|
|
||||||
programs.waybar = {
|
|
||||||
enable = true;
|
|
||||||
# systemd.enable = true;
|
|
||||||
settings.mainBar = builtins.fromJSON (builtins.readFile ./config.json);
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.configFile."waybar/style.css".source = ./style.css;
|
|
||||||
xdg.configFile."waybar/theme.css".text = ''
|
|
||||||
/*
|
|
||||||
bg - background
|
|
||||||
fg - foreground
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Main Colors */
|
|
||||||
@define-color background #${palette.base00};
|
|
||||||
@define-color foreground #${palette.base05};
|
|
||||||
|
|
||||||
/* Workspace Button Colors */
|
|
||||||
@define-color hover-bg #${palette.base01};
|
|
||||||
@define-color hover-fg #${palette.base05};
|
|
||||||
@define-color active-bg #${palette.base02};
|
|
||||||
@define-color active-fg #${palette.base0A};
|
|
||||||
@define-color urgent-bg #${palette.base08};
|
|
||||||
@define-color urgent-fg #${palette.base00};
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
@@ -1,94 +0,0 @@
|
|||||||
* {
|
|
||||||
/* `otf-font-awesome` is required to be installed for icons */
|
|
||||||
font-family: JetBrainsMono Nerd Font;
|
|
||||||
font-size: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* This imports the base16 colors */
|
|
||||||
@import "theme.css";
|
|
||||||
|
|
||||||
/* Main Background */
|
|
||||||
window#waybar { background: @background; }
|
|
||||||
|
|
||||||
/* Tooltip Styling */
|
|
||||||
tooltip {
|
|
||||||
color: @foreground;
|
|
||||||
background: @background;
|
|
||||||
border: solid;
|
|
||||||
border-width: 1.5px;
|
|
||||||
border-radius: 7px;
|
|
||||||
border-color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Workspace Button */
|
|
||||||
#workspaces button {
|
|
||||||
color: @foreground;
|
|
||||||
border-radius: 5px;
|
|
||||||
box-shadow: none;
|
|
||||||
margin-top: 2px;
|
|
||||||
margin-bottom: 2px;
|
|
||||||
margin-left: 0px;
|
|
||||||
margin-right: 0px;
|
|
||||||
padding: 0px;
|
|
||||||
padding-right: 2px;
|
|
||||||
padding-left: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Opened workspaces (also on other screen) */
|
|
||||||
#workspaces button.visible{
|
|
||||||
color: @active-fg;
|
|
||||||
background: @hover-bg;
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Active Workspace Button */
|
|
||||||
#workspaces button.active {
|
|
||||||
color: @active-fg;
|
|
||||||
background: @active-bg;
|
|
||||||
box-shadow: 0px 0px 2px 1px rgba(0, 0, 0, 1);
|
|
||||||
margin-right: 2px;
|
|
||||||
margin-left: 2px;
|
|
||||||
padding-right: 6px;
|
|
||||||
padding-left: 6px;
|
|
||||||
transition: all 0.4s cubic-bezier(.55,-0.68,.48,1.682);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Hover Effect for Workspace Buttons */
|
|
||||||
#workspaces button.inactive:hover {
|
|
||||||
color: @hover-fg;
|
|
||||||
background: @hover-bg;
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Urgent Workspace Buttons */
|
|
||||||
#workspaces button.urgent {
|
|
||||||
color: @urgent-fg;
|
|
||||||
background: @urgent-bg;
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* General Module Styling */
|
|
||||||
#idle_inhibitor,
|
|
||||||
#disk,
|
|
||||||
#cpu,
|
|
||||||
#memory,
|
|
||||||
#pulseaudio,
|
|
||||||
#battery,
|
|
||||||
#clock,
|
|
||||||
#tray {
|
|
||||||
color: @foreground;
|
|
||||||
padding: 0 10px;
|
|
||||||
margin-top: 0px;
|
|
||||||
margin-bottom: 0px;
|
|
||||||
margin-right: 2px;
|
|
||||||
margin-left: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* #battery.warning { */
|
|
||||||
/* color: #${palette.base08}; */
|
|
||||||
/* } */
|
|
||||||
|
|
||||||
/* #pulseaudio.muted { */
|
|
||||||
/* color: #${palette.base08}; */
|
|
||||||
/* padding-right: 16px; */
|
|
||||||
/* } */
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home.packages = [pkgs.waypipe];
|
|
||||||
systemd.user.services = {
|
|
||||||
waypipe-client = {
|
|
||||||
Unit.Description = "Runs waypipe on startup to support SSH forwarding";
|
|
||||||
Service = {
|
|
||||||
ExecStartPre = "${lib.getExe' pkgs.coreutils "mkdir"} %h/.waypipe -p";
|
|
||||||
ExecStart = "${lib.getExe (config.lib.nixGL.wrap pkgs.waypipe)} --socket %h/.waypipe/client.sock client";
|
|
||||||
ExecStopPost = "${lib.getExe' pkgs.coreutils "rm"} -f %h/.waypipe/client.sock";
|
|
||||||
};
|
|
||||||
Install.WantedBy = ["graphical-session.target"];
|
|
||||||
};
|
|
||||||
waypipe-server = {
|
|
||||||
Unit.Description = "Runs waypipe on startup to support SSH forwarding";
|
|
||||||
Service = {
|
|
||||||
Type = "simple";
|
|
||||||
ExecStartPre = "${lib.getExe' pkgs.coreutils "mkdir"} %h/.waypipe -p";
|
|
||||||
ExecStart = "${lib.getExe (config.lib.nixGL.wrap pkgs.waypipe)} --socket %h/.waypipe/server.sock --title-prefix '[%H] ' --login-shell --display wayland-waypipe server -- ${lib.getExe' pkgs.coreutils "sleep"} infinity";
|
|
||||||
ExecStopPost = "${lib.getExe' pkgs.coreutils "rm"} -f %h/.waypipe/server.sock %t/wayland-waypipe";
|
|
||||||
};
|
|
||||||
Install.WantedBy = ["default.target"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
home.packages = with pkgs; [wlogout];
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
width=900
|
|
||||||
height=600
|
|
||||||
location=center
|
|
||||||
show=drun,run
|
|
||||||
prompt=Search...
|
|
||||||
filter_rate=100
|
|
||||||
allow_markup=true
|
|
||||||
no_actions=true
|
|
||||||
halign=fill
|
|
||||||
orientation=vertical
|
|
||||||
content_halign=fill
|
|
||||||
insensitive=true
|
|
||||||
allow_images=true
|
|
||||||
image_size=35
|
|
||||||
gtk_dark=true
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
home.packages = with pkgs; [wofi];
|
|
||||||
|
|
||||||
xdg.configFile."wofi/config".source = ./config;
|
|
||||||
}
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [../rofi];
|
|
||||||
|
|
||||||
services.dunst.enable = true;
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
i3status-rust = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
nitrogen
|
|
||||||
xfce.xfce4-screenshooter
|
|
||||||
pulseaudio # For pactl commands
|
|
||||||
];
|
|
||||||
xsession.enable = true; # Give gui programs access to sessionVariables
|
|
||||||
# Prevent screen from going blank (check these settings with `xset q`)
|
|
||||||
# And disable bell sound (b)
|
|
||||||
xsession.initExtra = ''
|
|
||||||
${pkgs.xset}/bin/xset s off
|
|
||||||
${pkgs.xset}/bin/xset -dpms
|
|
||||||
${pkgs.xset}/bin/xset b off
|
|
||||||
'';
|
|
||||||
xsession.windowManager.i3 = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.i3-gaps;
|
|
||||||
};
|
|
||||||
|
|
||||||
xsession.importedVariables = [];
|
|
||||||
|
|
||||||
# Overwrite default home-manager config file
|
|
||||||
xdg.configFile."i3/config".source = lib.mkForce (
|
|
||||||
if config.hostName == "kardorf"
|
|
||||||
then ./i3/config-kardorf
|
|
||||||
else ./i3/config
|
|
||||||
);
|
|
||||||
|
|
||||||
home.file = {
|
|
||||||
".config/i3/scripts" = {
|
|
||||||
source = ./i3/scripts;
|
|
||||||
recursive = true;
|
|
||||||
};
|
|
||||||
".config/i3/workspace-messaging.json".source = ./i3/workspace-chat-element-tele.json;
|
|
||||||
".config/i3status-rust/config.toml".source = ./i3status-rust/config.toml;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.sessionPath = ["/home/julian/.config/i3/scripts"];
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
scrot_dir=~/Pictures/screenshots
|
|
||||||
@@ -1,314 +0,0 @@
|
|||||||
# i3 config file (v4)
|
|
||||||
#
|
|
||||||
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
|
|
||||||
|
|
||||||
set $mod Mod4
|
|
||||||
set $scripts /home/julian/.config/i3/scripts
|
|
||||||
set $lock "i3lock --ignore-empty-password --color=000000"
|
|
||||||
|
|
||||||
# Font for window titles
|
|
||||||
font pango:FuraCode Nerd Font 12
|
|
||||||
|
|
||||||
# xss-lock grabs a logind suspend inhibit lock and will use $lock to lock the
|
|
||||||
# screen before suspend. Use loginctl lock-session to lock your screen.
|
|
||||||
# exec --no-startup-id xss-lock --transfer-sleep-lock -- $lock --nofork
|
|
||||||
|
|
||||||
# Screen brightness controls
|
|
||||||
bindsym XF86MonBrightnessUp exec "brightnessctl set 5%+"
|
|
||||||
bindsym XF86MonBrightnessDown exec "brightnessctl set 5%-"
|
|
||||||
|
|
||||||
# Use pactl to adjust volume in PulseAudio.
|
|
||||||
# set $refresh_i3status killall -SIGUSR1 i3status
|
|
||||||
set $refresh_i3blocks pkill -RTMIN+1 i3blocks
|
|
||||||
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3blocks
|
|
||||||
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3blocks
|
|
||||||
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3blocks
|
|
||||||
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3blocks
|
|
||||||
|
|
||||||
# Use Mouse+$mod to drag floating windows to their wanted position
|
|
||||||
floating_modifier $mod
|
|
||||||
|
|
||||||
# start a terminal
|
|
||||||
bindsym $mod+Return exec $TERMINAL
|
|
||||||
|
|
||||||
# kill focused window
|
|
||||||
bindsym $mod+Shift+q kill
|
|
||||||
bindsym $mod+x kill
|
|
||||||
|
|
||||||
# Simulates alt+f4
|
|
||||||
bindsym Mod1+F4 kill
|
|
||||||
|
|
||||||
# start program launcher
|
|
||||||
bindsym $mod+d exec rofi -show run
|
|
||||||
|
|
||||||
# change focus
|
|
||||||
bindsym $mod+h focus left
|
|
||||||
bindsym $mod+j focus down
|
|
||||||
bindsym $mod+k focus up
|
|
||||||
bindsym $mod+l focus right
|
|
||||||
|
|
||||||
# alternatively, you can use the cursor keys:
|
|
||||||
bindsym $mod+Left focus left
|
|
||||||
bindsym $mod+Down focus down
|
|
||||||
bindsym $mod+Up focus up
|
|
||||||
bindsym $mod+Right focus right
|
|
||||||
|
|
||||||
# move focused window
|
|
||||||
bindsym $mod+Shift+h move left
|
|
||||||
bindsym $mod+Shift+j move down
|
|
||||||
bindsym $mod+Shift+k move up
|
|
||||||
bindsym $mod+Shift+l move right
|
|
||||||
|
|
||||||
# alternatively, you can use the cursor keys:
|
|
||||||
bindsym $mod+Shift+Left move left
|
|
||||||
bindsym $mod+Shift+Down move down
|
|
||||||
bindsym $mod+Shift+Up move up
|
|
||||||
bindsym $mod+Shift+Right move right
|
|
||||||
|
|
||||||
# split in horizontal / vertical orientation
|
|
||||||
bindsym $mod+Shift+v split h
|
|
||||||
bindsym $mod+v split v
|
|
||||||
|
|
||||||
# enter fullscreen mode for the focused container
|
|
||||||
bindsym $mod+f fullscreen toggle
|
|
||||||
|
|
||||||
# change container layout (stacked, tabbed, toggle split)
|
|
||||||
# bindsym $mod+Shift+w layout stacking
|
|
||||||
# bindsym $mod+w layout tabbed
|
|
||||||
# bindsym $mod+e layout toggle split
|
|
||||||
|
|
||||||
# toggle tiling / floating
|
|
||||||
bindsym $mod+Shift+space floating toggle
|
|
||||||
|
|
||||||
# change focus between tiling / floating windows
|
|
||||||
bindsym $mod+space focus mode_toggle
|
|
||||||
|
|
||||||
# focus the parent container
|
|
||||||
bindsym $mod+a focus parent
|
|
||||||
|
|
||||||
# focus the child container
|
|
||||||
#bindsym $mod+d focus child
|
|
||||||
|
|
||||||
# The middle button over a titlebar kills the window
|
|
||||||
bindsym --release button2 kill
|
|
||||||
|
|
||||||
# Define names for default workspaces for which we configure key bindings later on.
|
|
||||||
# We use variables to avoid repeating the names in multiple places.
|
|
||||||
set $ws1 "1"
|
|
||||||
set $ws2 "2"
|
|
||||||
set $ws3 "3"
|
|
||||||
set $ws4 "4"
|
|
||||||
set $ws5 "5"
|
|
||||||
set $ws6 "6"
|
|
||||||
set $ws7 "7"
|
|
||||||
set $ws8 "8"
|
|
||||||
set $ws9 "9"
|
|
||||||
set $ws10 "10"
|
|
||||||
|
|
||||||
# switch to workspace
|
|
||||||
bindsym $mod+1 workspace number $ws1
|
|
||||||
bindsym $mod+2 workspace number $ws2
|
|
||||||
bindsym $mod+3 workspace number $ws3
|
|
||||||
bindsym $mod+4 workspace number $ws4
|
|
||||||
bindsym $mod+5 workspace number $ws5
|
|
||||||
bindsym $mod+6 workspace number $ws6
|
|
||||||
bindsym $mod+7 workspace number $ws7
|
|
||||||
bindsym $mod+8 workspace number $ws8
|
|
||||||
bindsym $mod+9 workspace number $ws9
|
|
||||||
bindsym $mod+0 workspace number $ws10
|
|
||||||
|
|
||||||
# move focused container to workspace
|
|
||||||
bindsym $mod+Ctrl+1 move container to workspace number $ws1
|
|
||||||
bindsym $mod+Ctrl+2 move container to workspace number $ws2
|
|
||||||
bindsym $mod+Ctrl+3 move container to workspace number $ws3
|
|
||||||
bindsym $mod+Ctrl+4 move container to workspace number $ws4
|
|
||||||
bindsym $mod+Ctrl+5 move container to workspace number $ws5
|
|
||||||
bindsym $mod+Ctrl+6 move container to workspace number $ws6
|
|
||||||
bindsym $mod+Ctrl+7 move container to workspace number $ws7
|
|
||||||
bindsym $mod+Ctrl+8 move container to workspace number $ws8
|
|
||||||
bindsym $mod+Ctrl+9 move container to workspace number $ws9
|
|
||||||
bindsym $mod+Ctrl+0 move container to workspace number $ws10
|
|
||||||
|
|
||||||
# move focused container to workspace and follow
|
|
||||||
bindsym $mod+Shift+1 move container to workspace number $ws1; workspace $ws1
|
|
||||||
bindsym $mod+Shift+2 move container to workspace number $ws2; workspace $ws2
|
|
||||||
bindsym $mod+Shift+3 move container to workspace number $ws3; workspace $ws3
|
|
||||||
bindsym $mod+Shift+4 move container to workspace number $ws4; workspace $ws4
|
|
||||||
bindsym $mod+Shift+5 move container to workspace number $ws5; workspace $ws5
|
|
||||||
bindsym $mod+Shift+6 move container to workspace number $ws6; workspace $ws6
|
|
||||||
bindsym $mod+Shift+7 move container to workspace number $ws7; workspace $ws7
|
|
||||||
bindsym $mod+Shift+8 move container to workspace number $ws8; workspace $ws8
|
|
||||||
bindsym $mod+Shift+9 move container to workspace number $ws9; workspace $ws9
|
|
||||||
bindsym $mod+Shift+0 move container to workspace number $ws10; workspace $ws10
|
|
||||||
|
|
||||||
# Monitor config
|
|
||||||
set $monitor_left "HDMI-1"
|
|
||||||
set $monitor_right "eDP-1"
|
|
||||||
|
|
||||||
workspace $ws1 output $monitor_left
|
|
||||||
workspace $ws2 output $monitor_left
|
|
||||||
workspace $ws3 output $monitor_left
|
|
||||||
workspace $ws4 output $monitor_left
|
|
||||||
workspace $ws5 output $monitor_left
|
|
||||||
workspace $ws6 output $monitor_right
|
|
||||||
workspace $ws7 output $monitor_right
|
|
||||||
workspace $ws8 output $monitor_right
|
|
||||||
workspace $ws9 output $monitor_right
|
|
||||||
workspace $ws10 output $monitor_right
|
|
||||||
|
|
||||||
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
|
||||||
bindsym $mod+Shift+r restart
|
|
||||||
|
|
||||||
# resize window (you can also use the mouse for that)
|
|
||||||
mode "resize" {
|
|
||||||
# Pressing left will shrink the window’s width.
|
|
||||||
# Pressing right will grow the window’s width.
|
|
||||||
# Pressing up will shrink the window’s height.
|
|
||||||
# Pressing down will grow the window’s height.
|
|
||||||
bindsym h resize shrink width 10 px or 10 ppt
|
|
||||||
bindsym j resize grow height 10 px or 10 ppt
|
|
||||||
bindsym k resize shrink height 10 px or 10 ppt
|
|
||||||
bindsym l resize grow width 10 px or 10 ppt
|
|
||||||
|
|
||||||
# same bindings, but for the arrow keys
|
|
||||||
bindsym Left resize shrink width 10 px or 10 ppt
|
|
||||||
bindsym Down resize grow height 10 px or 10 ppt
|
|
||||||
bindsym Up resize shrink height 10 px or 10 ppt
|
|
||||||
bindsym Right resize grow width 10 px or 10 ppt
|
|
||||||
|
|
||||||
# back to normal: Enter or Escape or $mod+r
|
|
||||||
bindsym Return mode "default"
|
|
||||||
bindsym Escape mode "default"
|
|
||||||
bindsym $mod+r mode "default"
|
|
||||||
}
|
|
||||||
|
|
||||||
bindsym $mod+r mode "resize"
|
|
||||||
|
|
||||||
bar {
|
|
||||||
font pango:DejaVu Sans Mono, Font Awesome 15
|
|
||||||
status_command i3status-rs
|
|
||||||
position bottom
|
|
||||||
|
|
||||||
tray_output eDP-1
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
set $mode_system System (l) lock, (e) logout, (r) reboot, (s) shutdown
|
|
||||||
mode "$mode_system" {
|
|
||||||
bindsym l exec --no-startup-id $lock, mode "default"
|
|
||||||
# logout
|
|
||||||
bindsym e exec --no-startup-id i3-msg exit, mode "default"
|
|
||||||
bindsym r exec --no-startup-id systemctl reboot, mode "default"
|
|
||||||
bindsym s exec --no-startup-id systemctl poweroff, mode "default"
|
|
||||||
bindsym h exec --no-startup-id $lock && systemctl hibernate, mode "default"
|
|
||||||
bindsym Shift+s exec --no-startup-id $lock && systemctl suspend, mode "default"
|
|
||||||
|
|
||||||
# back to normal: Enter or Escape
|
|
||||||
bindsym Return mode "default"
|
|
||||||
bindsym Escape mode "default"
|
|
||||||
}
|
|
||||||
bindsym $mod+Shift+e mode "$mode_system"
|
|
||||||
|
|
||||||
bindsym $mod+Tab exec --no-startup-id $lock
|
|
||||||
|
|
||||||
bindsym $mod+Print exec --no-startup-id "xfce4-screenshooter"
|
|
||||||
|
|
||||||
bindsym $mod+c exec qalculate-gtk
|
|
||||||
bindsym $mod+Shift+p exec xwacomcalibrate
|
|
||||||
bindsym $mod+e exec pcmanfm
|
|
||||||
bindsym $mod+b exec firefox
|
|
||||||
bindsym $mod+p exec $scripts/display-toggle-mirror
|
|
||||||
|
|
||||||
workspace_auto_back_and_forth yes
|
|
||||||
|
|
||||||
# default_border pixel
|
|
||||||
default_border normal
|
|
||||||
default_floating_border normal
|
|
||||||
hide_edge_borders smart
|
|
||||||
|
|
||||||
show_marks no
|
|
||||||
|
|
||||||
# switch to workspace with urgent window automatically
|
|
||||||
for_window [urgent=latest] focus
|
|
||||||
|
|
||||||
focus_on_window_activation focus
|
|
||||||
|
|
||||||
assign [class="firefox" title="Mozilla Firefox$"] workspace $ws1
|
|
||||||
assign [class="TelegramDesktop"] workspace $ws9
|
|
||||||
assign [class="Signal"] workspace $ws9
|
|
||||||
assign [class="Rocket.Chat"] workspace $ws9
|
|
||||||
assign [class="Element"] workspace $ws9
|
|
||||||
assign [class="SchildiChat"] workspace $ws9
|
|
||||||
assign [class="nheko"] workspace $ws9
|
|
||||||
assign [class="thunderbird"] workspace $ws10
|
|
||||||
# assign [class="zoom"] workspace $ws5
|
|
||||||
assign [class="Zotero"] workspace $ws8
|
|
||||||
|
|
||||||
for_window [class="firefox" urgent="latest"] focus
|
|
||||||
|
|
||||||
for_window [title="Manjaro Settings Manager"] floating enable
|
|
||||||
for_window [class="pamac-manager"] floating enable
|
|
||||||
for_window [class="Pamac-updater"] floating enable
|
|
||||||
for_window [class="Qalculate-gtk"] floating enable
|
|
||||||
for_window [class="Gcolor3"] floating enable
|
|
||||||
#for_window [class="zoom" title="Chat"] floating enable
|
|
||||||
#for_window [class="Thunderbird" instance="Msgcompose"] floating enable
|
|
||||||
#
|
|
||||||
for_window [window_role=floating] floating enable
|
|
||||||
|
|
||||||
for_window [class="Viewnior"] border normal
|
|
||||||
|
|
||||||
########## Autostart applications ##########
|
|
||||||
exec firefox
|
|
||||||
|
|
||||||
# exec --no-startup-id nm-applet
|
|
||||||
# exec --no-startup-id blueman-applet
|
|
||||||
# exec --no-startup-id nextcloud --background
|
|
||||||
# exec --no-startup-id xfce4-screensaver
|
|
||||||
# exec --no-startup-id /usr/bin/emacs --daemon
|
|
||||||
|
|
||||||
# Authentication agent
|
|
||||||
# exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
|
||||||
# exec --no-startup-id /usr/bin/env gnome-keyring-daemon --start
|
|
||||||
|
|
||||||
# Notify about software updates
|
|
||||||
# exec --no-startup-id pamac-tray
|
|
||||||
# exec --no-startup-id clipit
|
|
||||||
# exec --no-startup-id xfce4-clipman
|
|
||||||
|
|
||||||
# Notify about kernel updates
|
|
||||||
# exec --no-startup-id msm_notifier
|
|
||||||
|
|
||||||
# Audio
|
|
||||||
# exec --no-startup-id start-pulseaudio-x11
|
|
||||||
# exec --no-startup-id pa-applet
|
|
||||||
|
|
||||||
# Background
|
|
||||||
exec --no-startup-id nitrogen --restore
|
|
||||||
|
|
||||||
# Adjust display temperature
|
|
||||||
# exec --no-startup-id redshift
|
|
||||||
|
|
||||||
# Notifications
|
|
||||||
# exec --no-startup-id /usr/lib/xfce4/notifyd/xfce4-notifyd
|
|
||||||
|
|
||||||
# exec --no-startup-id xautolock -time 10 -locker blurlock
|
|
||||||
# exec_always --no-startup-id ff-theme-util
|
|
||||||
# exec_always --no-startup-id fix_xcursor
|
|
||||||
|
|
||||||
exec_always --no-startup-id "$scripts/display-layoutpicker"
|
|
||||||
|
|
||||||
|
|
||||||
#############################
|
|
||||||
### settings for i3-gaps: ###
|
|
||||||
#############################
|
|
||||||
|
|
||||||
# Set inner/outer gaps
|
|
||||||
gaps inner 8
|
|
||||||
gaps outer -2
|
|
||||||
|
|
||||||
# Smart gaps (gaps used if only more than one container on the workspace)
|
|
||||||
smart_gaps on
|
|
||||||
|
|
||||||
# Smart borders (draw borders around container only if it is not the only container on this workspace)
|
|
||||||
smart_borders on
|
|
||||||
@@ -1,314 +0,0 @@
|
|||||||
# i3 config file (v4)
|
|
||||||
#
|
|
||||||
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
|
|
||||||
|
|
||||||
set $mod Mod4
|
|
||||||
set $scripts ~/.config/i3/scripts
|
|
||||||
set $lock "i3lock --ignore-empty-password --color=000000"
|
|
||||||
|
|
||||||
# Font for window titles
|
|
||||||
font pango:FuraCode Nerd Font 12
|
|
||||||
|
|
||||||
# xss-lock grabs a logind suspend inhibit lock and will use $lock to lock the
|
|
||||||
# screen before suspend. Use loginctl lock-session to lock your screen.
|
|
||||||
exec --no-startup-id xss-lock --transfer-sleep-lock -- $lock --nofork
|
|
||||||
|
|
||||||
# Screen brightness controls
|
|
||||||
# bindsym XF86MonBrightnessUp exec "xbacklight -inc 10; notify-send 'brightness up'"
|
|
||||||
# bindsym XF86MonBrightnessDown exec "xbacklight -dec 10; notify-send 'brightness down'"
|
|
||||||
|
|
||||||
# Use pactl to adjust volume in PulseAudio.
|
|
||||||
# set $refresh_i3status killall -SIGUSR1 i3status
|
|
||||||
set $refresh_i3blocks pkill -RTMIN+1 i3blocks
|
|
||||||
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3blocks
|
|
||||||
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3blocks
|
|
||||||
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3blocks
|
|
||||||
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3blocks
|
|
||||||
|
|
||||||
# Use Mouse+$mod to drag floating windows to their wanted position
|
|
||||||
floating_modifier $mod
|
|
||||||
|
|
||||||
# start a terminal
|
|
||||||
bindsym $mod+Return exec kitty
|
|
||||||
|
|
||||||
# kill focused window
|
|
||||||
bindsym $mod+Shift+q kill
|
|
||||||
bindsym $mod+x kill
|
|
||||||
|
|
||||||
# Simulates alt+f4
|
|
||||||
bindsym Mod1+F4 kill
|
|
||||||
|
|
||||||
# start program launcher
|
|
||||||
bindsym $mod+d exec rofi -show run
|
|
||||||
|
|
||||||
# change focus
|
|
||||||
bindsym $mod+h focus left
|
|
||||||
bindsym $mod+j focus down
|
|
||||||
bindsym $mod+k focus up
|
|
||||||
bindsym $mod+l focus right
|
|
||||||
|
|
||||||
# alternatively, you can use the cursor keys:
|
|
||||||
bindsym $mod+Left focus left
|
|
||||||
bindsym $mod+Down focus down
|
|
||||||
bindsym $mod+Up focus up
|
|
||||||
bindsym $mod+Right focus right
|
|
||||||
|
|
||||||
# move focused window
|
|
||||||
bindsym $mod+Shift+h move left
|
|
||||||
bindsym $mod+Shift+j move down
|
|
||||||
bindsym $mod+Shift+k move up
|
|
||||||
bindsym $mod+Shift+l move right
|
|
||||||
|
|
||||||
# alternatively, you can use the cursor keys:
|
|
||||||
bindsym $mod+Shift+Left move left
|
|
||||||
bindsym $mod+Shift+Down move down
|
|
||||||
bindsym $mod+Shift+Up move up
|
|
||||||
bindsym $mod+Shift+Right move right
|
|
||||||
|
|
||||||
# split in horizontal / vertical orientation
|
|
||||||
bindsym $mod+Shift+v split h
|
|
||||||
bindsym $mod+v split v
|
|
||||||
|
|
||||||
# enter fullscreen mode for the focused container
|
|
||||||
bindsym $mod+f fullscreen toggle
|
|
||||||
|
|
||||||
# change container layout (stacked, tabbed, toggle split)
|
|
||||||
# bindsym $mod+Shift+w layout stacking
|
|
||||||
# bindsym $mod+w layout tabbed
|
|
||||||
# bindsym $mod+e layout toggle split
|
|
||||||
|
|
||||||
# toggle tiling / floating
|
|
||||||
bindsym $mod+Shift+space floating toggle
|
|
||||||
|
|
||||||
# change focus between tiling / floating windows
|
|
||||||
bindsym $mod+space focus mode_toggle
|
|
||||||
|
|
||||||
# focus the parent container
|
|
||||||
bindsym $mod+a focus parent
|
|
||||||
|
|
||||||
# focus the child container
|
|
||||||
#bindsym $mod+d focus child
|
|
||||||
|
|
||||||
# The middle button over a titlebar kills the window
|
|
||||||
bindsym --release button2 kill
|
|
||||||
|
|
||||||
# Define names for default workspaces for which we configure key bindings later on.
|
|
||||||
# We use variables to avoid repeating the names in multiple places.
|
|
||||||
set $ws1 "1"
|
|
||||||
set $ws2 "2"
|
|
||||||
set $ws3 "3"
|
|
||||||
set $ws4 "4"
|
|
||||||
set $ws5 "5"
|
|
||||||
set $ws6 "6"
|
|
||||||
set $ws7 "7"
|
|
||||||
set $ws8 "8"
|
|
||||||
set $ws9 "9"
|
|
||||||
set $ws10 "10"
|
|
||||||
|
|
||||||
# switch to workspace
|
|
||||||
bindsym $mod+1 workspace number $ws1
|
|
||||||
bindsym $mod+2 workspace number $ws2
|
|
||||||
bindsym $mod+3 workspace number $ws3
|
|
||||||
bindsym $mod+4 workspace number $ws4
|
|
||||||
bindsym $mod+5 workspace number $ws5
|
|
||||||
bindsym $mod+6 workspace number $ws6
|
|
||||||
bindsym $mod+7 workspace number $ws7
|
|
||||||
bindsym $mod+8 workspace number $ws8
|
|
||||||
bindsym $mod+9 workspace number $ws9
|
|
||||||
bindsym $mod+0 workspace number $ws10
|
|
||||||
|
|
||||||
# move focused container to workspace
|
|
||||||
bindsym $mod+Ctrl+1 move container to workspace number $ws1
|
|
||||||
bindsym $mod+Ctrl+2 move container to workspace number $ws2
|
|
||||||
bindsym $mod+Ctrl+3 move container to workspace number $ws3
|
|
||||||
bindsym $mod+Ctrl+4 move container to workspace number $ws4
|
|
||||||
bindsym $mod+Ctrl+5 move container to workspace number $ws5
|
|
||||||
bindsym $mod+Ctrl+6 move container to workspace number $ws6
|
|
||||||
bindsym $mod+Ctrl+7 move container to workspace number $ws7
|
|
||||||
bindsym $mod+Ctrl+8 move container to workspace number $ws8
|
|
||||||
bindsym $mod+Ctrl+9 move container to workspace number $ws9
|
|
||||||
bindsym $mod+Ctrl+0 move container to workspace number $ws10
|
|
||||||
|
|
||||||
# move focused container to workspace and follow
|
|
||||||
bindsym $mod+Shift+1 move container to workspace number $ws1; workspace $ws1
|
|
||||||
bindsym $mod+Shift+2 move container to workspace number $ws2; workspace $ws2
|
|
||||||
bindsym $mod+Shift+3 move container to workspace number $ws3; workspace $ws3
|
|
||||||
bindsym $mod+Shift+4 move container to workspace number $ws4; workspace $ws4
|
|
||||||
bindsym $mod+Shift+5 move container to workspace number $ws5; workspace $ws5
|
|
||||||
bindsym $mod+Shift+6 move container to workspace number $ws6; workspace $ws6
|
|
||||||
bindsym $mod+Shift+7 move container to workspace number $ws7; workspace $ws7
|
|
||||||
bindsym $mod+Shift+8 move container to workspace number $ws8; workspace $ws8
|
|
||||||
bindsym $mod+Shift+9 move container to workspace number $ws9; workspace $ws9
|
|
||||||
bindsym $mod+Shift+0 move container to workspace number $ws10; workspace $ws10
|
|
||||||
|
|
||||||
# Monitor config
|
|
||||||
set $monitor_left "DVI-D-1"
|
|
||||||
set $monitor_right "DVI-D-2"
|
|
||||||
|
|
||||||
workspace $ws1 output $monitor_left
|
|
||||||
workspace $ws2 output $monitor_left
|
|
||||||
workspace $ws3 output $monitor_left
|
|
||||||
workspace $ws4 output $monitor_left
|
|
||||||
workspace $ws5 output $monitor_left
|
|
||||||
workspace $ws6 output $monitor_right
|
|
||||||
workspace $ws7 output $monitor_right
|
|
||||||
workspace $ws8 output $monitor_right
|
|
||||||
workspace $ws9 output $monitor_right
|
|
||||||
workspace $ws10 output $monitor_right
|
|
||||||
|
|
||||||
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
|
||||||
bindsym $mod+Shift+r restart
|
|
||||||
|
|
||||||
# resize window (you can also use the mouse for that)
|
|
||||||
mode "resize" {
|
|
||||||
# Pressing left will shrink the window’s width.
|
|
||||||
# Pressing right will grow the window’s width.
|
|
||||||
# Pressing up will shrink the window’s height.
|
|
||||||
# Pressing down will grow the window’s height.
|
|
||||||
bindsym h resize shrink width 10 px or 10 ppt
|
|
||||||
bindsym j resize grow height 10 px or 10 ppt
|
|
||||||
bindsym k resize shrink height 10 px or 10 ppt
|
|
||||||
bindsym l resize grow width 10 px or 10 ppt
|
|
||||||
|
|
||||||
# same bindings, but for the arrow keys
|
|
||||||
bindsym Left resize shrink width 10 px or 10 ppt
|
|
||||||
bindsym Down resize grow height 10 px or 10 ppt
|
|
||||||
bindsym Up resize shrink height 10 px or 10 ppt
|
|
||||||
bindsym Right resize grow width 10 px or 10 ppt
|
|
||||||
|
|
||||||
# back to normal: Enter or Escape or $mod+r
|
|
||||||
bindsym Return mode "default"
|
|
||||||
bindsym Escape mode "default"
|
|
||||||
bindsym $mod+r mode "default"
|
|
||||||
}
|
|
||||||
|
|
||||||
bindsym $mod+r mode "resize"
|
|
||||||
|
|
||||||
bar {
|
|
||||||
font pango:DejaVu Sans Mono, Font Awesome 15
|
|
||||||
status_command i3status-rs
|
|
||||||
position bottom
|
|
||||||
|
|
||||||
tray_output DVI-D-0
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
set $mode_system System (l) lock, (e) logout, (r) reboot, (s) shutdown
|
|
||||||
mode "$mode_system" {
|
|
||||||
bindsym l exec --no-startup-id $lock, mode "default"
|
|
||||||
bindsym e exec --no-startup-id i3-msg exit, mode "default" # logout
|
|
||||||
bindsym r exec --no-startup-id systemctl reboot, mode "default"
|
|
||||||
bindsym s exec --no-startup-id systemctl poweroff, mode "default"
|
|
||||||
bindsym h exec --no-startup-id $lock && systemctl hibernate, mode "default"
|
|
||||||
bindsym Shift+s exec --no-startup-id $lock && systemctl suspend, mode "default"
|
|
||||||
|
|
||||||
# back to normal: Enter or Escape
|
|
||||||
bindsym Return mode "default"
|
|
||||||
bindsym Escape mode "default"
|
|
||||||
}
|
|
||||||
bindsym $mod+Shift+e mode "$mode_system"
|
|
||||||
|
|
||||||
bindsym $mod+Tab exec --no-startup-id $lock
|
|
||||||
|
|
||||||
bindsym $mod+Print exec --no-startup-id "xfce4-screenshooter"
|
|
||||||
|
|
||||||
bindsym $mod+c exec qalculate-gtk
|
|
||||||
bindsym $mod+Shift+p exec xwacomcalibrate
|
|
||||||
bindsym $mod+e exec pcmanfm
|
|
||||||
bindsym $mod+Shift+c exec $scripts/jupyter-calculator
|
|
||||||
bindsym $mod+b exec firefox
|
|
||||||
bindsym $mod+p exec $scripts/display-toggle-mirror
|
|
||||||
|
|
||||||
workspace_auto_back_and_forth yes
|
|
||||||
|
|
||||||
# default_border pixel
|
|
||||||
default_border normal
|
|
||||||
default_floating_border normal
|
|
||||||
hide_edge_borders smart
|
|
||||||
|
|
||||||
show_marks no
|
|
||||||
|
|
||||||
# switch to workspace with urgent window automatically
|
|
||||||
for_window [urgent=latest] focus
|
|
||||||
|
|
||||||
focus_on_window_activation focus
|
|
||||||
|
|
||||||
assign [class="firefox" title="Mozilla Firefox$"] workspace $ws1
|
|
||||||
assign [class="TelegramDesktop"] workspace $ws9
|
|
||||||
assign [class="Signal"] workspace $ws9
|
|
||||||
assign [class="Rocket.Chat"] workspace $ws9
|
|
||||||
assign [class="Element"] workspace $ws9
|
|
||||||
assign [class="SchildiChat"] workspace $ws9
|
|
||||||
assign [class="thunderbird"] workspace $ws10
|
|
||||||
# assign [class="zoom"] workspace $ws5
|
|
||||||
assign [class="Zotero"] workspace $ws8
|
|
||||||
|
|
||||||
for_window [class="firefox" urgent="latest"] focus
|
|
||||||
|
|
||||||
for_window [title="Manjaro Settings Manager"] floating enable
|
|
||||||
for_window [class="pamac-manager"] floating enable
|
|
||||||
for_window [class="Pamac-updater"] floating enable
|
|
||||||
for_window [class="Qalculate-gtk"] floating enable
|
|
||||||
for_window [class="Gcolor3"] floating enable
|
|
||||||
#for_window [class="zoom" title="Chat"] floating enable
|
|
||||||
#for_window [class="Thunderbird" instance="Msgcompose"] floating enable
|
|
||||||
#
|
|
||||||
for_window [window_role=floating] floating enable
|
|
||||||
|
|
||||||
for_window [class="Viewnior"] border normal
|
|
||||||
|
|
||||||
########## Autostart applications ##########
|
|
||||||
exec firefox
|
|
||||||
|
|
||||||
exec --no-startup-id nm-applet
|
|
||||||
exec --no-startup-id blueman-applet
|
|
||||||
exec --no-startup-id xfce4-power-manager
|
|
||||||
exec --no-startup-id nextcloud --background
|
|
||||||
# exec --no-startup-id xfce4-screensaver
|
|
||||||
# exec --no-startup-id /usr/bin/emacs --daemon
|
|
||||||
|
|
||||||
# Authentication agent
|
|
||||||
exec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
|
||||||
exec --no-startup-id /usr/bin/env gnome-keyring-daemon --start
|
|
||||||
|
|
||||||
# Notify about software updates
|
|
||||||
exec --no-startup-id pamac-tray
|
|
||||||
exec --no-startup-id clipit
|
|
||||||
# exec --no-startup-id xfce4-clipman
|
|
||||||
|
|
||||||
# Notify about kernel updates
|
|
||||||
exec --no-startup-id msm_notifier
|
|
||||||
|
|
||||||
# Audio
|
|
||||||
exec --no-startup-id start-pulseaudio-x11
|
|
||||||
exec --no-startup-id pa-applet
|
|
||||||
|
|
||||||
# Background
|
|
||||||
exec --no-startup-id nitrogen --restore
|
|
||||||
|
|
||||||
# Adjust display temperature
|
|
||||||
exec --no-startup-id redshift
|
|
||||||
|
|
||||||
# Notifications
|
|
||||||
exec --no-startup-id /usr/lib/xfce4/notifyd/xfce4-notifyd
|
|
||||||
|
|
||||||
# exec --no-startup-id xautolock -time 10 -locker blurlock
|
|
||||||
exec_always --no-startup-id ff-theme-util
|
|
||||||
exec_always --no-startup-id fix_xcursor
|
|
||||||
|
|
||||||
exec_always --no-startup-id "$scripts/display-layoutpicker"
|
|
||||||
|
|
||||||
|
|
||||||
#############################
|
|
||||||
### settings for i3-gaps: ###
|
|
||||||
#############################
|
|
||||||
|
|
||||||
# Set inner/outer gaps
|
|
||||||
gaps inner 8
|
|
||||||
gaps outer -2
|
|
||||||
|
|
||||||
# Smart gaps (gaps used if only more than one container on the workspace)
|
|
||||||
smart_gaps on
|
|
||||||
|
|
||||||
# Smart borders (draw borders around container only if it is not the only container on this workspace)
|
|
||||||
smart_borders on
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
xrandr | grep -q "HDMI-1 connected"
|
|
||||||
|
|
||||||
if [ "$?" -eq "0" ]; then
|
|
||||||
echo "Two screens available"
|
|
||||||
~/.screenlayout/twoscreens.sh
|
|
||||||
else
|
|
||||||
echo "Only one screen available"
|
|
||||||
~/.screenlayout/onescreen.sh
|
|
||||||
fi
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
xrandr | grep -q "HDMI-1 connected"
|
|
||||||
|
|
||||||
if [ "$?" -eq "0" ]; then
|
|
||||||
echo "Two screens available"
|
|
||||||
|
|
||||||
MIRROR_FILE=~/.screenlayout/mirror-primary
|
|
||||||
if [ -e "$MIRROR_FILE" ]; then
|
|
||||||
echo "Mode set to mirror"
|
|
||||||
rm "$MIRROR_FILE"
|
|
||||||
~/.screenlayout/twoscreens-mirror.sh
|
|
||||||
else
|
|
||||||
echo "Mode set to left-right"
|
|
||||||
touch "$MIRROR_FILE"
|
|
||||||
~/.screenlayout/twoscreens.sh
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "Only one screen available"
|
|
||||||
~/.screenlayout/onescreen.sh
|
|
||||||
fi
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
matlab -desktop -sd ~/dev/bachelor-thesis/simulation
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
zoom &
|
|
||||||
|
|
||||||
#i3-msg "workspace --no-auto-back-and-forth 5; exec mousepad ~/Nextcloud/studium/zoom.txt"
|
|
||||||
i3-msg "workspace --no-auto-back-and-forth 5; append_layout ~/.config/i3/workspace-zoom.json"
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
// vim:ts=4:sw=4:et
|
|
||||||
{
|
|
||||||
"border": "normal",
|
|
||||||
"current_border_width": 2,
|
|
||||||
"floating": "auto_off",
|
|
||||||
"geometry": {
|
|
||||||
"height": 996,
|
|
||||||
"width": 937,
|
|
||||||
"x": 1934,
|
|
||||||
"y": 40
|
|
||||||
},
|
|
||||||
"marks": [],
|
|
||||||
"name": "nheko",
|
|
||||||
"percent": 0.5,
|
|
||||||
"swallows": [
|
|
||||||
{
|
|
||||||
"class": "^nheko$"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "con"
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
"border": "none",
|
|
||||||
"current_border_width": 2,
|
|
||||||
"floating": "auto_off",
|
|
||||||
"geometry": {
|
|
||||||
"height": 1026,
|
|
||||||
"width": 941,
|
|
||||||
"x": 2887,
|
|
||||||
"y": 12
|
|
||||||
},
|
|
||||||
"marks": [],
|
|
||||||
"name": "Telegram",
|
|
||||||
"percent": 0.5,
|
|
||||||
"swallows": [
|
|
||||||
{
|
|
||||||
"class": "^TelegramDesktop$"
|
|
||||||
// "instance": "^telegram\\-desktop$",
|
|
||||||
// "machine": "^julian\\-aspi$",
|
|
||||||
// "title": "^Telegram\\ \\(71\\)$"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "con"
|
|
||||||
}
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
// vim:ts=4:sw=4:et
|
|
||||||
{
|
|
||||||
"border": "normal",
|
|
||||||
"current_border_width": 2,
|
|
||||||
"floating": "auto_off",
|
|
||||||
"geometry": {
|
|
||||||
"height": 996,
|
|
||||||
"width": 937,
|
|
||||||
"x": 1934,
|
|
||||||
"y": 40
|
|
||||||
},
|
|
||||||
"marks": [],
|
|
||||||
"name": "SchildiChat",
|
|
||||||
"percent": 0.5,
|
|
||||||
"swallows": [
|
|
||||||
{
|
|
||||||
"class": "^SchildiChat$"
|
|
||||||
// "instance": "^schildichat$",
|
|
||||||
// "machine": "^julian\\-aspi$",
|
|
||||||
// "title": "^SchildiChat$",
|
|
||||||
// "window_role": "^browser\\-window$"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "con"
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
"border": "none",
|
|
||||||
"current_border_width": 2,
|
|
||||||
"floating": "auto_off",
|
|
||||||
"geometry": {
|
|
||||||
"height": 1026,
|
|
||||||
"width": 941,
|
|
||||||
"x": 2887,
|
|
||||||
"y": 12
|
|
||||||
},
|
|
||||||
"marks": [],
|
|
||||||
"name": "Telegram",
|
|
||||||
"percent": 0.5,
|
|
||||||
"swallows": [
|
|
||||||
{
|
|
||||||
"class": "^TelegramDesktop$"
|
|
||||||
// "instance": "^telegram\\-desktop$",
|
|
||||||
// "machine": "^julian\\-aspi$",
|
|
||||||
// "title": "^Telegram\\ \\(71\\)$"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "con"
|
|
||||||
}
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
[theme]
|
|
||||||
theme = "dracula"
|
|
||||||
|
|
||||||
[icons]
|
|
||||||
icons = "awesome4"
|
|
||||||
|
|
||||||
[[block]]
|
|
||||||
block = "disk_space"
|
|
||||||
path = "~"
|
|
||||||
format = " $icon $available ($percentage) frei "
|
|
||||||
info_type = "available"
|
|
||||||
alert_unit = "GB"
|
|
||||||
interval = 20
|
|
||||||
warning = 20.0
|
|
||||||
alert = 10.0
|
|
||||||
|
|
||||||
[[block]]
|
|
||||||
block = "memory"
|
|
||||||
format = " $icon $mem_used_percents "
|
|
||||||
|
|
||||||
[[block]]
|
|
||||||
block = "cpu"
|
|
||||||
interval = 1
|
|
||||||
|
|
||||||
[[block]]
|
|
||||||
block = "net"
|
|
||||||
# device = "enp1s0"
|
|
||||||
#format = " $icon $speed_down;K*b $speed_up;K*b"
|
|
||||||
interval = 5
|
|
||||||
|
|
||||||
[[block]]
|
|
||||||
block = "sound"
|
|
||||||
[[block.click]]
|
|
||||||
button = "left"
|
|
||||||
cmd = "pulseaudio-popup"
|
|
||||||
|
|
||||||
[[block]]
|
|
||||||
block = "battery"
|
|
||||||
interval = 10
|
|
||||||
format = " $icon $percentage ($time) "
|
|
||||||
not_charging_format = " $icon $percentage "
|
|
||||||
if_command = "test -e /sys/class/power_supply/BAT1"
|
|
||||||
|
|
||||||
[[block]]
|
|
||||||
block = "time"
|
|
||||||
interval = 1
|
|
||||||
format = " $icon $timestamp.datetime(f:'%a %d.%m %H:%M:%S') "
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
programs.kitty = {
|
|
||||||
enable = true;
|
|
||||||
shellIntegration.enableFishIntegration = true;
|
|
||||||
themeFile = "gruvbox-dark";
|
|
||||||
settings = {
|
|
||||||
enable_audio_bell = false;
|
|
||||||
confirm_os_window_close = 0; # no ask on quit
|
|
||||||
};
|
|
||||||
font = {
|
|
||||||
package = pkgs.dejavu_fonts;
|
|
||||||
name = "DejaVu Sans";
|
|
||||||
size = 12;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# home.shellAliases = {
|
|
||||||
# ssh = "kitten ssh"; # Copy kitten terminfo to remote
|
|
||||||
# };
|
|
||||||
|
|
||||||
home.sessionVariables.TERMINAL = lib.mkIf (config.terminal == "kitty") "kitty";
|
|
||||||
}
|
|
||||||
@@ -1,164 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [inputs.nixvim.homeModules.nixvim];
|
|
||||||
|
|
||||||
home.sessionVariables = {
|
|
||||||
EDITOR = "nvim";
|
|
||||||
VISUAL = "nvim";
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
git
|
|
||||||
gnumake
|
|
||||||
gcc
|
|
||||||
ripgrep
|
|
||||||
fd
|
|
||||||
stylua
|
|
||||||
black
|
|
||||||
nixfmt # nixfmt
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.nixvim = {
|
|
||||||
enable = true;
|
|
||||||
viAlias = true;
|
|
||||||
vimAlias = true;
|
|
||||||
|
|
||||||
colorschemes.catppuccin = {
|
|
||||||
enable = true;
|
|
||||||
settings.flavour = "mocha";
|
|
||||||
};
|
|
||||||
|
|
||||||
globals.mapleader = " ";
|
|
||||||
opts = {
|
|
||||||
number = false;
|
|
||||||
relativenumber = false;
|
|
||||||
ignorecase = true;
|
|
||||||
smartcase = true;
|
|
||||||
};
|
|
||||||
clipboard.register = "unnamedplus"; # Use system clipboard
|
|
||||||
|
|
||||||
keymaps = [
|
|
||||||
{
|
|
||||||
action = "<cmd>Telescope live_grep<cr>";
|
|
||||||
key = "<leader>/";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
action = "<cmd>Telescope find_files<cr>";
|
|
||||||
key = "<leader><space>";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
action = "<cmd>Telescope file_browser path=%:p:h<cr>";
|
|
||||||
key = "<leader>.";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
action = "<cmd>Neogit<cr>";
|
|
||||||
key = "<leader>gg";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "<C-s>";
|
|
||||||
action = "<esc><cmd>lua require('conform').format()<cr><cmd>write<cr>";
|
|
||||||
mode = [
|
|
||||||
"i"
|
|
||||||
"x"
|
|
||||||
"n"
|
|
||||||
"s"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
plugins = {
|
|
||||||
lualine.enable = true;
|
|
||||||
commentary.enable = true;
|
|
||||||
which-key.enable = true;
|
|
||||||
treesitter.enable = true; # enables all grammar packages
|
|
||||||
neogit.enable = true; # like magit
|
|
||||||
trouble.enable = true;
|
|
||||||
web-devicons.enable = true;
|
|
||||||
orgmode.enable = true; # org-mode support
|
|
||||||
|
|
||||||
# Shows file trees
|
|
||||||
oil = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
view_options.show_hidden = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Code formatting
|
|
||||||
conform-nvim = {
|
|
||||||
enable = true;
|
|
||||||
settings.formatters_by_ft = {
|
|
||||||
lua = ["stylua"];
|
|
||||||
python = ["black"];
|
|
||||||
nix = ["nixfmt"];
|
|
||||||
};
|
|
||||||
# extraOptions = {
|
|
||||||
# default_format_opts.lsp_format = "fallback";
|
|
||||||
# };
|
|
||||||
};
|
|
||||||
|
|
||||||
# autocomplete
|
|
||||||
cmp = {
|
|
||||||
enable = true;
|
|
||||||
autoEnableSources = true;
|
|
||||||
settings.sources = [
|
|
||||||
{name = "nvim_lsp";}
|
|
||||||
{name = "path";}
|
|
||||||
{name = "buffer";}
|
|
||||||
];
|
|
||||||
settings.mapping = {
|
|
||||||
"<Tab>" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})";
|
|
||||||
"<C-j>" = "cmp.mapping.select_next_item()";
|
|
||||||
"<C-k>" = "cmp.mapping.select_prev_item()";
|
|
||||||
"<C-e>" = "cmp.mapping.abort()";
|
|
||||||
"<CR>" = "cmp.mapping.confirm({ select = true })";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Fuzzy finder
|
|
||||||
telescope = {
|
|
||||||
enable = true;
|
|
||||||
settings.defaults.mappings = {
|
|
||||||
i = {
|
|
||||||
"<C-j>".__raw = "require('telescope.actions').move_selection_next";
|
|
||||||
"<C-k>".__raw = "require('telescope.actions').move_selection_previous";
|
|
||||||
"<tab>".__raw = "require('telescope.actions').select_default";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
extensions = {
|
|
||||||
fzf-native.enable = true;
|
|
||||||
file-browser = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
hidden = true; # show hidden files
|
|
||||||
follow_symlinks = true;
|
|
||||||
no_ignore = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
lsp = {
|
|
||||||
enable = true; # includes lsp-config, default settings for the lsps
|
|
||||||
servers = {
|
|
||||||
rust_analyzer = {
|
|
||||||
enable = true;
|
|
||||||
installCargo = true;
|
|
||||||
installRustc = true;
|
|
||||||
};
|
|
||||||
nixd.enable = true; # nix
|
|
||||||
pyright.enable = true; # python
|
|
||||||
dockerls.enable = true; # docker
|
|
||||||
lua_ls.enable = true; # lua
|
|
||||||
clangd.enable = true; # c, c++
|
|
||||||
dartls.enable = true; # dart, flutter
|
|
||||||
digestif.enable = true; # latex
|
|
||||||
tinymist.enable = true; # typst
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
home.sessionVariables = {
|
|
||||||
NH_FLAKE = "/home/julian/.dotfiles";
|
|
||||||
};
|
|
||||||
|
|
||||||
home.shellAliases = {
|
|
||||||
"os" = "nh os switch";
|
|
||||||
"hs" = "nh home switch";
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [nh];
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
{
|
|
||||||
programs.distrobox = {
|
|
||||||
enable = true;
|
|
||||||
containers."qt-distrobox" = {
|
|
||||||
image = "debian:12.2";
|
|
||||||
exported_apps = "qtcreator";
|
|
||||||
enableSystemdUnit = false; # fails in creating and does not recreate. Do distrobox-assemble create --replace --file ~/.config/distrobox/containers.ini instead
|
|
||||||
additional_packages = [
|
|
||||||
"qtcreator"
|
|
||||||
"qt6-base-dev"
|
|
||||||
"qt6-wayland"
|
|
||||||
"qt6-tools-dev-tools"
|
|
||||||
"qt6-tools-dev"
|
|
||||||
"qt6-serialbus-dev"
|
|
||||||
"qt6-websockets-dev"
|
|
||||||
"libgl1-mesa-dev"
|
|
||||||
"build-essential"
|
|
||||||
"cmake"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
# this would need you to config rofi using home-manager
|
|
||||||
# programs.rofi = { enable = true; };
|
|
||||||
|
|
||||||
home.packages = with pkgs; [rofi];
|
|
||||||
|
|
||||||
home.file = {
|
|
||||||
".config/rofi/config.rasi".source = ./config.rasi;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
bat
|
|
||||||
dust # Like du tree but better
|
|
||||||
fd # better find
|
|
||||||
fdupes # find and delete duplicate files
|
|
||||||
ffmpeg
|
|
||||||
findutils # locate
|
|
||||||
fzf # Fuzzy finder
|
|
||||||
ghostscript # needed for imagemagick with pdfs
|
|
||||||
imagemagick
|
|
||||||
git
|
|
||||||
gnupg
|
|
||||||
htop
|
|
||||||
jq # Command line JSON processor
|
|
||||||
killall
|
|
||||||
languagetool # Grammar checker
|
|
||||||
lazygit # Git client
|
|
||||||
links2 # Tui web-browser
|
|
||||||
lnav # log analyzing tool
|
|
||||||
mc # Tui file browser
|
|
||||||
nmap
|
|
||||||
p7zip # unzip 7zip archives
|
|
||||||
parted
|
|
||||||
pciutils # lspci
|
|
||||||
poppler-utils # Pdf utils including pdfimages
|
|
||||||
libqalculate # Nice tui calculator (qalc)
|
|
||||||
ripgrep # better grep
|
|
||||||
rnr # renaming tool
|
|
||||||
sage # Maths notebooks
|
|
||||||
tealdeer # tldr
|
|
||||||
topgrade # System update
|
|
||||||
tree
|
|
||||||
unetbootin # TODO
|
|
||||||
unixtools.procps # TODO
|
|
||||||
unzip
|
|
||||||
usbutils # lsusb
|
|
||||||
wget
|
|
||||||
wireguard-tools # wg-quick
|
|
||||||
xkill
|
|
||||||
zip
|
|
||||||
dig
|
|
||||||
|
|
||||||
## My scripts
|
|
||||||
frajul.edit-config
|
|
||||||
frajul.lntocp
|
|
||||||
frajul.sos
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
# imports = [./stylix.nix];
|
|
||||||
|
|
||||||
services.blueman-applet.enable = true;
|
|
||||||
services.nextcloud-client.enable = true;
|
|
||||||
services.nextcloud-client.startInBackground = true;
|
|
||||||
services.network-manager-applet.enable = true;
|
|
||||||
|
|
||||||
services.syncthing.tray.enable = true;
|
|
||||||
services.syncthing.tray.command = "syncthingtray --wait"; # Wait for tray to become available
|
|
||||||
|
|
||||||
gtk.gtk4.theme = null; # Fix evaluation warning since using old home manager version
|
|
||||||
|
|
||||||
programs.chromium = {
|
|
||||||
enable = true;
|
|
||||||
extensions = [
|
|
||||||
# Tampermonkey
|
|
||||||
{id = "dhdgffkkebhmkfjojejmpbldmpobfkfo";}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
arandr
|
|
||||||
calibre # ebook manager and viewer
|
|
||||||
# digikam
|
|
||||||
discord
|
|
||||||
discord-ptb # in case discord updates take their time
|
|
||||||
# dvdisaster
|
|
||||||
# element-desktop
|
|
||||||
# rocketchat-desktop
|
|
||||||
thunderbird
|
|
||||||
telegram-desktop # telegram
|
|
||||||
# schildichat-desktop # not updated regularly
|
|
||||||
nheko
|
|
||||||
element-desktop
|
|
||||||
evince # Simple pdf reader, good for focusing on document content
|
|
||||||
firefox
|
|
||||||
# geogebra
|
|
||||||
cheese
|
|
||||||
handbrake
|
|
||||||
# kitty # Terminal, already available as feature
|
|
||||||
libnotify
|
|
||||||
libreoffice
|
|
||||||
engrampa
|
|
||||||
nomacs # Image viewer
|
|
||||||
kdePackages.okular # Pdf reader with many features, good for commenting documents
|
|
||||||
pavucontrol
|
|
||||||
pdfsam-basic # Split, merge, etc for pdfs
|
|
||||||
qalculate-gtk # Nice gui calculator
|
|
||||||
qpdfview
|
|
||||||
# qutebrowser
|
|
||||||
# realvnc-vnc-viewer
|
|
||||||
# rpi-imager # make isos
|
|
||||||
# rustdesk
|
|
||||||
tor-browser
|
|
||||||
rusty-path-of-building # Path of Building for poe1 and poe2
|
|
||||||
vlc
|
|
||||||
wineWow64Packages.stable # 32-bit and 64-bit wine
|
|
||||||
winetricks
|
|
||||||
xclip # x11 clipboard access from terminal
|
|
||||||
mousepad # simple text editor
|
|
||||||
xournalpp # Edit pdf files
|
|
||||||
zoom-us # Video conferencing
|
|
||||||
zotero # Manage papers and other sources
|
|
||||||
pdfpc # Present slides in pdf form
|
|
||||||
|
|
||||||
networkmanager-openvpn
|
|
||||||
keepassxc
|
|
||||||
|
|
||||||
## My scripts
|
|
||||||
frajul.open-messaging
|
|
||||||
frajul.xwacomcalibrate
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,95 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
programs.opencode = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.unstable.opencode;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
watchexec # Run command when any file in current dir changes
|
|
||||||
android-tools # adb
|
|
||||||
# shellcheck # Check bash scripts for common errors
|
|
||||||
sqlite
|
|
||||||
scrcpy # Mirror android screen to pc
|
|
||||||
cargo
|
|
||||||
clippy
|
|
||||||
cntr # nix debugger
|
|
||||||
conda
|
|
||||||
# micromamba # a better, faster conda
|
|
||||||
devcontainer # development container
|
|
||||||
devenv # devbox alternative
|
|
||||||
dbeaver-bin
|
|
||||||
devbox # dev environments using nix
|
|
||||||
distrobox # run commands inside docker containers
|
|
||||||
gcc
|
|
||||||
gradle
|
|
||||||
hexedit
|
|
||||||
unstable.zed-editor
|
|
||||||
jdk
|
|
||||||
julia-bin
|
|
||||||
# (texlive.combine {
|
|
||||||
# # for rendering latex in inkscape
|
|
||||||
# inherit
|
|
||||||
# (texlive)
|
|
||||||
# scheme-medium
|
|
||||||
# standalone
|
|
||||||
# amsmath
|
|
||||||
# preview
|
|
||||||
# # needed for org mode export
|
|
||||||
# wrapfig
|
|
||||||
# capt-of
|
|
||||||
# biblatex
|
|
||||||
# ;
|
|
||||||
# })
|
|
||||||
vagrant
|
|
||||||
matlab # Using nix-matlab overlay defined in flake
|
|
||||||
maven
|
|
||||||
nodejs
|
|
||||||
pkg-config # Often needed to build something
|
|
||||||
# pwndbg # improved gdb (debugger)
|
|
||||||
python3
|
|
||||||
rust-analyzer
|
|
||||||
rustc
|
|
||||||
rustfmt
|
|
||||||
# (pkgs.inkscape-with-extensions.override {
|
|
||||||
# inkscapeExtensions = [ pkgs.inkscape-extensions.textext ];
|
|
||||||
# })
|
|
||||||
# inkscape-with-extensions
|
|
||||||
# inkscape-extensions.textext
|
|
||||||
inkscape
|
|
||||||
gcolor3 # Color picker
|
|
||||||
gimp
|
|
||||||
drawio
|
|
||||||
audacity
|
|
||||||
|
|
||||||
deploy-rs
|
|
||||||
sops
|
|
||||||
pandoc # markdown preview
|
|
||||||
docker-compose
|
|
||||||
mise
|
|
||||||
|
|
||||||
mise
|
|
||||||
|
|
||||||
## My scripts
|
|
||||||
frajul.deploy-to-pianopi
|
|
||||||
frajul.smath-studio
|
|
||||||
# frajul.rtklib
|
|
||||||
|
|
||||||
(pkgs.writeShellScriptBin "matlab-rsp" ''
|
|
||||||
matlab -desktop -sd "/home/julian/git/uwa-channel-model" -softwareopengl
|
|
||||||
'')
|
|
||||||
|
|
||||||
(pkgs.writeShellScriptBin "matlab-paper" ''
|
|
||||||
matlab -desktop -sd "/home/julian/dev/phdthesis/Phase B/mainSimulation" -softwareopengl
|
|
||||||
'')
|
|
||||||
(pkgs.writeShellScriptBin "matlab-robotik" ''
|
|
||||||
matlab -desktop -sd "/home/julian/nas-sync/Studium/Vorlesungen-Master/ss24/Robotik2" -softwareopengl
|
|
||||||
'')
|
|
||||||
(pkgs.writeShellScriptBin "matlab-gram" ''
|
|
||||||
export GTK_PATH=/usr/lib/gtk-3.0
|
|
||||||
nix shell nixpkgs#gcc11 --command matlab -desktop -sd "/home/julian/dev/matlab-gram" -softwareopengl
|
|
||||||
'')
|
|
||||||
(pkgs.writeShellScriptBin "expenses-tracker" ''
|
|
||||||
java -jar /home/julian/dev/expensestracker/app/build/libs/app.jar
|
|
||||||
'')
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
programs.tmux = {
|
|
||||||
enable = true;
|
|
||||||
clock24 = true;
|
|
||||||
keyMode = "vi";
|
|
||||||
customPaneNavigationAndResize = true; # use hjkl
|
|
||||||
mouse = true;
|
|
||||||
prefix = "C-Space"; # use instead of C-b
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
{
|
|
||||||
programs.topgrade = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
misc.no_self_update = true;
|
|
||||||
misc.pre_sudo = true; # Cache sudo password for 5 more minutes
|
|
||||||
misc.assume_yes = true;
|
|
||||||
misc.no_retry = true;
|
|
||||||
|
|
||||||
# pre_commands."Update flake" = "git -C /home/julian/.dotfiles checkout origin/flake-updates -- flake.lock";
|
|
||||||
|
|
||||||
linux.nix_arguments = "--flake /home/julian/.dotfiles";
|
|
||||||
linux.home_manager_arguments = [
|
|
||||||
"--flake"
|
|
||||||
"/home/julian/.dotfiles"
|
|
||||||
];
|
|
||||||
|
|
||||||
git = {
|
|
||||||
# Additional git repositories to pull
|
|
||||||
repos = [
|
|
||||||
"~/.dotfiles"
|
|
||||||
"~/dev/*"
|
|
||||||
"~/.config/doom"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
programs.wezterm = {
|
|
||||||
enable = true;
|
|
||||||
extraConfig = ''
|
|
||||||
local wezterm = require 'wezterm'
|
|
||||||
local config = {}
|
|
||||||
|
|
||||||
config.color_scheme = 'Catppuccin Mocha'
|
|
||||||
-- config.font = wezterm.font 'JetBrains Mono'
|
|
||||||
-- config.font_size = 12.0
|
|
||||||
config.hide_tab_bar_if_only_one_tab = true
|
|
||||||
config.audible_bell = 'Disabled'
|
|
||||||
config.enable_wayland = false -- Somehow only works for wayland if this is set to false
|
|
||||||
|
|
||||||
config.window_close_confirmation = 'NeverPrompt'
|
|
||||||
|
|
||||||
return config
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
home.sessionVariables.TERMINAL = lib.mkIf (config.terminal == "wezterm") "wezterm-start-here";
|
|
||||||
|
|
||||||
# Otherwise wezterm does not start in directory of parent process
|
|
||||||
home.packages = [
|
|
||||||
(pkgs.writeShellScriptBin "wezterm-start-here" ''
|
|
||||||
wezterm start --cwd "$PWD"
|
|
||||||
'')
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,84 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
exiftool
|
|
||||||
unar # extract archives
|
|
||||||
dragon-drop # dragndrop
|
|
||||||
poppler-utils # pdf preview
|
|
||||||
fd
|
|
||||||
ripgrep
|
|
||||||
fzf
|
|
||||||
jq # json preview
|
|
||||||
ffmpegthumbnailer
|
|
||||||
xclip
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.yazi.enable = true;
|
|
||||||
programs.yazi.shellWrapperName = "y";
|
|
||||||
programs.yazi.enableFishIntegration = true;
|
|
||||||
programs.yazi.settings.manager = {
|
|
||||||
sort_by = "mtime";
|
|
||||||
sort_reverse = true;
|
|
||||||
show_hidden = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.yazi.keymap = {
|
|
||||||
manager.prepend_keymap = [
|
|
||||||
# Override defaults
|
|
||||||
{
|
|
||||||
on = ["e"];
|
|
||||||
run = ''shell --orphan --confirm "pcmanfm &"'';
|
|
||||||
desc = "Open gui file manager";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
on = ["<C-o>"];
|
|
||||||
run = ''shell "$SHELL" --block --confirm'';
|
|
||||||
desc = "Open shell here";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
on = ["<C-n>"];
|
|
||||||
run = ''shell 'dragon -x -i -T "$1"' --confirm'';
|
|
||||||
desc = "Dragndrop via dragon";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
on = ["<Enter>"];
|
|
||||||
run = "plugin --sync smart-enter";
|
|
||||||
desc = "Enter the child directory, or open the file";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
input.prepend_keymap = [
|
|
||||||
{
|
|
||||||
on = ["<Esc>"];
|
|
||||||
run = "close";
|
|
||||||
desc = "Cancel input";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.yazi.settings.opener = {
|
|
||||||
play = [
|
|
||||||
{
|
|
||||||
run = ''vlc "$1"'';
|
|
||||||
orphan = true;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.configFile."yazi/flavors" = {
|
|
||||||
source = "${inputs.yazi-flavors}";
|
|
||||||
};
|
|
||||||
xdg.configFile."yazi/plugins/smart-enter.yazi/init.lua".text = ''
|
|
||||||
return {
|
|
||||||
entry = function()
|
|
||||||
local h = cx.active.current.hovered
|
|
||||||
ya.manager_emit(h and h.cha.is_dir and "enter" or "open", { hovered = true })
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
programs.yazi.theme = {
|
|
||||||
flavor.use = "catppuccin-mocha";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
# home.file = {
|
|
||||||
# ".config/starship.toml".source = ./starship.toml;
|
|
||||||
# };
|
|
||||||
|
|
||||||
home.packages = with pkgs; [starship];
|
|
||||||
|
|
||||||
programs.starship = {
|
|
||||||
enable = true;
|
|
||||||
enableZshIntegration = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.zsh = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
initExtra =
|
|
||||||
builtins.readFile ./key-bindings.zsh
|
|
||||||
+ builtins.readFile ./functions.zsh
|
|
||||||
+ builtins.readFile ./last-working-dir.zsh
|
|
||||||
+ builtins.readFile ./dir-navigation.zsh;
|
|
||||||
|
|
||||||
zplug = {
|
|
||||||
enable = true;
|
|
||||||
plugins = [
|
|
||||||
# list of plugins: https://github.com/unixorn/awesome-zsh-plugins
|
|
||||||
{name = "agkozak/zsh-z";}
|
|
||||||
{
|
|
||||||
name = "zsh-users/zsh-completions";
|
|
||||||
}
|
|
||||||
|
|
||||||
# make it behave like fish
|
|
||||||
{name = "zsh-users/zsh-autosuggestions";}
|
|
||||||
{name = "zsh-users/zsh-history-substring-search";}
|
|
||||||
{
|
|
||||||
name = "zsh-users/zsh-syntax-highlighting";
|
|
||||||
} # must be last sourced plugin
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
#!/usr/bin/env zsh
|
|
||||||
# Use Alt+Up to go one directory upwards
|
|
||||||
|
|
||||||
function go_dir_up() {
|
|
||||||
cd .. || return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
function zle_go_dir_up() {
|
|
||||||
zle .kill-buffer
|
|
||||||
go_dir_up
|
|
||||||
zle .accept-line
|
|
||||||
}
|
|
||||||
|
|
||||||
zle -N zle_go_dir_up
|
|
||||||
|
|
||||||
# Alt+Up
|
|
||||||
bindkey "^[[1;3A" zle_go_dir_up
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
#!/usr/bin/env zsh
|
|
||||||
# My custom zsh functions
|
|
||||||
|
|
||||||
fzf-z() {
|
|
||||||
dir=$(z | fzf --tiebreak=index --tac | sed -E 's/^[0-9]+[[:space:]]+//')
|
|
||||||
cd $dir
|
|
||||||
}
|
|
||||||
|
|
||||||
mkcd ()
|
|
||||||
{
|
|
||||||
mkdir -p -- "$1" && cd -P -- "$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
run() {
|
|
||||||
nix run nixpkgs#"$1" -- ${@:2}
|
|
||||||
}
|
|
||||||
@@ -1,131 +0,0 @@
|
|||||||
#!/usr/bin/env zsh
|
|
||||||
# Based on the oh-my-zsh default keybinding config: https://github.com/ohmyzsh/ohmyzsh/blob/master/lib/key-bindings.zsh
|
|
||||||
|
|
||||||
# Make sure that the terminal is in application mode when zle is active, since
|
|
||||||
# only then values from $terminfo are valid
|
|
||||||
if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then
|
|
||||||
function zle-line-init() {
|
|
||||||
echoti smkx
|
|
||||||
}
|
|
||||||
function zle-line-finish() {
|
|
||||||
echoti rmkx
|
|
||||||
}
|
|
||||||
zle -N zle-line-init
|
|
||||||
zle -N zle-line-finish
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Use emacs key bindings
|
|
||||||
bindkey -e
|
|
||||||
|
|
||||||
# [PageUp] - Up a line of history
|
|
||||||
if [[ -n "${terminfo[kpp]}" ]]; then
|
|
||||||
bindkey -M emacs "${terminfo[kpp]}" up-line-or-history
|
|
||||||
bindkey -M viins "${terminfo[kpp]}" up-line-or-history
|
|
||||||
bindkey -M vicmd "${terminfo[kpp]}" up-line-or-history
|
|
||||||
fi
|
|
||||||
# [PageDown] - Down a line of history
|
|
||||||
if [[ -n "${terminfo[knp]}" ]]; then
|
|
||||||
bindkey -M emacs "${terminfo[knp]}" down-line-or-history
|
|
||||||
bindkey -M viins "${terminfo[knp]}" down-line-or-history
|
|
||||||
bindkey -M vicmd "${terminfo[knp]}" down-line-or-history
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Start typing + [Up-Arrow] - fuzzy find history forward
|
|
||||||
if [[ -n "${terminfo[kcuu1]}" ]]; then
|
|
||||||
bindkey -M emacs "${terminfo[kcuu1]}" history-substring-search-up
|
|
||||||
bindkey -M viins "${terminfo[kcuu1]}" history-substring-search-up
|
|
||||||
bindkey -M vicmd "${terminfo[kcuu1]}" history-substring-search-up
|
|
||||||
fi
|
|
||||||
# Start typing + [Down-Arrow] - fuzzy find history backward
|
|
||||||
if [[ -n "${terminfo[kcud1]}" ]]; then
|
|
||||||
bindkey -M emacs "${terminfo[kcud1]}" history-substring-search-down
|
|
||||||
bindkey -M viins "${terminfo[kcud1]}" history-substring-search-down
|
|
||||||
bindkey -M vicmd "${terminfo[kcud1]}" history-substring-search-down
|
|
||||||
fi
|
|
||||||
|
|
||||||
# [Home] - Go to beginning of line
|
|
||||||
if [[ -n "${terminfo[khome]}" ]]; then
|
|
||||||
bindkey -M emacs "${terminfo[khome]}" beginning-of-line
|
|
||||||
bindkey -M viins "${terminfo[khome]}" beginning-of-line
|
|
||||||
bindkey -M vicmd "${terminfo[khome]}" beginning-of-line
|
|
||||||
fi
|
|
||||||
# [End] - Go to end of line
|
|
||||||
if [[ -n "${terminfo[kend]}" ]]; then
|
|
||||||
bindkey -M emacs "${terminfo[kend]}" end-of-line
|
|
||||||
bindkey -M viins "${terminfo[kend]}" end-of-line
|
|
||||||
bindkey -M vicmd "${terminfo[kend]}" end-of-line
|
|
||||||
fi
|
|
||||||
|
|
||||||
# [Shift-Tab] - move through the completion menu backwards
|
|
||||||
if [[ -n "${terminfo[kcbt]}" ]]; then
|
|
||||||
bindkey -M emacs "${terminfo[kcbt]}" reverse-menu-complete
|
|
||||||
bindkey -M viins "${terminfo[kcbt]}" reverse-menu-complete
|
|
||||||
bindkey -M vicmd "${terminfo[kcbt]}" reverse-menu-complete
|
|
||||||
fi
|
|
||||||
|
|
||||||
# [Backspace] - delete backward
|
|
||||||
bindkey -M emacs '^?' backward-delete-char
|
|
||||||
bindkey -M viins '^?' backward-delete-char
|
|
||||||
bindkey -M vicmd '^?' backward-delete-char
|
|
||||||
# [Delete] - delete forward
|
|
||||||
if [[ -n "${terminfo[kdch1]}" ]]; then
|
|
||||||
bindkey -M emacs "${terminfo[kdch1]}" delete-char
|
|
||||||
bindkey -M viins "${terminfo[kdch1]}" delete-char
|
|
||||||
bindkey -M vicmd "${terminfo[kdch1]}" delete-char
|
|
||||||
else
|
|
||||||
bindkey -M emacs "^[[3~" delete-char
|
|
||||||
bindkey -M viins "^[[3~" delete-char
|
|
||||||
bindkey -M vicmd "^[[3~" delete-char
|
|
||||||
|
|
||||||
bindkey -M emacs "^[3;5~" delete-char
|
|
||||||
bindkey -M viins "^[3;5~" delete-char
|
|
||||||
bindkey -M vicmd "^[3;5~" delete-char
|
|
||||||
fi
|
|
||||||
|
|
||||||
# [Ctrl-Delete] - delete whole forward-word
|
|
||||||
bindkey -M emacs '^[[3;5~' kill-word
|
|
||||||
bindkey -M viins '^[[3;5~' kill-word
|
|
||||||
bindkey -M vicmd '^[[3;5~' kill-word
|
|
||||||
|
|
||||||
# [Ctrl-RightArrow] - move forward one word
|
|
||||||
bindkey -M emacs '^[[1;5C' forward-word
|
|
||||||
bindkey -M viins '^[[1;5C' forward-word
|
|
||||||
bindkey -M vicmd '^[[1;5C' forward-word
|
|
||||||
# [Ctrl-LeftArrow] - move backward one word
|
|
||||||
bindkey -M emacs '^[[1;5D' backward-word
|
|
||||||
bindkey -M viins '^[[1;5D' backward-word
|
|
||||||
bindkey -M vicmd '^[[1;5D' backward-word
|
|
||||||
|
|
||||||
|
|
||||||
bindkey '\ew' kill-region # [Esc-w] - Kill from the cursor to the mark
|
|
||||||
bindkey -s '\el' 'ls\n' # [Esc-l] - run command: ls
|
|
||||||
bindkey '^r' history-incremental-search-backward # [Ctrl-r] - Search backward incrementally for a specified string. The string may begin with ^ to anchor the search to the beginning of the line.
|
|
||||||
bindkey ' ' magic-space # [Space] - don't do history expansion
|
|
||||||
|
|
||||||
|
|
||||||
# Edit the current command line in $EDITOR
|
|
||||||
autoload -U edit-command-line
|
|
||||||
zle -N edit-command-line
|
|
||||||
bindkey '\C-x\C-e' edit-command-line
|
|
||||||
|
|
||||||
# file rename magick
|
|
||||||
bindkey "^[m" copy-prev-shell-word
|
|
||||||
|
|
||||||
# consider emacs keybindings:
|
|
||||||
|
|
||||||
#bindkey -e ## emacs key bindings
|
|
||||||
#
|
|
||||||
#bindkey '^[[A' up-line-or-search
|
|
||||||
#bindkey '^[[B' down-line-or-search
|
|
||||||
#bindkey '^[^[[C' emacs-forward-word
|
|
||||||
#bindkey '^[^[[D' emacs-backward-word
|
|
||||||
#
|
|
||||||
#bindkey -s '^X^Z' '%-^M'
|
|
||||||
#bindkey '^[e' expand-cmd-path
|
|
||||||
#bindkey '^[^I' reverse-menu-complete
|
|
||||||
#bindkey '^X^N' accept-and-infer-next-history
|
|
||||||
#bindkey '^W' kill-region
|
|
||||||
#bindkey '^I' complete-word
|
|
||||||
## Fix weird sequence that rxvt produces
|
|
||||||
#bindkey -s '^[[Z' '\t'
|
|
||||||
#
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
#!/usr/bin/zsh
|
|
||||||
# My version of the last-working-dir plugin (https://github.com/ohmyzsh/ohmyzsh/blob/master/plugins/last-working-dir/last-working-dir.plugin.zsh)
|
|
||||||
|
|
||||||
# Updates the last directory once directory is changed
|
|
||||||
autoload -U add-zsh-hook
|
|
||||||
add-zsh-hook chpwd chpwd_last_working_dir
|
|
||||||
chpwd_last_working_dir() {
|
|
||||||
# Don't run in subshells
|
|
||||||
[[ "$ZSH_SUBSHELL" -eq 0 ]] || return 0
|
|
||||||
pwd > ~/.last-working-dir
|
|
||||||
}
|
|
||||||
|
|
||||||
# Changes directory to the last working directory
|
|
||||||
lwd() {
|
|
||||||
if [[ -r ~/.last-working-dir ]]; then
|
|
||||||
lwd=$(cat ~/.last-working-dir)
|
|
||||||
cd $lwd
|
|
||||||
echo $lwd
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user