25 Commits

Author SHA1 Message Date
8af65c3607 i3: Modified dunst to use different Mouse bindings 2021-07-22 16:38:50 +02:00
f0129a370f i3: Using better script for battery in bar 2021-07-22 16:21:55 +02:00
723c7ae6c1 i3: Added dunst to i3blocks 2021-07-22 16:08:51 +02:00
d2af9c3d5a i3: Fixed signal to volume i3blocklet 2021-07-22 16:03:47 +02:00
df42bdaefd manjaro: Added default files to .dotfiles 2021-07-21 08:35:06 +02:00
b27e71f228 i3: Changed chat workspace layout 2021-07-21 08:19:45 +02:00
80825915df Added README 2021-07-16 09:57:05 +02:00
dd44d1a7d2 i3: added shortcut for pamac-manager 2021-07-15 20:55:38 +02:00
594dd8f937 emacs: Deleted custom.el 2021-07-15 12:44:13 +02:00
1cf0ee3c42 emacs: Increased font size 2021-07-15 12:32:53 +02:00
84c57d53ea i3: removed title bar from windows 2021-07-15 12:05:51 +02:00
7f40a5bbea emacs: Add org agenda files 2021-07-15 11:57:32 +02:00
58906ccfdb Added setup-screens script 2021-07-12 09:41:48 +02:00
75c5ec6422 Fixed open terminal 2021-07-12 09:41:14 +02:00
ddaa1c4222 Added agenda file 2021-07-09 12:53:21 +02:00
6816ebc07f Merge branch 'master' into laptop 2021-07-09 12:20:25 +02:00
d1a8a9ba91 Fixed i3 config 2021-07-09 11:50:00 +02:00
6753a9e68e Merge branch 'master' into laptop 2021-07-09 10:08:56 +02:00
8b1a3f4eab Merge branch 'master' into laptop
Adapting to new .dotfiles structure
2021-07-09 09:44:35 +02:00
9abbff4c7e Restored battery display 2021-06-03 13:31:19 +02:00
61bf1af1af Fixed double firefox shortcut 2021-06-03 12:45:58 +02:00
db2287f15b Merge branch 'master' into laptop 2021-06-03 12:34:43 +02:00
491bfa2c49 Added nvim config 2021-04-28 10:24:58 +02:00
9224505e4e Some changes 2021-04-28 10:15:37 +02:00
ac567ebcaa Added dunst 2021-03-19 17:02:18 +01:00
205 changed files with 2387 additions and 7063 deletions

View File

@ -1,61 +0,0 @@
[helpers]
[default]
depends = []
[manjaro.files]
manjaro = "~"
[mc.files]
mc = "~/.config/mc"
[vim.files]
# type symbolic prevents interpreting '{{' as template
"vim/.vimrc" = { target = "~/.vimrc", type = "symbolic" }
[nvim.files]
"vim/init.vim" = { target = "~/.config/nvim/init.vim", type = "symbolic" }
[i3.files]
"i3/i3" = "~/.config/i3"
"i3/i3blocks" = { target = "~/.config/i3blocks", type = "symbolic" }
"i3/rofi" = "~/.config/rofi"
"i3/i3-scrot.conf" = "~/.config/i3-scrot.conf"
"i3/i3status-rust" = "~/.config/i3status-rust"
"i3/.profile" = "~/.profile"
[i3.variables]
monitor-primary = "not-specified"
monitor-secondary = "not-specified"
screenlayout-script = "echo screenlayout-script not specified"
bar-font-size = 15
tray-output = "tray_output primary"
[emacs.files]
"emacs/doom" = "~/.config/doom"
# "emacs/spacemacs/.spacemacs" = "~/.spacemacs"
# "emacs/chemacs/.emacs-profiles.el" = "~/.emacs-profiles.el"
[alacritty.files]
alacritty = "~/.config/alacritty"
[starship.files]
starship = "~/.config/"
[zsh.files]
"zsh/.zshrc" = "~/.zshrc"
"zsh/custom-plugins" = "~/.oh-my-zsh/custom"
[polybar.files]
polybar = "~/.config/polybar"
[leftwm.files]
leftwm = "~/.config/leftwm"
[xmonad.files]
xmonad = "~/.xmonad"
[nix.files]
"direnvrc" = "~/.config/direnv/direnvrc"
"nix/configuration.nix" = "/etc/nixos/configuration.nix"
"nix/flake.nix" = "/etc/nixos/flake.nix"

View File

@ -1,6 +0,0 @@
[i3.variables]
monitor-primary = "DVI-D-0"
monitor-secondary = "DVI-D-1"
screenlayout-script = "~/.screenlayout/2desktop-dvi.sh"
bar-font-size = 15
tray-output = "tray_output DVI-D-1"

View File

@ -1,4 +0,0 @@
[i3.variables]
monitor-primary = "HDMI-1"
monitor-secondary = "eDP-1"
screenlayout-script = "~/.screenlayout/laptop-at-home.sh"

View File

@ -1,5 +0,0 @@
[i3.variables]
monitor-primary = "HDMI-1"
monitor-secondary = "eDP-1"
tray-output = "tray_output eDP-1"
screenlayout-script = "$scripts/display-layoutpicker"

View File

@ -1,2 +0,0 @@
includes = [".dotter/kardorf.toml"]
packages = ["i3", "emacs", "alacritty", "zsh", "starship", "nix"]

View File

@ -1,2 +0,0 @@
includes = [".dotter/laptop.toml"]
packages = []

1
.envrc
View File

@ -1 +0,0 @@
use flake

View File

@ -1,57 +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: |
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

3
.gitignore vendored
View File

@ -1,3 +0,0 @@
.direnv
result*
*.qcow2

View File

@ -1,24 +0,0 @@
keys:
- &primary age1ee5udznhadk6m7jtglu4709rep080yjyd2ukzdl8jma4mm92y3psv0slpg
- &aspi-ssh age1q8lc5340gz5xw2f57nglrss68wv0j0hf36py2pdtrl6ky3yrq9qqk0njr4
- &pianonix-ssh age1hsmfz8fjxu83sax9lr487h8xr6cyge0apdq4zpge4c8jpcjj2cksj825ct
- &builder-ssh age1kw4kmdm45zprvdkrrpvgq966l7585vhusmum083qlwnr0xxgd3uqatcyja
creation_rules:
- path_regex: hosts/common/secrets.yaml$
key_groups:
- age:
- *primary
- *aspi-ssh
- *pianonix-ssh
- path_regex: hosts/builder/secrets.yaml$
key_groups:
- age:
- *primary
- *builder-ssh
- path_regex: hosts/pianonix/secrets.yaml$
key_groups:
- age:
- *primary
- *pianonix-ssh

11
README.md Normal file
View File

@ -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
```

View File

@ -1,33 +0,0 @@
#+title: My dotfiles
My dotfiles for which I am using =nix=.
The structure is managed by [[https://snowfall.org/guides/lib/quickstart/][Snowfall lib]]
* 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
#+end_src
- Add age public key to file:.sops.yaml
- Update keys
#+begin_src sh
sops updatekeys secrets/*
#+end_src

16
dependencies Normal file
View File

@ -0,0 +1,16 @@
dunst
element-desktop
feh
firefox
i3exit
i3-scrot
i3-wm
libqalculate
nextcloud
pavucontrol
rofi
stow
telegram-desktop
thunderbird
xclip
xwacomcalibrate

View File

@ -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"))))))

188
emacs/.config/doom/init.el Normal file
View File

@ -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))

View File

@ -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

View File

@ -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)

687
flake.lock generated
View File

@ -1,687 +0,0 @@
{
"nodes": {
"alacritty-theme": {
"flake": false,
"locked": {
"lastModified": 1740080741,
"narHash": "sha256-ROer+oqSY/Z5PAxZFJ5U9R+kMfWb596/1CuEWTcoMIk=",
"owner": "alacritty",
"repo": "alacritty-theme",
"rev": "687675f3f2245c80ff8bfe8180b0eb40dfc0bc86",
"type": "github"
},
"original": {
"owner": "alacritty",
"repo": "alacritty-theme",
"type": "github"
}
},
"base16-schemes": {
"flake": false,
"locked": {
"lastModified": 1696158499,
"narHash": "sha256-5yIHgDTPjoX/3oDEfLSQ0eJZdFL1SaCfb9d6M0RmOTM=",
"owner": "tinted-theming",
"repo": "base16-schemes",
"rev": "a9112eaae86d9dd8ee6bb9445b664fba2f94037a",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "base16-schemes",
"type": "github"
}
},
"crane": {
"locked": {
"lastModified": 1736101677,
"narHash": "sha256-iKOPq86AOWCohuzxwFy/MtC8PcSVGnrxBOvxpjpzrAY=",
"owner": "ipetkov",
"repo": "crane",
"rev": "61ba163d85e5adeddc7b3a69bb174034965965b2",
"type": "github"
},
"original": {
"owner": "ipetkov",
"repo": "crane",
"type": "github"
}
},
"deploy-rs": {
"inputs": {
"flake-compat": "flake-compat",
"nixpkgs": "nixpkgs",
"utils": "utils"
},
"locked": {
"lastModified": 1727447169,
"narHash": "sha256-3KyjMPUKHkiWhwR91J1YchF6zb6gvckCAY1jOE+ne0U=",
"owner": "serokell",
"repo": "deploy-rs",
"rev": "aa07eb05537d4cd025e2310397a6adcedfe72c76",
"type": "github"
},
"original": {
"owner": "serokell",
"repo": "deploy-rs",
"type": "github"
}
},
"disko": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1741786315,
"narHash": "sha256-VT65AE2syHVj6v/DGB496bqBnu1PXrrzwlw07/Zpllc=",
"owner": "nix-community",
"repo": "disko",
"rev": "0d8c6ad4a43906d14abd5c60e0ffe7b587b213de",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "disko",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1733328505,
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1741352980,
"narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"locked": {
"lastModified": 1659877975,
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_3": {
"inputs": {
"systems": "systems_3"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_4": {
"inputs": {
"systems": "systems_4"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1745340124,
"narHash": "sha256-zQTOl/JPGjiAQoU1yraCGfPBg7yr4nlHNdbZy8Ebrl4=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "c9433ae62fbb4bd09609e242569edc3b551e21a9",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"impermanence": {
"locked": {
"lastModified": 1737831083,
"narHash": "sha256-LJggUHbpyeDvNagTUrdhe/pRVp4pnS6wVKALS782gRI=",
"owner": "nix-community",
"repo": "impermanence",
"rev": "4b3e914cdf97a5b536a889e939fb2fd2b043a170",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "impermanence",
"type": "github"
}
},
"ixx": {
"inputs": {
"flake-utils": [
"nixvim",
"nuschtosSearch",
"flake-utils"
],
"nixpkgs": [
"nixvim",
"nuschtosSearch",
"nixpkgs"
]
},
"locked": {
"lastModified": 1729958008,
"narHash": "sha256-EiOq8jF4Z/zQe0QYVc3+qSKxRK//CFHMB84aYrYGwEs=",
"owner": "NuschtOS",
"repo": "ixx",
"rev": "9fd01aad037f345350eab2cd45e1946cc66da4eb",
"type": "github"
},
"original": {
"owner": "NuschtOS",
"ref": "v0.0.6",
"repo": "ixx",
"type": "github"
}
},
"music-reader": {
"inputs": {
"flake-utils": "flake-utils",
"naersk": "naersk",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1736544231,
"narHash": "sha256-U1wrjKPq+w9yKno8VRmIBV34/RXQEbpKQPnmdx+Jezk=",
"ref": "refs/heads/master",
"rev": "a00eade3bbf6992dbb6c62443845073864cb0ae2",
"revCount": 65,
"type": "git",
"url": "https://gitlab.julian-mutter.de/julian/music-reader"
},
"original": {
"type": "git",
"url": "https://gitlab.julian-mutter.de/julian/music-reader"
}
},
"naersk": {
"inputs": {
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1736429655,
"narHash": "sha256-BwMekRuVlSB9C0QgwKMICiJ5EVbLGjfe4qyueyNQyGI=",
"owner": "nix-community",
"repo": "naersk",
"rev": "0621e47bd95542b8e1ce2ee2d65d6a1f887a13ce",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "master",
"repo": "naersk",
"type": "github"
}
},
"nix-colors": {
"inputs": {
"base16-schemes": "base16-schemes",
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1707825078,
"narHash": "sha256-hTfge2J2W+42SZ7VHXkf4kjU+qzFqPeC9k66jAUBMHk=",
"owner": "misterio77",
"repo": "nix-colors",
"rev": "b01f024090d2c4fc3152cd0cf12027a7b8453ba1",
"type": "github"
},
"original": {
"owner": "misterio77",
"repo": "nix-colors",
"type": "github"
}
},
"nix-gl": {
"inputs": {
"flake-utils": "flake-utils_2",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1713543440,
"narHash": "sha256-lnzZQYG0+EXl/6NkGpyIz+FEOc/DSEG57AP1VsdeNrM=",
"owner": "nix-community",
"repo": "nixgl",
"rev": "310f8e49a149e4c9ea52f1adf70cdc768ec53f8a",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixgl",
"type": "github"
}
},
"nix-matlab": {
"inputs": {
"flake-compat": "flake-compat_2",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1741791880,
"narHash": "sha256-0nFAtEaSk0OZXIp3gjeK43e3drbzXjLLSye8RT6hKPU=",
"owner": "doronbehar",
"repo": "nix-matlab",
"rev": "a8ea92e365477727c924293255a143026e57a5ba",
"type": "gitlab"
},
"original": {
"owner": "doronbehar",
"repo": "nix-matlab",
"type": "gitlab"
}
},
"nixos-hardware": {
"locked": {
"lastModified": 1744633460,
"narHash": "sha256-fbWE4Xpw6eH0Q6in+ymNuDwTkqmFmtxcQEmtRuKDTTk=",
"owner": "nixos",
"repo": "nixos-hardware",
"rev": "9a049b4a421076d27fee3eec664a18b2066824cb",
"type": "github"
},
"original": {
"owner": "nixos",
"repo": "nixos-hardware",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1702272962,
"narHash": "sha256-D+zHwkwPc6oYQ4G3A1HuadopqRwUY/JkMwHz1YF7j4Q=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e97b3e4186bcadf0ef1b6be22b8558eab1cdeb5d",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1697935651,
"narHash": "sha256-qOfWjQ2JQSQL15KLh6D7xQhx0qgZlYZTYlcEiRuAMMw=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "e1e11fdbb01113d85c7f41cada9d2847660e3902",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1744440957,
"narHash": "sha256-FHlSkNqFmPxPJvy+6fNLaNeWnF1lZSgqVCl/eWaJRc4=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "26d499fc9f1d567283d5d56fcf367edd815dba1d",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-24.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 0,
"narHash": "sha256-DjkQPnkAfd7eB522PwnkGhOMuT9QVCZspDpJJYyOj60=",
"path": "/nix/store/g3jyakqb3ipnr6gz5rw10fb17ckr2z00-source",
"type": "path"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1744932701,
"narHash": "sha256-fusHbZCyv126cyArUwwKrLdCkgVAIaa/fQJYFlCEqiU=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "b024ced1aac25639f8ca8fdfc2f8c4fbd66c48ef",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixvim": {
"inputs": {
"flake-parts": "flake-parts",
"nixpkgs": [
"nixpkgs"
],
"nuschtosSearch": "nuschtosSearch"
},
"locked": {
"lastModified": 1745324162,
"narHash": "sha256-Sjb/LvtWpPtSXacjJCTrLAmWtXNJd0SWxO3PzTvD7Tc=",
"owner": "nix-community",
"repo": "nixvim",
"rev": "60638182b8d1b0fe13631d02eafaf8903499ee60",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixvim",
"type": "github"
}
},
"nuschtosSearch": {
"inputs": {
"flake-utils": "flake-utils_3",
"ixx": "ixx",
"nixpkgs": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1739738736,
"narHash": "sha256-Rl4Fw+3PsLTEzzUGlB8kePaiIersDbv5voAif3D6LoM=",
"owner": "NuschtOS",
"repo": "search",
"rev": "9ff62c8e1fbe5dc649dee680c7eb4935936c8ac3",
"type": "github"
},
"original": {
"owner": "NuschtOS",
"repo": "search",
"type": "github"
}
},
"root": {
"inputs": {
"alacritty-theme": "alacritty-theme",
"deploy-rs": "deploy-rs",
"disko": "disko",
"home-manager": "home-manager",
"impermanence": "impermanence",
"music-reader": "music-reader",
"nix-colors": "nix-colors",
"nix-gl": "nix-gl",
"nix-matlab": "nix-matlab",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_3",
"nixpkgs-stable": "nixpkgs-stable",
"nixvim": "nixvim",
"sheet-organizer": "sheet-organizer",
"sops-nix": "sops-nix",
"systems": "systems_5",
"yazi-flavors": "yazi-flavors"
}
},
"sheet-organizer": {
"inputs": {
"crane": "crane",
"flake-utils": "flake-utils_4",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1737048258,
"narHash": "sha256-QcprTngXkN/XuaiSKrswJUHEV+Nz3dSzP6zcLq00Y48=",
"ref": "refs/heads/master",
"rev": "67d5dac0d1a1c0ae0beaf972881976a8b0908fd1",
"revCount": 73,
"type": "git",
"url": "https://gitlab.julian-mutter.de/julian/sheet-organizer"
},
"original": {
"type": "git",
"url": "https://gitlab.julian-mutter.de/julian/sheet-organizer"
}
},
"sops-nix": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1741644481,
"narHash": "sha256-E0RrMykMtEv15V3QhpsFutgoSKhL1JBhidn+iZajOyg=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "e653d71e82575a43fe9d228def8eddb73887b866",
"type": "github"
},
"original": {
"owner": "Mic92",
"repo": "sops-nix",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_3": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_4": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_5": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"yazi-flavors": {
"flake": false,
"locked": {
"lastModified": 1741392393,
"narHash": "sha256-iTMch0T933Tvofvo3ZzFwk+PNs+dsK0SrAIlJ03v73E=",
"owner": "yazi-rs",
"repo": "flavors",
"rev": "b929df6bdb56536e14c1fc24c9659f441b961f28",
"type": "github"
},
"original": {
"owner": "yazi-rs",
"repo": "flavors",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

188
flake.nix
View File

@ -1,188 +0,0 @@
{
description = "Home Manager configuration of julian";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
systems.url = "github:nix-systems/default-linux";
nixos-hardware.url = "github:nixos/nixos-hardware";
impermanence.url = "github:nix-community/impermanence";
nix-colors.url = "github:misterio77/nix-colors";
deploy-rs.url = "github:serokell/deploy-rs";
home-manager = {
url = "github:nix-community/home-manager";
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
alacritty-theme = {
url = "github:alacritty/alacritty-theme";
flake = false;
};
yazi-flavors = {
url = "github:yazi-rs/flavors";
flake = false;
};
nixvim = {
url = "github:nix-community/nixvim";
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;
config.permittedInsecurePackages = [
"olm-3.2.16"
];
warn-dirty = false;
}
);
in
{
inherit lib;
nixosModules = import ./modules/nixos;
homeManagerModules = import ./modules/home-manager;
overlays = import ./overlays { inherit inputs outputs; };
# hydraJobs = import ./hydra.nix { inherit inputs outputs; }; # TODO add hydra jobs here?
packages = forEachSystem (pkgs: import ./pkgs { inherit pkgs; });
devShells = forEachSystem (pkgs: import ./shell.nix { inherit pkgs; });
formatter = forEachSystem (pkgs: pkgs.alejandra);
nixosConfigurations = {
# Main laptop
aspi = lib.nixosSystem {
modules = [ ./hosts/aspi ];
specialArgs = {
inherit inputs outputs;
};
};
# Piano raspberry pi
pianonix = lib.nixosSystem {
modules = [ ./hosts/pianonix ];
specialArgs = {
inherit inputs outputs;
};
};
kardorf = lib.nixosSystem {
modules = [ ./hosts/pianonix ];
specialArgs = {
inherit inputs outputs;
};
};
};
# Standalone HM
homeConfigurations = {
# Main laptop
"julian@aspi" = lib.homeManagerConfiguration {
modules = [
./homes/julian/aspi.nix
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
# Media server (RPi)
"julian@pianonix" = lib.homeManagerConfiguration {
modules = [
./homes/julian/pianonix.nix
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.aarch64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"julian@kardorf" = lib.homeManagerConfiguration {
modules = [
./homes/julian/kardorf.nix
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.aarch64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"julian@v3ms" = lib.homeManagerConfiguration {
modules = [
./homes/julian/v3ms
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.aarch64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
};
# deploy-rs node configuration
deploy.nodes = {
pianonix = {
hostname = "pianonix.local";
profiles.system = {
sshUser = "root";
user = "root";
path = inputs.deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.pianonix;
confirmTimeout = 90; # default: 30s; raspberrypi takes a little longer restarting services
};
};
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;
};
};
};
};
}

View File

@ -1,30 +0,0 @@
{
imports = [
./global
./features/fish
./features/direnv
./features/topgrade
./features/neovim
./features/kitty
./features/wezterm
./features/alacritty
./features/yazi
./features/emacs
# ./features/i3
./features/hyprland
./features/nix-helper
./features/desktop
./features/suites/cli
./features/suites/desktop
./features/suites/development
];
hostName = "aspi";
is-nixos = true;
terminal = "kitty";
}

View File

@ -1,3 +0,0 @@
import = [
"~/.config/alacritty/theme/themes/smoooooth.toml"
]

View File

@ -1,18 +0,0 @@
{
lib,
pkgs,
inputs,
config,
...
}:
{
home.packages = with pkgs; [ alacritty ];
home.file = {
".config/alacritty/theme".source = "${inputs.alacritty-theme}";
".config/alacritty/alacritty.toml".source = ./alacritty.toml;
};
home.sessionVariables.TERMINAL = lib.mkIf (config.terminal == "alacritty") "alacritty";
}

View File

@ -1,34 +0,0 @@
{
config,
pkgs,
inputs,
...
}:
let
inherit (inputs.nix-colors.lib-contrib { inherit pkgs; }) gtkThemeFromScheme;
in
{
# Do not make conditional, just toggle things on and off
imports = [ inputs.nix-colors.homeManagerModules.default ]; # TODO: what does this do
# home.sessionVariables.GTK_THEME = "Catppuccin-Mocha-Compact-Blue-dark";
gtk = {
enable = true;
theme = {
name = inputs.nix-colors.colorschemes.${config.colorscheme.name}.slug;
package = gtkThemeFromScheme {
scheme = inputs.nix-colors.colorschemes.${config.colorscheme.name};
};
};
iconTheme = {
name = "Papirus-Dark";
package = pkgs.papirus-icon-theme;
};
cursorTheme = {
package = pkgs.apple-cursor;
name = "macOS-BigSur";
size = 24;
};
};
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 823 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 759 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1024 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 499 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 607 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 719 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 464 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 831 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 354 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 861 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 267 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 239 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 299 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 261 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 269 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 216 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 342 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 412 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 595 KiB

View File

@ -1,6 +0,0 @@
{
programs.direnv = {
enable = true;
nix-direnv.enable = true;
};
}

View File

@ -1,75 +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-rfc-style # nix
nixd # nix lsp
dockfmt # docker
google-java-format # java
black # python
rustfmt # rust
shfmt
pyright
clang-tools # c++ lsp etc
ltex-ls # latex languagetool
graphviz
# Lsps for use with doom emacs
# neocmakelsp # cmake
emacs-all-the-icons-fonts
]
++ 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
'';
}

View File

@ -1,55 +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.fish = {
enable = true;
interactiveShellInit = "set fish_greeting"; # Disable default greeting
functions = {
mkcd = ''
mkdir $argv
cd $argv
'';
run = ''
nix run nixpkgs#"$argv[1]" -- $argv[2..-1]
'';
shell = ''
set args
for arg in $argv
set args $args nixpkgs#$arg
end
nix shell $args
'';
};
};
}

View File

@ -1,7 +0,0 @@
function lwd
cd $LAST_WORKING_DIR
end
function __onpwd --on-variable PWD
set --universal LAST_WORKING_DIR $PWD
end

View File

@ -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

View File

@ -1,24 +0,0 @@
{
lib,
pkgs,
config,
...
}:
with lib;
{
fonts.fontconfig.enable = true; # required to autoload fonts from packages
home.packages = with pkgs; [
nerd-fonts.fira-code
font-awesome
dejavu_fonts
noto-fonts
noto-fonts-cjk-sans
noto-fonts-emoji
liberation_ttf
fira-code
fira-code-symbols
source-code-pro
];
}

View File

@ -1,14 +0,0 @@
{
services.gammastep = {
enable = true;
provider = "geoclue2";
temperature = {
day = 6000;
night = 4600;
};
settings = {
general.adjustment-method = "wayland";
};
};
}

View File

@ -1,393 +0,0 @@
{
pkgs,
inputs,
config,
lib,
...
}:
let
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
palette
;
in
{
imports = [
# inputs.hyprland.homeManagerModules.default
./waybar
./wofi
./mako
# ./hyprlock
./wlogout
../gammastep
./swayidle.nix
./swaylock.nix
./zathura.nix
./waypipe.nix
./hyprbars.nix
];
xdg.portal = {
extraPortals = [ pkgs.xdg-desktop-portal-wlr ];
config.hyprland = {
default = [
"wlr"
"gtk"
];
};
};
programs.imv.enable = true; # TODO: what is that
home.packages = with pkgs; [
# hyprpicker # TODO
# hyprcursor # TODO
brightnessctl
# grimblast
frajul.hyprshot-gui
frajul.wl-ocr
wf-recorder
wl-clipboard
];
services.cliphist = {
enable = true;
};
home.sessionVariables = {
MOZ_ENABLE_WAYLAND = 1;
QT_QPA_PLATFORM = "wayland";
LIBSEAT_BACKEND = "logind";
};
# services.hypridle = {
# enable = true;
# settings = {
# general = {
# after_sleep_cmd = "hyprctl dispatch dpms on";
# ignore_dbus_inhibit = false;
# lock_cmd = "hyprlock";
# };
# listener = [
# {
# timeout = 300; # 5min
# on-timeout = "brightnessctl -s set 10"; # set monitor backlight to minimum, avoid 0 on OLED monitor.
# on-resume = "brightnessctl -r"; # monitor backlight restore.
# }
# {
# timeout = 360; # 6min
# on-timeout = "hyprlock"; # lock screen when timeout has passed
# }
# {
# timeout = 600; # 10min
# on-timeout = "hyprctl dispatch dpms off"; # screen off when timeout has passed
# on-resume = "hyprctl dispatch dpms on"; # screen on when activity is detected after timeout has fired.
# }
# ];
# };
# };
# services.hypridle.enable = true; # can be configured
services.network-manager-applet.enable = true;
wayland.windowManager.hyprland = {
# Whether to enable Hyprland wayland compositor
enable = true;
# package = config.lib.nixGL.wrap (
# pkgs.hyprland.override {
# # nixgl needed?
# wrapRuntimeDeps = false;
# }
# );
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"
];
};
# package = inputs.hyprland.packages."${pkgs.system}".hyprland; # does only work with nixos-unstable
# The hyprland package to use (simplifies use of plugins)
# package = inputs.hyprland.packages.${pkgs.system}.hyprland;
# Whether to enable XWayland
xwayland.enable = true;
# Optional
# Whether to enable hyprland-session.target on hyprland startup
# systemd.enable = true;
# Make PATH available to systemd services
# systemd.variables = [ "--all" ];
plugins = [
# inputs.hyprland-plugins.packages.${pkgs.system}.hyprbars # does only work with nixos-unstable
# hyprlandPlugins.hyprbars
];
settings = {
"$mod" = "SUPER";
# Monitors
monitor = ",preferred,auto,auto";
# Autostart
exec-once = [ "firefox" ];
# Look and Feel
general = {
gaps_in = 5;
gaps_out = 5;
layout = "dwindle";
# "col.active_border" = "0xff${palette.base0C} 0xff${palette.base0D} 270deg";
# "col.inactive_border" = "0xff${palette.base00}";
};
decoration = {
# power saving
blur.enabled = false;
# power saving
shadow.enabled = false;
};
# Dwindle layout
dwindle = {
pseudotile = true; # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true; # You probably want this
smart_split = false;
smart_resizing = false;
force_split = 2;
# no_gaps_when_only = 2; # with border
};
# Master layout
master = {
new_status = "slave";
# no_gaps_when_only = 2; # with border
mfact = 0.5; # Do not make master bigger
};
animations = {
enabled = true;
animation = [
"windows,1,3,default,slide"
"fade,1,3,default"
"layers,1,3,default,slide"
"border,1,3,default"
"workspaces,1,3,default,slide"
];
};
exec = [
"hyprctl setcursor ${config.gtk.cursorTheme.name} ${toString config.gtk.cursorTheme.size}"
];
misc = {
# disable auto polling for config file changes
disable_autoreload = true;
force_default_wallpaper = 0;
vfr = true; # power saving
};
render = {
# we do, in fact, want direct scanout
direct_scanout = true;
};
# Input
input = {
kb_layout = "de";
natural_scroll = false;
follow_mouse = 1;
};
# Window rules
windowrulev2 = [
"suppressevent maximize, class:.*"
"workspace 1, class:firefox"
"workspace 9, class:nheko"
"workspace 9, class:org.telegram.desktop"
"workspace 10, class:thunderbird"
"float, class:qalculate-gtk"
"tile, class:MATLAB, title:MATLAB"
];
# Workspace rules
workspace = [
"1, monitor:HDMI-A-1"
"2, monitor:HDMI-A-1"
"3, monitor:HDMI-A-1"
"4, monitor:HDMI-A-1"
"5, monitor:HDMI-A-1"
"6, monitor:eDP-1"
"7, monitor:eDP-1"
"8, monitor:eDP-1"
"9, monitor:eDP-1"
"10, monitor:eDP-1"
# smart gaps (none when only one window in workspace)
"w[t1], gapsin:0, gapsout:0, border:1"
"w[tg1], gapsin:0, gapsout:0, border:1"
"f[1], gapsin:0, gapsout:0, border:1"
];
# Mouse binds
bindm = [
"$mod, mouse:272, movewindow" # leftclick
"$mod, mouse:273, resizewindow" # rightclick
];
# binds
bind =
[
# compositor commands
"$mod, Space, focuswindow, floating"
"$mod SHIFT, Space, togglefloating,"
"$mod, F, fullscreen,"
"$mod, X, killactive,"
"$mod, O, togglesplit," # dwindle
# opening applications
"$mod, D, exec, wofi --show drun,run"
"$mod, E, exec, pcmanfm"
"$mod, Return, exec, kitty"
"$mod, B, exec, firefox"
"$mod, C, exec, qalculate-gtk"
# other commands
"$mod SHIFT, E, exec, wlogout -p layer-shell"
"$mod, Escape, exec, wlogout -p layer-shell"
"$mod SHIFT, R, exec, hyprctl reload"
", Print, exec, hyprshot-gui"
# "$mod SHIFT, E, exec, pkill Hyprland"
# "$mod, G, togglegroup,"
# "$mod SHIFT, N, changegroupactive, f"
# "$mod SHIFT, P, changegroupactive, b"
# "$mod ALT, ,resizeactive,"
# media keys
", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
", XF86AudioPlay, exec, playerctl play-pause"
", XF86AudioPause, exec, playerctl pause"
", XF86AudioStop, exec, playerctl stop"
", XF86AudioNext, exec, playerctl next"
", XF86AudioPrev, exec, playerctl previous"
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
", XF86MonBrightnessUp, exec, brightnessctl --class backlight set 5%+"
", XF86MonBrightnessDown, exec, brightnessctl --class backlight set 5%-"
# move focus
"$mod, left, movefocus, l"
"$mod, H, movefocus, l"
"$mod, right, movefocus, r"
"$mod, L, movefocus, r"
"$mod, up, movefocus, u"
"$mod, K, movefocus, u"
"$mod, down, movefocus, d"
"$mod, J, movefocus, d"
# move window
"$mod SHIFT, left, movewindow, l"
"$mod SHIFT, H, movewindow, l"
"$mod SHIFT, right, movewindow, r"
"$mod SHIFT, L, movewindow, r"
"$mod SHIFT, up, movewindow, u"
"$mod SHIFT, K, movewindow, u"
"$mod SHIFT, down, movewindow, d"
"$mod SHIFT, J, movewindow, d"
# Switch workspaces with mainMod + [0-9]
"$mod, 1, workspace, 1"
"$mod, 2, workspace, 2"
"$mod, 3, workspace, 3"
"$mod, 4, workspace, 4"
"$mod, 5, workspace, 5"
"$mod, 6, workspace, 6"
"$mod, 7, workspace, 7"
"$mod, 8, workspace, 8"
"$mod, 9, workspace, 9"
"$mod, 0, workspace, 10"
# Move active window to a workspace with mainMod + SHIFT + [0-9]
"$mod SHIFT, 1, movetoworkspace, 1"
"$mod SHIFT, 2, movetoworkspace, 2"
"$mod SHIFT, 3, movetoworkspace, 3"
"$mod SHIFT, 4, movetoworkspace, 4"
"$mod SHIFT, 5, movetoworkspace, 5"
"$mod SHIFT, 6, movetoworkspace, 6"
"$mod SHIFT, 7, movetoworkspace, 7"
"$mod SHIFT, 8, movetoworkspace, 8"
"$mod SHIFT, 9, movetoworkspace, 9"
"$mod SHIFT, 0, movetoworkspace, 10"
# Move active window to a workspace without following with mainMod + CTRL + [0-9]
"$mod CTRL, 1, movetoworkspacesilent, 1"
"$mod CTRL, 2, movetoworkspacesilent, 2"
"$mod CTRL, 3, movetoworkspacesilent, 3"
"$mod CTRL, 4, movetoworkspacesilent, 4"
"$mod CTRL, 5, movetoworkspacesilent, 5"
"$mod CTRL, 6, movetoworkspacesilent, 6"
"$mod CTRL, 7, movetoworkspacesilent, 7"
"$mod CTRL, 8, movetoworkspacesilent, 8"
"$mod CTRL, 9, movetoworkspacesilent, 9"
"$mod CTRL, 0, movetoworkspacesilent, 10"
]
++
# Screen lock
(
let
swaylock = lib.getExe config.programs.swaylock.package;
in
lib.optionals config.programs.swaylock.enable [
"$mod,TAB,exec,${swaylock} --daemonize"
]
)
++
# Notification manager
(
let
makoctl = lib.getExe' config.services.mako.package "makoctl";
in
lib.optionals config.services.mako.enable [
"$mod,w,exec,${makoctl} dismiss"
"$mod SHIFT,W,exec,${makoctl} restore"
]
);
# plugin = {
# hyprbars = {
# bar_text_size = 10;
# bar_height = 16;
# bar_text_font = "Ubuntu Nerd Font";
# bar_precedence_over_border = true;
# bar_color = "rgb(${palette.base01})";
# hyprbars-button = [ "rgb(${palette.base03}), 14, 󰖭, hyprctl dispatch killactive" ];
# };
# };
};
};
}

View File

@ -1,80 +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
# ));
};
};
}

View File

@ -1,47 +0,0 @@
{
options,
config,
lib,
pkgs,
inputs,
...
}:
let
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
palette
;
in
{
programs.hyprlock.enable = true;
programs.hyprlock.settings = {
general = {
disable_loading_bar = true;
hide_cursor = true;
ignore_empty_input = true;
};
background = [
{
color = "#${palette.base00}";
# path = "screenshot";
# blur_passes = 3;
# blur_size = 8;
}
];
input-field = [
{
size = "200, 50";
position = "0, -80";
monitor = "";
dots_center = true;
fade_on_empty = false;
font_color = "#${palette.base0B}";
inner_color = "#${palette.base01}";
outer_color = "#${palette.base05}";
outline_thickness = 5;
placeholder_text = "Password...";
}
];
};
}

View File

@ -1,29 +0,0 @@
{
options,
config,
lib,
pkgs,
inputs,
...
}:
let
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
palette
;
in
{
home.packages = with pkgs; [ libnotify ];
services.mako = {
enable = true;
defaultTimeout = 5000; # milliseconds, can be overwritten by notification sender
# backgroundColor = "#${palette.base00}"; TODO fix
# textColor = "#${palette.base05}";
# borderColor = "#${palette.base0D}";
# progressColor = "over #${palette.base02}";
# extraConfig = ''
# [urgency=high]
# border-color=#${palette.base09}
# '';
};
}

View File

@ -1,62 +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;
systemdTarget = "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'";
}));
};
}

View File

@ -1,18 +0,0 @@
{
config,
pkgs,
...
}:
let
inherit (config.colorscheme) colors;
in
{
programs.swaylock = {
enable = true;
settings = {
color = "000000";
ignore-empty-password = true;
indicator-idle-visible = false;
};
};
}

View File

@ -1,96 +0,0 @@
{
"layer": "top",
"position": "bottom",
"mode": "dock",
"exclusive": true,
"passtrough": true,
"height": 16,
"modules-left": [
"hyprland/workspaces"
],
"modules-center": [],
"modules-right": ["idle_inhibitor", "disk", "cpu", "memory", "pulseaudio", "battery", "clock", "tray"],
"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": {
"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
}
}

View File

@ -1,38 +0,0 @@
{
options,
config,
pkgs,
lib,
inputs,
...
}:
let
palette = (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name}).palette;
in
{
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};
'';
}

View File

@ -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; */
/* } */

View File

@ -1,30 +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" ];
};
};
}

View File

@ -1,40 +0,0 @@
{
options,
config,
lib,
pkgs,
inputs,
...
}:
let
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
palette
;
in
{
home.packages = with pkgs; [ wlogout ];
# xdg.configFile."wlogout/style.css".text = ''
# * {
# all: unset;
# font-family: JetBrains Mono Nerd Font;
# }
# window {
# background-color: #${palette.base00};
# }
# button {
# color: #${palette.base01};
# font-size: 64px;
# background-color: rgba(0,0,0,0);
# outline-style: none;
# margin: 5px;
# }
# button:focus, button:active, button:hover {
# color: #${palette.base0D};
# transition: ease 0.4s;
# }
# '';
}

View File

@ -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

View File

@ -1,87 +0,0 @@
{
options,
config,
lib,
pkgs,
inputs,
...
}:
let
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
palette
;
in
{
home.packages = with pkgs; [ wofi ];
xdg.configFile."wofi/config".source = ./config;
xdg.configFile."wofi/style.css".text = ''
window {
margin: 5px;
border: 5px solid #181926;
background-color: #${palette.base00};
border-radius: 15px;
font-family: "JetBrainsMono";
font-size: 14px;
}
#input {
all: unset;
min-height: 36px;
padding: 4px 10px;
margin: 4px;
border: none;
color: #${palette.base05};
font-weight: bold;
background-color: #${palette.base01};
outline: none;
border-radius: 15px;
margin: 10px;
margin-bottom: 2px;
}
#inner-box {
margin: 4px;
padding: 10px;
font-weight: bold;
border-radius: 15px;
}
#outer-box {
margin: 0px;
padding: 3px;
border: none;
border-radius: 15px;
border: 5px solid #${palette.base01};
}
#scroll {
margin-top: 5px;
border: none;
border-radius: 15px;
margin-bottom: 5px;
}
#text:selected {
color: #${palette.base01};
margin: 0px 0px;
border: none;
border-radius: 15px;
}
#entry {
margin: 0px 0px;
border: none;
border-radius: 15px;
background-color: transparent;
}
#entry:selected {
margin: 0px 0px;
border: none;
border-radius: 15px;
background: #${palette.base0D};
background-size: 400% 400%;
}
'';
}

View File

@ -1,35 +0,0 @@
{ config, ... }:
let
inherit (config.colorscheme) colors;
in
{
programs.zathura = {
enable = true;
options = {
selection-clipboard = "clipboard";
# TODO fix
# font = "${config.fontProfiles.regular.name} ${toString config.fontProfiles.regular.size}";
# recolor = true;
# default-bg = "${colors.surface}";
# default-fg = "${colors.surface_bright}";
# statusbar-bg = "${colors.surface_container}";
# statusbar-fg = "${colors.on_surface_variant}";
# inputbar-bg = "${colors.surface}";
# inputbar-fg = "${colors.on_secondary}";
# notification-bg = "${colors.surface}";
# notification-fg = "${colors.on_secondary}";
# notification-error-bg = "${colors.error}";
# notification-error-fg = "${colors.on_error}";
# notification-warning-bg = "${colors.error}";
# notification-warning-fg = "${colors.on_error}";
# highlight-color = "${colors.tertiary}";
# highlight-active-color = "${colors.secondary}";
# completion-bg = "${colors.surface_bright}";
# completion-fg = "${colors.on_surface}";
# completions-highlight-bg = "${colors.secondary}";
# completions-highlight-fg = "${colors.on_secondary}";
# recolor-lightcolor = "${colors.surface}";
# recolor-darkcolor = "${colors.inverse_surface}";
};
};
}

View File

@ -1,52 +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.xorg.xset}/bin/xset s off
${pkgs.xorg.xset}/bin/xset -dpms
${pkgs.xorg.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" ];
}

View File

@ -1 +0,0 @@
scrot_dir=~/Pictures/screenshots

View File

@ -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 windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows 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

View File

@ -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-0"
set $monitor_right "DVI-D-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 windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows 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

View File

@ -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

View File

@ -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

View File

@ -1,3 +0,0 @@
#!/bin/sh
matlab -desktop -sd ~/dev/bachelor-thesis/simulation

View File

@ -1,27 +0,0 @@
#!/bin/sh
start_if_not_running()
{
program=$1
pidof -sq $program
if [ "$?" -eq "1" ]; then
start_program $1
else
echo "$program is already running"
fi
}
start_program()
{
program=$1
echo "Starting $program..."
$program & > /dev/null
}
i3-msg 'workspace 9; append_layout ~/.config/i3/workspace-messaging.json'
start_program nheko
sleep 0.1
start_program telegram-desktop
sleep 0.1
start_program thunderbird
sleep 0.1

View File

@ -1,20 +0,0 @@
#!/bin/sh
HDMI_SINK="alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_3__sink"
LAPTOP_SINK="alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp__sink"
HDMI_ICON=$(pactl info | grep -q $HDMI_SINK && echo "checkbox")
LAPTOP_ICON=$(pactl info | grep -q $LAPTOP_SINK && echo "checkbox")
HDMI_VOLUME=$(pactl get-sink-volume $HDMI_SINK | head -n 1 | awk '{print $5}')
LAPTOP_VOLUME=$(pactl get-sink-volume $LAPTOP_SINK | head -n 1 | awk '{print $5}')
read -r -d '' CONF <<EOF
Open Pavucontrol,pavucontrol,pavucontrol
^sep()
HDMI - $HDMI_VOLUME,pactl set-default-sink $HDMI_SINK,$HDMI_ICON
Laptop - $LAPTOP_VOLUME,pactl set-default-sink $LAPTOP_SINK,$LAPTOP_ICON
EOF
echo "$CONF" | jgmenu --simple

View File

@ -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"

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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') "

View File

@ -1,29 +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";
}

View File

@ -1,164 +0,0 @@
{
lib,
pkgs,
inputs,
...
}:
{
imports = [ inputs.nixvim.homeManagerModules.nixvim ];
home.sessionVariables = {
EDITOR = "nvim";
VISUAL = "nvim";
};
home.packages = with pkgs; [
git
gnumake
gcc
ripgrep
fd
stylua
black
nixfmt-rfc-style # nixfmt
];
programs.nixvim = {
enable = true;
viAlias = true;
vimAlias = true;
colorschemes.catppuccin = {
enable = true;
settings.flavour = "mocha";
};
globals.mapleader = " ";
opts = {
number = false;
relativenumber = false;
};
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<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;
# Shows file trees
oil = {
enable = true;
settings = {
view_options.show_hidden = true;
};
};
# Code formatting
conform-nvim = {
enable = true;
settings.formatters_by_ft = with pkgs; {
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;
servers = {
rust_analyzer = {
enable = true;
installCargo = true;
installRustc = true;
};
nixd.enable = true;
pyright.enable = true;
dockerls.enable = true;
lua_ls.enable = true;
};
};
};
};
}

View File

@ -1,18 +0,0 @@
{
lib,
pkgs,
...
}:
{
home.sessionVariables = {
FLAKE = "/home/julian/.dotfiles";
};
home.shellAliases = {
"os" = "nh os switch";
"hs" = "nh home switch";
};
home.packages = with pkgs; [ nh ];
}

View File

@ -1,16 +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;
};
}

View File

@ -1,54 +0,0 @@
{
pkgs,
...
}:
{
home.packages = with pkgs; [
bat
du-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
# nix-index
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
xorg.xkill
zip
## My scripts
frajul.edit-config
frajul.lntocp
frajul.sos
];
}

View File

@ -1,72 +0,0 @@
{
lib,
pkgs,
...
}:
{
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
programs.chromium = {
enable = true;
extensions = [
# Tampermonkey
{ id = "dhdgffkkebhmkfjojejmpbldmpobfkfo"; }
];
};
home.packages = with pkgs; [
arandr
calibre # ebook manager and viewer
# digikam
discord
# dvdisaster
# element-desktop
# rocketchat-desktop
thunderbird
tdesktop # telegram
# schildichat-desktop # not updated regularly
nheko
evince # Simple pdf reader, good for focusing on document content
firefox
# geogebra
cheese
handbrake
kitty # Terminal
libnotify
libreoffice
mate.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
unstable.path-of-building # Path of Building
# frajul.pob-dev-version # Path of Building
vlc
wineWowPackages.stable # 32-bit and 64-bit wine
winetricks
xclip # x11 clipboard access from terminal
xfce.mousepad # simple text editor
xournalpp # Edit pdf files
zoom-us # Video conferencing
zotero # Manage papers and other sources
pdfpc # Present slides in pdf form
## My scripts
frajul.open-messaging
frajul.xwacomcalibrate
];
}

View File

@ -1,85 +0,0 @@
{
pkgs,
...
}:
{
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
;
})
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
## My scripts
frajul.deploy-to-pianopi
(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
'')
];
}

View File

@ -1,29 +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"
];
};
};
};
}

View File

@ -1,36 +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"
'')
];
}

Some files were not shown because too many files have changed in this diff Show More