move flake to own repository

This commit is contained in:
Swarsel 2023-12-11 02:57:34 +01:00
commit 84b5cd816c
Signed by: swarsel
GPG key ID: 26A54C31F2A4FD84
55 changed files with 13637 additions and 0 deletions

104
.github/README.md vendored Normal file
View file

@ -0,0 +1,104 @@
###### Disclaimer
You probably do not want to use this setup verbatim. This is made to fit my specific use cases, with some strings hardcoded and some niche settings that are not needed on most hosts. Also, nothing is ever stable here and changes are made on a daily basis.
That being said, there is a lot of general configuration that you *probably* can use without changes; if you only want to use this repository as a starting point for your own configuration, you should be fine. See below for more information. Also, if you see something that can be done more efficiently or better in general, please let me know! :)
# \~SwarselSystems\~
<img src="swarselsystems_preview.png"/>
| | |
|---------------|----------------------|
| **Shell:** | zsh |
| **DM:** | greetd |
| **WM:** | SwayFX |
| **Bar:** | Waybar |
| **Editor:** | Emacs |
| **Terminal:** | kitty |
| **Launcher:** | fuzzel |
| **Alerts:** | mako |
| **Browser:** | firefox |
| **Theme:** | city-lights |
The files that are possibly of biggest interest are found here:
- [flake.nix](../.dotfiles/flake.nix)
- [Nix.org](../.dotfiles/Nix.org)
- [early-init.el](../.dotfiles/programs/emacs/early-init.el)
- [Emacs.org](../.dotfiles/Emacs.org)
This is a nix flakes based setup that manages multiple hosts, including mixed (NixOS with home-manager as a submodule) as well as standalone home-manager machines, also using some overlays etc. It is all wrapped in literal configuration .org files, because that allows me to have easy access without actually having to remember where the specific configuration files are all located. flake.nix and early-init.el are not tangled at the moment, flake.nix mostly for the reason that I rarely need to update it; early-init.el for the reason that adding it would break the emacs-overlay parsing.
Have fun!
### General Nix tips
Sadly all things nix feel a bit underdocumented. Below is a small list of tips that I thought could be helpful if you are new to the nix ecosystem:
- Once you have the experimental feature `nix-command` enabled, you can temporarily install any package using `nix shell nixpkgs#<PACKAGE_NAME>` - this can be e.g. useful if you accidentally removed home-manager from your packages on a non-NixOS machine.
- The `nix [...]` commands are generally very useful, more info can be found here: https://nixos.org/manual/nix/stable/command-ref/new-cli/nix
- These links are your best friends:
- https://search.nixos.org/packages
- https://search.nixos.org/options
- https://nix-community.github.io/home-manager/options.html / https://mipmip.github.io/home-manager-option-search/
- Also useful is the [NixOS wiki](https://nixos.wiki/wiki/Main_Page), but some pages are outdated, so use with some care
- When you are trying to setup a new configuration part, GitHub code search can really help you to find a working configuration.
- getting packages not maintained in a standard repository can be done in most cases easily with fetchFromGithub (https://ryantm.github.io/nixpkgs/builders/fetchers/)
### Deployment
Below is a rough general guide to setup this system on a new NixOS host. **Again**, this is not recommended as this is a personal configuration. This also might not be the most efficient way to deploy a new Nix system, but it should work in the general case.
For a pure Home-Manager configuration, you need a few different steps. The biggest change is that you then want to call `home-manager --flake .#<your-username>@<your-hostname> switch` as the last step instead of `nixos-rebuild [...]`. A complete general guide for that case cannot really be given since you are most likely setting up the flake on a existing machine that already has a lot of configuration. If you are setting up a new system, I would recommend to use NixOS unless circumstances force you to use something else.
###### To do that:
1) adapt [flake.nix](../.dotfiles/flake.nix):
- Copy either one of the nixosSystem or homeManagerConfiguration blocks depending on what configuration you are going to be using.
- Adapt all lines referencing the host- and username to the names chosen for your system.
- Also adapt the file paths to reference the files where you want your specific configuration to be stored.
- If using home-manager on the host, consider the settings for `home-manager.useGlobalPkgs` and `home-manager.useUserPackages` - in this repo they are moved to the general NixOS section to reduce code duplication.
2) adapt [Nix.org](../.dotfiles/Nix.org)
- Make a copy of "System Specific Configurations/TEMPLATE".
- Adapt all references to TEMPLATE to your host- and usernames etc (make sure to also create that directory where it is to be tangled to).
- Add the settings needed for your specific machine.
- Make sure Nix.org was actually tangled.
- **Beware:** This assumes you have access to a way of tangling an .org file (for most people this will mean having a working Emacs). If you do not have that, see below.
3) Add your changes to your fork of the repository.
###### If you have no way of tangling .org files
In that case make a copy of the /.dotfiles/profiles/TEMPLATE folder and adapt each file manually according to the above.
##### Actual system setup
0) Make sure you have an internet connection (ethernet or for Wi-Fi e.g. call `nmtui`)
1) `sudo nano /etc/nixos/configuration.nix`
- add the following packages to `environment.systemPackages`:
- `git `
- `gnupg`
- `ssh-to-age`
- add
```nix
nix = {
package = pkgs.nixFlakes;
extraOptions = ''
experimental-features = nix-command flakes
'';
};
```
2) `sudo nixos-rebuild switch`
###### Setup of the bare repository (these steps are not mandatory but make managing the repository easier)
3) `echo ".cfg" >> .gitignore`
4) `git clone --bare https://github.com/Swarsel/dotfiles.git $HOME/.cfg`
5) `alias config='git --git-dir=$HOME/.cfg --work-tree=$HOME'`
6) `config config --local status.showUntrackedFiles no`
7) `config checkout`
###### Host SSH key setup for use with sops-nix
8) `ssh-keygen -t ed25519 -C "<YOUR_HOSTNAME> sops"`, use e.g. "sops" as name for `<SOPS_KEY>`
9) `cd ~/.dotfiles`
10) `cat ~/<SOPS_KEY>.pub | ssh-to-age >> ~/.dotfiles/.sops.yaml`
11) `nano .sops.yaml` - add last line to keys and make a new &system_<xxx> entry, make sure to remove that last line
12) `cp ~/<SOPS_KEY>.pub ~/.dotfiles/secrets/keys/<YOUR_HOSTNAME>.pub`
13) move `<SOPS_KEY>` to where you want to store your host private key
14) update entry for `sops.age.sshKeyPaths` in Nix.org to the location that you have just moved the private key to (or manually edit `.dotfiles/profiles/<YOUR_HOSTNAME>/home.nix`)
###### Switching to the configuration
15) `cp /etc/nixos/hardware-configuration.nix ~/.dotfiles/profiles/<YOUR_HOSTNAME>`
16) `sudo nixos-rebuild --flake .#<YOUR_HOSTNAME> switch`
- This build will take a while (mostly because it fully builds Emacs), so do not worry too much :)
- In case you get a dependency error for some of the `firefox-addons`, just comment out those specific extensions and try to uncomment them again a few days later. Sometimes when these packages are updated, the old .xpi file is deleted by the addon developer and the download link breaks. It is usually updated swiftly. If you do not want to wait, you can also package the addon yourself - there is one example in the files how this is generally done.

BIN
.github/swarselsystems_preview.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 MiB

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
secrets/keys/pubring.kbx
secrets/keys/private-keys-v1.d/

24
.sops.yaml Normal file
View file

@ -0,0 +1,24 @@
# This example uses YAML anchors which allows reuse of multiple keys
# without having to repeat yourself.
# Also see https://github.com/Mic92/dotfiles/blob/master/nixos/.sops.yaml
# for a more complex example.
keys:
- &admin_swarsel 4BE7925262289B476DBBC17B76FD3810215AE097
- &server_nixos age1zdjm8qa5t25mca0xxhhkpuh85mgg4l267mqjj2pdttksq7zg4unqdmqyp4
- &server_surface age1zlnxraee6tddr07xn59mx5rdexw8qxryd53eqlsajasfhfy78fkq705dfg
- &server_stand age1hkajkcje5xvg8jd4zj2e0s9tndpv36hwhn7p38x9lyq2z8g7v45q2nhlej
creation_rules:
- path_regex: secrets/general/[^/]+\.(yaml|json|env|ini)$
key_groups:
- pgp:
- *admin_swarsel
age:
- *server_nixos
- *server_surface
- *server_stand
- path_regex: secrets/surface/[^/]+\.(yaml|json|env|ini)$
key_groups:
- pgp:
- *admin_swarsel
age:
- *server_surface

2490
Emacs.org Normal file

File diff suppressed because it is too large Load diff

2988
Nix.org Normal file

File diff suppressed because it is too large Load diff

692
flake.lock generated Normal file
View file

@ -0,0 +1,692 @@
{
"nodes": {
"base16": {
"inputs": {
"fromYaml": "fromYaml"
},
"locked": {
"lastModified": 1689633990,
"narHash": "sha256-iwvQg2Vx0IIDWZaKo8Xmzxlv1YPHg+Kp/QSv8dRv0RY=",
"owner": "SenchoPens",
"repo": "base16.nix",
"rev": "dddf2e1c04845d43c89a8e9e37d574519649a404",
"type": "github"
},
"original": {
"owner": "SenchoPens",
"repo": "base16.nix",
"type": "github"
}
},
"base16-alacritty": {
"flake": false,
"locked": {
"lastModified": 1674275109,
"narHash": "sha256-Adwx9yP70I6mJrjjODOgZJjt4OPPe8gJu7UuBboXO4M=",
"owner": "aarowill",
"repo": "base16-alacritty",
"rev": "63d8ae5dfefe5db825dd4c699d0cdc2fc2c3eaf7",
"type": "github"
},
"original": {
"owner": "aarowill",
"repo": "base16-alacritty",
"type": "github"
}
},
"base16-fish": {
"flake": false,
"locked": {
"lastModified": 1622559957,
"narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=",
"owner": "tomyun",
"repo": "base16-fish",
"rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe",
"type": "github"
},
"original": {
"owner": "tomyun",
"repo": "base16-fish",
"type": "github"
}
},
"base16-foot": {
"flake": false,
"locked": {
"lastModified": 1696725948,
"narHash": "sha256-65bz2bUL/yzZ1c8/GQASnoiGwaF8DczlxJtzik1c0AU=",
"owner": "tinted-theming",
"repo": "base16-foot",
"rev": "eedbcfa30de0a4baa03e99f5e3ceb5535c2755ce",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "base16-foot",
"type": "github"
}
},
"base16-helix": {
"flake": false,
"locked": {
"lastModified": 1696727917,
"narHash": "sha256-FVrbPk+NtMra0jtlC5oxyNchbm8FosmvXIatkRbYy1g=",
"owner": "tinted-theming",
"repo": "base16-helix",
"rev": "dbe1480d99fe80f08df7970e471fac24c05f2ddb",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "base16-helix",
"type": "github"
}
},
"base16-kitty": {
"flake": false,
"locked": {
"lastModified": 1665001328,
"narHash": "sha256-aRaizTYPpuWEcvoYE9U+YRX+Wsc8+iG0guQJbvxEdJY=",
"owner": "kdrag0n",
"repo": "base16-kitty",
"rev": "06bb401fa9a0ffb84365905ffbb959ae5bf40805",
"type": "github"
},
"original": {
"owner": "kdrag0n",
"repo": "base16-kitty",
"type": "github"
}
},
"base16-tmux": {
"flake": false,
"locked": {
"lastModified": 1696725902,
"narHash": "sha256-wDPg5elZPcQpu7Df0lI5O8Jv4A3T6jUQIVg63KDU+3Q=",
"owner": "tinted-theming",
"repo": "base16-tmux",
"rev": "c02050bebb60dbb20cb433cd4d8ce668ecc11ba7",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "base16-tmux",
"type": "github"
}
},
"base16-vim": {
"flake": false,
"locked": {
"lastModified": 1663659192,
"narHash": "sha256-uJvaYYDMXvoo0fhBZUhN8WBXeJ87SRgof6GEK2efFT0=",
"owner": "chriskempson",
"repo": "base16-vim",
"rev": "3be3cd82cd31acfcab9a41bad853d9c68d30478d",
"type": "github"
},
"original": {
"owner": "chriskempson",
"repo": "base16-vim",
"type": "github"
}
},
"crane": {
"inputs": {
"nixpkgs": [
"lanzaboote",
"nixpkgs"
]
},
"locked": {
"lastModified": 1699218802,
"narHash": "sha256-5l0W4Q7z7A4BCstaF5JuBqXOVrZ3Vqst5+hUnP7EdUc=",
"owner": "ipetkov",
"repo": "crane",
"rev": "2d6c2aaff5a05e443eb15efddc21f9c73720340c",
"type": "github"
},
"original": {
"owner": "ipetkov",
"repo": "crane",
"type": "github"
}
},
"emacs-overlay": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
"lastModified": 1702175135,
"narHash": "sha256-oiXRVftJwABfQ85KucnUp35RN8F4jxGDg3kXMURspXo=",
"owner": "nix-community",
"repo": "emacs-overlay",
"rev": "956b70d64d5ff36c53242cd335fe8274c0cfa2e7",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "emacs-overlay",
"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": 1673956053,
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"lanzaboote",
"nixpkgs"
]
},
"locked": {
"lastModified": 1698882062,
"narHash": "sha256-HkhafUayIqxXyHH1X8d9RDl1M2CkFgZLjKD3MzabiEo=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "8c9fa2545007b49a5db5f650ae91f227672c3877",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-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"
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1694529238,
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_3": {
"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"
}
},
"fromYaml": {
"flake": false,
"locked": {
"lastModified": 1689549921,
"narHash": "sha256-iX0pk/uB019TdBGlaJEWvBCfydT6sRq+eDcGPifVsCM=",
"owner": "SenchoPens",
"repo": "fromYaml",
"rev": "11fbbbfb32e3289d3c631e0134a23854e7865c84",
"type": "github"
},
"original": {
"owner": "SenchoPens",
"repo": "fromYaml",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"lanzaboote",
"pre-commit-hooks-nix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1660459072,
"narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "a20de23b925fd8264fd7fad6454652e142fd7f73",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1702159252,
"narHash": "sha256-4mYOL1EhOmt92OtYsHXRViWrSHvR5obLfCllMmQsUzY=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "e6b7303bd149723c57ca23f5a9428482d6b07306",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"home-manager_2": {
"inputs": {
"nixpkgs": [
"stylix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1700847865,
"narHash": "sha256-uWaOIemGl9LF813MW0AEgCBpKwFo2t1Wv3BZc6e5Frw=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "8cedd63eede4c22deb192f1721dd67e7460e1ebe",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"lanzaboote": {
"inputs": {
"crane": "crane",
"flake-compat": "flake-compat",
"flake-parts": "flake-parts",
"flake-utils": "flake-utils_2",
"nixpkgs": "nixpkgs",
"pre-commit-hooks-nix": "pre-commit-hooks-nix",
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1701686621,
"narHash": "sha256-OAR4jhfldEGuXH8DB9w8YrFLcEsZsApWdYPsmJHwM/E=",
"owner": "nix-community",
"repo": "lanzaboote",
"rev": "5655251a38f2a31f26aebae3e0d7fe0f5bd74683",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "lanzaboote",
"type": "github"
}
},
"nixgl": {
"inputs": {
"flake-utils": "flake-utils_3",
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1685908677,
"narHash": "sha256-E4zUPEUFyVWjVm45zICaHRpfGepfkE9Z2OECV9HXfA4=",
"owner": "guibou",
"repo": "nixGL",
"rev": "489d6b095ab9d289fe11af0219a9ff00fe87c7c5",
"type": "github"
},
"original": {
"owner": "guibou",
"repo": "nixGL",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1699354722,
"narHash": "sha256-abmqUReg4PsyQSwv4d0zjcWpMHrd3IFJiTb2tZpfF04=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "cfbb29d76949ae53c457f152c52c173ea4bdd862",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable-small",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1701805708,
"narHash": "sha256-hh0S14E816Img0tPaNQSEKFvSscSIrvu1ypubtfh6M4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "0561103cedb11e7554cf34cea81e5f5d578a4753",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-23.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable_2": {
"locked": {
"lastModified": 1685801374,
"narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "c37ca420157f4abc31e26f436c1145f8951ff373",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-23.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable_3": {
"locked": {
"lastModified": 1702148972,
"narHash": "sha256-h2jODFP6n+ABrUWcGRSVPRFfLOkM9TJ2pO+h+9JcaL0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b8f33c044e51de6dde3ad80a9676945e0e4e3227",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "release-23.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1660551188,
"narHash": "sha256-a1LARMMYQ8DPx1BgoI/UN4bXe12hhZkCNqdxNi6uS0g=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "441dc5d512153039f19ef198e662e4f3dbb9fd65",
"type": "github"
},
"original": {
"owner": "nixos",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1701718080,
"narHash": "sha256-6ovz0pG76dE0P170pmmZex1wWcQoeiomUZGggfH9XPs=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "2c7f3c0fb7c08a0814627611d9d7d45ab6d75335",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1702029940,
"narHash": "sha256-qM3Du0perpLesh5hr87mVPZ79McMUKIWUH7EQMh2kWo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e9ef8a102c555da4f8f417fe5cf5bd539d8a38b7",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1700856099,
"narHash": "sha256-RnEA7iJ36Ay9jI0WwP+/y4zjEhmeN6Cjs9VOFBH7eVQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "0bd59c54ef06bc34eca01e37d689f5e46b3fe2f1",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nur": {
"locked": {
"lastModified": 1702190088,
"narHash": "sha256-TpNx/FtOHakBT29LOaG9Cd73lF+4PLzEadPGnkExHrM=",
"owner": "nix-community",
"repo": "NUR",
"rev": "d4924c10dd9ea639e32cee3761adfa0461c5130a",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "NUR",
"type": "github"
}
},
"pre-commit-hooks-nix": {
"inputs": {
"flake-compat": [
"lanzaboote",
"flake-compat"
],
"flake-utils": [
"lanzaboote",
"flake-utils"
],
"gitignore": "gitignore",
"nixpkgs": [
"lanzaboote",
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable_2"
},
"locked": {
"lastModified": 1699271226,
"narHash": "sha256-8Jt1KW3xTjolD6c6OjJm9USx/jmL+VVmbooADCkdDfU=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "ea758da1a6dcde6dc36db348ed690d09b9864128",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"type": "github"
}
},
"root": {
"inputs": {
"emacs-overlay": "emacs-overlay",
"home-manager": "home-manager",
"lanzaboote": "lanzaboote",
"nixgl": "nixgl",
"nixpkgs": "nixpkgs_3",
"nur": "nur",
"sops-nix": "sops-nix",
"stylix": "stylix"
}
},
"rust-overlay": {
"inputs": {
"flake-utils": [
"lanzaboote",
"flake-utils"
],
"nixpkgs": [
"lanzaboote",
"nixpkgs"
]
},
"locked": {
"lastModified": 1699409596,
"narHash": "sha256-L3g1smIol3dGTxkUQOlNShJtZLvjLzvtbaeTRizwZBU=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "58240e1ac627cef3ea30c7732fedfb4f51afd8e7",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"sops-nix": {
"inputs": {
"nixpkgs": "nixpkgs_4",
"nixpkgs-stable": "nixpkgs-stable_3"
},
"locked": {
"lastModified": 1702177193,
"narHash": "sha256-J2409SyXROoUHYXVy9h4Pj0VU8ReLuy/mzBc9iK4DBg=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "d806e546f96c88cd9f7d91c1c19ebc99ba6277d9",
"type": "github"
},
"original": {
"owner": "Mic92",
"repo": "sops-nix",
"type": "github"
}
},
"stylix": {
"inputs": {
"base16": "base16",
"base16-alacritty": "base16-alacritty",
"base16-fish": "base16-fish",
"base16-foot": "base16-foot",
"base16-helix": "base16-helix",
"base16-kitty": "base16-kitty",
"base16-tmux": "base16-tmux",
"base16-vim": "base16-vim",
"flake-compat": "flake-compat_2",
"home-manager": "home-manager_2",
"nixpkgs": "nixpkgs_5"
},
"locked": {
"lastModified": 1701532764,
"narHash": "sha256-Jrizp/nITbul2HBIraQRDw5lyJnzTsj0K9wZUFYX2gg=",
"owner": "danth",
"repo": "stylix",
"rev": "17a452c5d58bb90057d49c7e3e613b5e6dc1c0f4",
"type": "github"
},
"original": {
"owner": "danth",
"repo": "stylix",
"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"
}
}
},
"root": "root",
"version": 7
}

127
flake.nix Normal file
View file

@ -0,0 +1,127 @@
{
description = "SwarseFlake - Nix Flake for all SwarselSystems";
inputs = {
nixpkgs.url = github:nixos/nixpkgs/nixos-unstable;
# user-level configuration
home-manager = {
url = github:nix-community/home-manager;
inputs.nixpkgs.follows = "nixpkgs";
};
# overlay to access bleeding edge emacs
emacs-overlay = {
url = github:nix-community/emacs-overlay;
inputs.nixpkgs.follows = "nixpkgs";
};
# nix user repository
# i use this mainly to not have to build all firefox extensions
# myself as well as for the emacs-init package (tbd)
nur.url = github:nix-community/NUR;
# provides GL to non-NixOS hosts
nixgl.url = github:guibou/nixGL;
# manages all themeing using Home-Manager
stylix.url = github:danth/stylix;
# nix secrets management
sops-nix.url = github:Mic92/sops-nix;
# enable secure boot on NixOS
lanzaboote.url = github:nix-community/lanzaboote;
};
outputs = inputs@{ self, nixpkgs, home-manager, emacs-overlay, nur, nixgl, stylix, sops-nix, lanzaboote, ... }: let
system = "x86_64-linux"; # not very portable, but I do not use other architectures at the moment
pkgs = import nixpkgs { inherit system;
overlays = [ emacs-overlay.overlay
nur.overlay
nixgl.overlay
];
config.allowUnfree = true;
};
# NixOS modules that can only be used on NixOS systems
nixModules = [ stylix.nixosModules.stylix
./profiles/common/nixos.nix
];
# Home-Manager modules wanted on non-NixOS systems
homeModules = [ stylix.homeManagerModules.stylix
];
# Home-Manager modules wanted on both NixOS and non-NixOS systems
mixedModules = [ sops-nix.homeManagerModules.sops
./profiles/common/home.nix
];
in {
# NixOS setups - run home-manager as a NixOS module for better compatibility
# another benefit - full rebuild on nixos-rebuild switch
# run rebuild using `nswitch`
# NEW HOSTS: For a new host, decide whether a NixOS (nixosConfigurations) or non-NixOS (homeConfigurations) is used.
# Make sure to move hardware-configuration to the appropriate location, by default it is found in /etc/nixos/.
nixosConfigurations = {
onett = nixpkgs.lib.nixosSystem {
specialArgs = {inherit inputs pkgs; };
modules = nixModules ++ [
./profiles/onett/nixos.nix
home-manager.nixosModules.home-manager
{
home-manager.users.swarsel.imports = mixedModules ++ [
./profiles/onett/home.nix
];
}
];
};
stand = nixpkgs.lib.nixosSystem {
specialArgs = {inherit inputs pkgs; };
modules = nixModules ++ [
./profiles/stand/nixos.nix
home-manager.nixosModules.home-manager
{
home-manager.users.homelen.imports = mixedModules ++ [
./profiles/stand/home.nix
];
}
];
};
threed = nixpkgs.lib.nixosSystem {
specialArgs = {inherit inputs pkgs; };
modules = nixModules ++ [
lanzaboote.nixosModules.lanzaboote
./profiles/threed/nixos.nix
home-manager.nixosModules.home-manager
{
home-manager.users.swarsel.imports = mixedModules ++ [
./profiles/threed/home.nix
];
}
];
};
};
# pure Home Manager setups - for non-NixOS machines
# run rebuild using `hmswitch`
homeConfigurations = {
"leons@PCisLee" = home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules = homeModules ++ mixedModules ++ [
./profiles/surface/home.nix
];
};
};
};
}

130
profiles/TEMPLATE/home.nix Normal file
View file

@ -0,0 +1,130 @@
{ config, pkgs, lib, fetchFromGitHub, ... }:
{
home = {
username = "TEMPLATE";
homeDirectory = "/home/TEMPLATE";
stateVersion = "23.05"; # TEMPLATE -- Please read the comment before changing.
keyboard.layout = "us"; # TEMPLATE
home.packages = with pkgs; [
# xdg-utils
# nodejs_20
# ---------------------------------------------------------------
# if schildichat works on this machine, use it, otherwise go for element
# element-desktop
# ---------------------------------------------------------------
];
};
# update path if the sops private key is stored somewhere else
sops.age.sshKeyPaths = [ "${config.home.homeDirectory}/.ssh/sops" ];
# waybar config - TEMPLATE - update for cores and temp
programs.waybar.settings.mainBar = {
#cpu.format = "{icon0} {icon1} {icon2} {icon3}";
cpu.format = "{icon0} {icon1} {icon2} {icon3} {icon4} {icon5} {icon6} {icon7}";
temperature.hwmon-path = "/sys/devices/platform/coretemp.0/hwmon/hwmon1/temp3_input";
};
# -----------------------------------------------------------------
# is this machine always connected to power? If yes, use this block:
#
# programs.waybar.settings.mainBar."custom/pseudobat"= {
# format= "";
# on-click-right= "wlogout -p layer-shell";
# };
# programs.waybar.settings.mainBar.modules-right = ["custom/outer-left-arrow-dark"
# "mpris"
# "custom/left-arrow-light"
# "network"
# "custom/left-arrow-dark"
# "pulseaudio"
# "custom/left-arrow-light"
# "custom/pseudobat"
# "battery"
# "custom/left-arrow-dark"
# "group/hardware"
# "custom/left-arrow-light"
# "clock#2"
# "custom/left-arrow-dark"
# "clock#1"
# ];
#
# -----------------------------------------------------------------
# -----------------------------------------------------------------
# if not always connected to power (laptop), use this (default):
programs.waybar.settings.mainBar.modules-right = ["custom/outer-left-arrow-dark"
"mpris"
"custom/left-arrow-light"
"network"
"custom/left-arrow-dark"
"pulseaudio"
"custom/left-arrow-light"
"custom/pseudobat"
"battery"
"custom/left-arrow-dark"
"group/hardware"
"custom/left-arrow-light"
"clock#2"
"custom/left-arrow-dark"
"clock#1"
];
# -----------------------------------------------------------------
wayland.windowManager.sway= {
config = rec {
# update for actual inputs here,
input = {
"36125:53060:splitkb.com_Kyria_rev3" = {
xkb_layout = "us";
xkb_variant = "altgr-intl";
};
"1:1:AT_Translated_Set_2_keyboard" = { # TEMPLATE
xkb_layout = "us";
xkb_options = "grp:win_space_toggle";
# xkb_options = "ctrl:nocaps,grp:win_space_toggle";
xkb_variant = "altgr-intl";
};
"type:touchpad" = {
dwt = "enabled";
tap = "enabled";
natural_scroll = "enabled";
middle_emulation = "enabled";
};
};
output = {
DP-1 = {
mode = "2560x1440"; # TEMPLATE
scale = "1";
bg = "~/.dotfiles/wallpaper/TEMPLATE.png fill";
};
};
keybindings = let
modifier = config.wayland.windowManager.sway.config.modifier;
in {
# TEMPLATE
"${modifier}+w" = "exec \"bash ~/.dotfiles/scripts/checkschildi.sh\"";
# "${modifier}+w" = "exec \"bash ~/.dotfiles/scripts/checkelement.sh\"";
};
startup = [
{ command = "nextcloud --background";}
{ command = "spotify";}
{ command = "discord --start-minimized";}
{ command = "schildichat-desktop --disable-gpu-driver-bug-workarounds --hidden";}
{ command = "ANKI_WAYLAND=1 anki";}
{ command = "OBSIDIAN_USE_WAYLAND=1 obsidian";}
{ command = "nm-applet";}
];
};
};
}

103
profiles/TEMPLATE/nixos.nix Normal file
View file

@ -0,0 +1,103 @@
{ config, lib, pkgs, inputs, ... }:
{
imports =
[
./hardware-configuration.nix
];
services = {
getty.autologinUser = "TEMPLATE";
greetd.settings.initial_session.user="TEMPLATE";
};
# Bootloader
boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/sda"; # TEMPLATE - if only one disk, this will work
boot.loader.grub.useOSProber = true;
# --------------------------------------
# you might need a configuration like this instead:
# Bootloader
# boot.loader.grub.enable = true;
# boot.loader.grub.devices = ["nodev" ];
# boot.loader.grub.useOSProber = true;
# boot.kernelPackages = pkgs.linuxPackages_latest;
# --------------------------------------
networking.hostName = "TEMPLATE"; # Define your hostname.
stylix.image = ../../wallpaper/TEMPLATEwp.png;
stylix = {
base16Scheme = ../../wallpaper/swarsel.yaml;
# base16Scheme = "${pkgs.base16-schemes}/share/themes/shapeshifter.yaml";
polarity = "dark";
opacity.popups = 0.5;
cursor = {
package = pkgs.capitaine-cursors;
name = "capitaine-cursors";
size = 16;
};
fonts = {
sizes = {
terminal = 10;
applications = 11;
};
serif = {
# package = (pkgs.nerdfonts.override { fonts = [ "FiraMono" "FiraCode"]; });
package = pkgs.cantarell-fonts;
# package = pkgs.montserrat;
name = "Cantarell";
# name = "FiraCode Nerd Font Propo";
# name = "Montserrat";
};
sansSerif = {
# package = (pkgs.nerdfonts.override { fonts = [ "FiraMono" "FiraCode"]; });
package = pkgs.cantarell-fonts;
# package = pkgs.montserrat;
name = "Cantarell";
# name = "FiraCode Nerd Font Propo";
# name = "Montserrat";
};
monospace = {
package = (pkgs.nerdfonts.override { fonts = [ "FiraCode"]; });
name = "FiraCode Nerd Font Mono";
};
emoji = {
package = pkgs.noto-fonts-emoji;
name = "Noto Color Emoji";
};
};
};
# Configure keymap in X11 (only used for login)
services.xserver = {
layout = "us";
xkbVariant = "altgr-intl";
};
users.users.TEMPLATE = {
isNormalUser = true;
description = "TEMPLATE";
extraGroups = [ "networkmanager" "wheel" "lp" "audio" "video" ];
packages = with pkgs; [];
};
environment.systemPackages = with pkgs; [
];
system.stateVersion = "23.05"; # TEMPLATE - but probably no need to change
}

1650
profiles/common/home.nix Normal file

File diff suppressed because it is too large Load diff

211
profiles/common/nixos.nix Normal file
View file

@ -0,0 +1,211 @@
{ config, lib, pkgs, inputs, ... }:
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
# login keymap
services.xserver = {
layout = "us";
xkbVariant = "altgr-intl";
};
# mount NAS drive
# works only at home, but w/e
fileSystems."/mnt/smb" = {
device = "//192.168.1.3/Eternor";
fsType = "cifs";
options = let
# this line prevents hanging on network split
automount_opts = "x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s";
in ["${automount_opts},credentials=/etc/nixos/smb-secrets,uid=1000,gid=100"];
};
# enable flakes - urgent line!!
nix.settings.experimental-features = ["nix-command" "flakes"];
environment.sessionVariables.NIXOS_OZONE_WL = "1";
# correct time between linux and windows
time.hardwareClockInLocalTime = true;
# dont style GRUB with stylix
stylix.targets.grub.enable = false; # the styling makes grub more ugly
# cura fix
# xdg.portal = {
# enable = true;
# extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
# wlr.enable = true;
# config = {
# common = {
# default = [
# "*"
# ];
# };
# };
# };
# wayland-related
security.polkit.enable = true;
hardware.opengl = {
enable = true;
driSupport = true;
driSupport32Bit = true;
};
# audio
sound.enable = true;
# nixpkgs.config.pulseaudio = true;
hardware.pulseaudio= {
enable = true;
package = pkgs.pulseaudioFull;
};
hardware.enableAllFirmware = true;
hardware.bluetooth.powerOnBoot = true;
hardware.bluetooth.settings = {
General = {
Enable = "Source,Sink,Media,Socket";
};
};
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
networking.networkmanager.enable = true;
time.timeZone = "Europe/Vienna";
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "de_AT.UTF-8";
LC_IDENTIFICATION = "de_AT.UTF-8";
LC_MEASUREMENT = "de_AT.UTF-8";
LC_MONETARY = "de_AT.UTF-8";
LC_NAME = "de_AT.UTF-8";
LC_NUMERIC = "de_AT.UTF-8";
LC_PAPER = "de_AT.UTF-8";
LC_TELEPHONE = "de_AT.UTF-8";
LC_TIME = "de_AT.UTF-8";
};
environment.systemPackages = with pkgs; [
# yubikey packages
gnupg
yubikey-personalization
yubikey-personalization-gui
yubico-pam
yubioath-flutter
yubikey-manager
yubikey-manager-qt
yubico-piv-tool
pinentry
# theme related
gnome.adwaita-icon-theme
# kde-connect
xdg-desktop-portal
# bluetooth
bluez
# lsp-related -------------------------------
# nix
rnix-lsp
# latex
texlab
ghostscript_headless
# rust
rust-analyzer
clippy
rustfmt
# cpp
clang-tools
# + cuda
cudatoolkit
#lsp-bridge / python
gcc
gdb
(python3.withPackages(ps: with ps; [ jupyter ipython pyqt5 epc orjson sexpdata six setuptools paramiko numpy pandas scipy matplotlib requests debugpy flake8 gnureadline python-lsp-server]))
# (python3.withPackages(ps: with ps; [ jupyter ipython pyqt5 numpy pandas scipy matplotlib requests debugpy flake8 gnureadline python-lsp-server]))
# --------------------------------------------
];
programs.dconf.enable = true;
programs.evince.enable = true;
programs.kdeconnect.enable = true;
# zsh section, do not delete ------
programs.zsh.enable = true;
users.defaultUserShell = pkgs.zsh;
environment.shells = with pkgs; [ zsh ];
environment.pathsToLink = [ "/share/zsh" ];
# ---------------------------------
services.blueman.enable = true;
# enable discovery and usage of network devices (esp. printers)
services.printing.enable = true;
services.avahi = {
enable = true;
nssmdns = true;
openFirewall = true;
};
# nautilus file manager
services.gvfs.enable = true;
# Make CAPS work as a dual function ESC/CTRL key
services.interception-tools = {
enable = true;
udevmonConfig = let
dualFunctionKeysConfig = builtins.toFile "dual-function-keys.yaml" ''
TIMING:
TAP_MILLISEC: 200
DOUBLE_TAP_MILLISEC: 0
MAPPINGS:
- KEY: KEY_CAPSLOCK
TAP: KEY_ESC
HOLD: KEY_LEFTCTRL
'';
in ''
- JOB: |
${pkgs.interception-tools}/bin/intercept -g $DEVNODE \
| ${pkgs.interception-tools-plugins.dual-function-keys}/bin/dual-function-keys -c ${dualFunctionKeysConfig} \
| ${pkgs.interception-tools}/bin/uinput -d $DEVNODE
DEVICE:
EVENTS:
EV_KEY: [KEY_CAPSLOCK]
'';
};
programs.ssh.startAgent = false;
services.pcscd.enable = true;
# environment.systemPackages = with pkgs; [
# --- IN SYSTEM PACKAGES SECTION ---
# ];
services.udev.packages = with pkgs; [
yubikey-personalization
];
services.greetd = {
enable = true;
settings = {
initial_session.command = "sway";
# initial_session.user ="swarsel";
default_session.command = ''
${pkgs.greetd.tuigreet}/bin/tuigreet \
--time \
--asterisks \
--user-menu \
--cmd sway
'';
};
};
environment.etc."greetd/environments".text = ''
sway
'';
}

View file

@ -0,0 +1,33 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ata_piix" "usb_storage" "sd_mod" "sr_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/147e3682-eb15-4e96-9cac-4f2fb5888a69";
fsType = "ext4";
};
swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp7s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp8s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

127
profiles/onett/home.nix Normal file
View file

@ -0,0 +1,127 @@
{ config, pkgs, lib, fetchFromGitHub, ... }:
{
services.gpg-agent = {
enable = true;
enableSshSupport = true;
};
home = {
username = "swarsel";
homeDirectory = "/home/swarsel";
stateVersion = "23.05"; # Please read the comment before changing.
keyboard.layout = "de";
packages = with pkgs; [
# xdg-utils
# nodejs_20
];
};
sops.age.sshKeyPaths = [ "${config.home.homeDirectory}/.ssh/sops" ];
# # waybar config
programs.waybar.settings.mainBar = {
cpu.format = "{icon0} {icon1} {icon2} {icon3} {icon4} {icon5} {icon6} {icon7}";
temperature.hwmon-path = "/sys/devices/platform/coretemp.0/hwmon/hwmon3/temp3_input";
};
programs.waybar.settings.mainBar.modules-right = ["custom/outer-left-arrow-dark"
"mpris"
"custom/left-arrow-light"
"network"
"custom/left-arrow-dark"
"pulseaudio"
"custom/left-arrow-light"
"custom/pseudobat"
"battery"
"custom/left-arrow-dark"
"group/hardware"
"custom/left-arrow-light"
"clock#2"
"custom/left-arrow-dark"
"clock#1"
];
services.blueman-applet.enable = true;
wayland.windowManager.sway= {
config = rec {
input = {
"1:1:AT_Translated_Set_2_keyboard" = {
xkb_layout = "us";
xkb_options = "grp:win_space_toggle";
# xkb_options = "ctrl:nocaps,grp:win_space_toggle";
xkb_variant = "altgr-intl";
};
"2362:33538:ipad_keyboard_Keyboard" = {
xkb_layout = "us";
xkb_options = "altwin:swap_lalt_lwin,ctrl:nocaps,grp:win_space_toggle";
xkb_variant = "colemak_dh";
};
"36125:53060:splitkb.com_Kyria_rev3" = {
xkb_layout = "us";
xkb_variant = "altgr-intl";
};
"type:touchpad" = {
dwt = "enabled";
tap = "enabled";
natural_scroll = "enabled";
middle_emulation = "enabled";
};
};
output = {
eDP-1 = {
mode = "1920x1080";
scale = "1";
bg = "~/.dotfiles/wallpaper/lenovowp.png fill";
position = "1920,0";
};
VGA-1 = {
mode = "1920x1080";
scale = "1";
bg = "~/.dotfiles/wallpaper/lenovowp.png fill";
position = "0,0";
};
};
keybindings = let
modifier = config.wayland.windowManager.sway.config.modifier;
in {
"${modifier}+F2" = "exec brightnessctl set +5%";
"${modifier}+F1"= "exec brightnessctl set 5%-";
"XF86MonBrightnessUp" = "exec brightnessctl set +5%";
"XF86MonBrightnessDown"= "exec brightnessctl set 5%-";
"${modifier}+Ctrl+p" = "exec wl-mirror eDP-1";
"XF86HomePage" = "exec wtype -P Escape -p Escape";
"${modifier}+w" = "exec \"bash ~/.dotfiles/scripts/checkschildi.sh\"";
};
keycodebindings = {
"94" = "exec wtype c";
"Shift+94" = "exec wtype C";
"Ctrl+94" = "exec wtype -M ctrl c -m ctrl";
"Ctrl+Shift+94" = "exec wtype -M ctrl -M shift c -m ctrl -m shift";
};
startup = [
{ command = "nextcloud --background";}
{ command = "spotify";}
{ command = "discord --start-minimized";}
{ command = "schildichat-desktop --disable-gpu-driver-bug-workarounds --hidden";}
{ command = "ANKI_WAYLAND=1 anki";}
{ command = "OBSIDIAN_USE_WAYLAND=1 obsidian";}
{ command = "nm-applet";}
];
};
extraConfig = "
";
};
}

102
profiles/onett/nixos.nix Normal file
View file

@ -0,0 +1,102 @@
{ config, lib, pkgs, inputs, ... }:
{
imports =
[
./hardware-configuration.nix
];
services = {
greetd.settings.initial_session.user ="swarsel";
xserver.videoDrivers = ["nvidia"];
};
hardware = {
nvidia = {
modesetting.enable = true;
powerManagement.enable = true;
prime = {
intelBusId = "PCI:0:2:0";
nvidiaBusId = "PCI:1:0:0";
sync.enable = true;
};
};
pulseaudio.configFile = pkgs.runCommand "default.pa" {} ''
sed 's/module-udev-detect$/module-udev-detect tsched=0/' \
${pkgs.pulseaudio}/etc/pulse/default.pa > $out
'';
bluetooth.enable = true;
};
stylix.image = ../../wallpaper/lenovowp.png;
stylix = {
base16Scheme = ../../wallpaper/swarsel.yaml;
# base16Scheme = "${pkgs.base16-schemes}/share/themes/shapeshifter.yaml";
polarity = "dark";
opacity.popups = 0.5;
cursor = {
package = pkgs.capitaine-cursors;
name = "capitaine-cursors";
size = 16;
};
fonts = {
sizes = {
terminal = 10;
applications = 11;
};
serif = {
# package = (pkgs.nerdfonts.override { fonts = [ "FiraMono" "FiraCode"]; });
package = pkgs.cantarell-fonts;
# package = pkgs.montserrat;
name = "Cantarell";
# name = "FiraCode Nerd Font Propo";
# name = "Montserrat";
};
sansSerif = {
# package = (pkgs.nerdfonts.override { fonts = [ "FiraMono" "FiraCode"]; });
package = pkgs.cantarell-fonts;
# package = pkgs.montserrat;
name = "Cantarell";
# name = "FiraCode Nerd Font Propo";
# name = "Montserrat";
};
monospace = {
package = (pkgs.nerdfonts.override { fonts = [ "FiraCode"]; });
name = "FiraCode Nerd Font Mono";
};
emoji = {
package = pkgs.noto-fonts-emoji;
name = "Noto Color Emoji";
};
};
};
boot.loader.grub = {
enable = true;
device = "/dev/sda";
useOSProber = true;
};
networking.hostName = "onett"; # Define your hostname.
users.users.swarsel = {
isNormalUser = true;
description = "Leon S";
extraGroups = [ "networkmanager" "wheel" "lp"];
packages = with pkgs; [];
};
system.stateVersion = "23.05"; # Did you read the comment?
}

92
profiles/stand/home.nix Normal file
View file

@ -0,0 +1,92 @@
{ config, pkgs, lib, fetchFromGitHub, ... }:
{
services.gpg-agent = {
enable = true;
enableSshSupport = true;
};
home = {
username = "homelen";
homeDirectory = "/home/homelen";
stateVersion = "23.05"; # Please read the comment before changing.
keyboard.layout = "us";
packages = with pkgs; [
# xdg-utils
# nodejs_20
# element-desktop
];
};
sops.age.sshKeyPaths = [ "${config.home.homeDirectory}/.ssh/sops" ];
services.blueman-applet.enable = true;
# waybar config
programs.waybar.settings.mainBar = {
cpu.format = "{icon0} {icon1} {icon2} {icon3} {icon4} {icon5} {icon6} {icon7}";
temperature.hwmon-path = "/sys/devices/platform/coretemp.0/hwmon/hwmon1/temp3_input";
};
programs.waybar.settings.mainBar."custom/pseudobat"= {
format= "";
on-click-right= "wlogout -p layer-shell";
};
programs.waybar.settings.mainBar.modules-right = ["custom/outer-left-arrow-dark"
"mpris"
"custom/left-arrow-light"
"network"
"custom/left-arrow-dark"
"pulseaudio"
"custom/left-arrow-light"
"custom/pseudobat"
"battery"
"custom/left-arrow-dark"
"group/hardware"
"custom/left-arrow-light"
"clock#2"
"custom/left-arrow-dark"
"clock#1"
];
wayland.windowManager.sway= {
config = rec {
input = {
"36125:53060:splitkb.com_Kyria_rev3" = {
xkb_layout = "us";
xkb_variant = "altgr-intl";
};
};
output = {
DP-1 = {
mode = "2560x1440";
scale = "1";
bg = "~/.dotfiles/wallpaper/standwp.png fill";
};
};
keybindings = let
modifier = config.wayland.windowManager.sway.config.modifier;
in {
"${modifier}+w" = "exec \"bash ~/.dotfiles/scripts/checkschildi.sh\"";
};
startup = [
{ command = "nextcloud --background";}
{ command = "spotify";}
{ command = "discord --start-minimized";}
{ command = "schildichat-desktop --disable-gpu-driver-bug-workarounds --hidden";}
{ command = "ANKI_WAYLAND=1 anki";}
{ command = "OBSIDIAN_USE_WAYLAND=1 obsidian";}
{ command = "nm-applet";}
];
};
};
}

99
profiles/stand/nixos.nix Normal file
View file

@ -0,0 +1,99 @@
{ config, lib, pkgs, inputs, ... }:
{
imports =
[
./hardware-configuration.nix
];
services = {
getty.autologinUser = "homelen";
greetd.settings.initial_session.user="homelen";
};
stylix.image = ../../wallpaper/standwp.png;
stylix = {
base16Scheme = ../../wallpaper/swarsel.yaml;
# base16Scheme = "${pkgs.base16-schemes}/share/themes/shapeshifter.yaml";
polarity = "dark";
opacity.popups = 0.5;
cursor = {
package = pkgs.capitaine-cursors;
name = "capitaine-cursors";
size = 16;
};
fonts = {
sizes = {
terminal = 10;
applications = 11;
};
serif = {
# package = (pkgs.nerdfonts.override { fonts = [ "FiraMono" "FiraCode"]; });
package = pkgs.cantarell-fonts;
# package = pkgs.montserrat;
name = "Cantarell";
# name = "FiraCode Nerd Font Propo";
# name = "Montserrat";
};
sansSerif = {
# package = (pkgs.nerdfonts.override { fonts = [ "FiraMono" "FiraCode"]; });
package = pkgs.cantarell-fonts;
# package = pkgs.montserrat;
name = "Cantarell";
# name = "FiraCode Nerd Font Propo";
# name = "Montserrat";
};
monospace = {
package = (pkgs.nerdfonts.override { fonts = [ "FiraCode"]; });
name = "FiraCode Nerd Font Mono";
};
emoji = {
package = pkgs.noto-fonts-emoji;
name = "Noto Color Emoji";
};
};
};
# Bootloader.
boot.loader.grub = {
enable = true;
devices = ["nodev" ];
useOSProber = true;
};
# boot.kernelPackages = pkgs.linuxPackages_latest;
networking = {
hostName = "stand"; # Define your hostname.
enableIPv6 = false;
firewall.enable = false;
# networkmanager.enable = true;
};
hardware = {
bluetooth.enable = true;
};
users.users.homelen = {
isNormalUser = true;
description = "Leon S";
extraGroups = [ "networkmanager" "wheel" "lp" "audio" "video" ];
packages = with pkgs; [];
};
environment.systemPackages = with pkgs; [
];
system.stateVersion = "23.05"; # Did you read the comment? Dont change this basically
}

177
profiles/surface/home.nix Normal file
View file

@ -0,0 +1,177 @@
{ config, pkgs, lib, fetchFromGitHub, ... }:
{
programs.home-manager.enable = true;
home.username = "leons";
home.homeDirectory = "/home/leons";
home.stateVersion = "23.05"; # Please read the comment before changing.
stylix.image = ../../wallpaper/surfacewp.png;
stylix = {
base16Scheme = ../../wallpaper/swarsel.yaml;
# base16Scheme = "${pkgs.base16-schemes}/share/themes/shapeshifter.yaml";
polarity = "dark";
opacity.popups = 0.5;
cursor = {
package = pkgs.capitaine-cursors;
name = "capitaine-cursors";
size = 16;
};
fonts = {
sizes = {
terminal = 10;
applications = 11;
};
serif = {
# package = (pkgs.nerdfonts.override { fonts = [ "FiraMono" "FiraCode"]; });
package = pkgs.cantarell-fonts;
# package = pkgs.montserrat;
name = "Cantarell";
# name = "FiraCode Nerd Font Propo";
# name = "Montserrat";
};
sansSerif = {
# package = (pkgs.nerdfonts.override { fonts = [ "FiraMono" "FiraCode"]; });
package = pkgs.cantarell-fonts;
# package = pkgs.montserrat;
name = "Cantarell";
# name = "FiraCode Nerd Font Propo";
# name = "Montserrat";
};
monospace = {
package = (pkgs.nerdfonts.override { fonts = [ "FiraCode"]; });
name = "FiraCode Nerd Font Mono";
};
emoji = {
package = pkgs.noto-fonts-emoji;
name = "Noto Color Emoji";
};
};
};
nixpkgs = {
config = {
allowUnfree = true;
allowUnfreePredicate = (_: true);
};
};
services.xcape = {
enable = true;
mapExpression = {
Control_L = "Escape";
};
};
#keyboard config
home.keyboard.layout = "us";
sops.age.sshKeyPaths = [ "${config.home.homeDirectory}/.ssh/sops" ];
# waybar config
programs.waybar.settings.mainBar.cpu.format = "{icon0} {icon1} {icon2} {icon3}";
programs.waybar.settings.mainBar.temperature.hwmon-path = "/sys/devices/platform/coretemp.0/hwmon/hwmon3/temp3_input";
programs.waybar.settings.mainBar.modules-right = ["custom/outer-left-arrow-dark" "mpris" "custom/left-arrow-light"
"network"
"custom/left-arrow-dark"
"pulseaudio"
"custom/left-arrow-light"
"battery"
"custom/left-arrow-dark"
"temperature"
"custom/left-arrow-light"
"disk"
"custom/left-arrow-dark"
"memory"
"custom/left-arrow-light"
"cpu"
"custom/left-arrow-dark"
"tray"
"custom/left-arrow-light"
"clock#2"
"custom/left-arrow-dark"
"clock#1" ];
services.blueman-applet.enable = true;
home.packages = with pkgs; [
# nixgl.auto.nixGLDefault
evince
# nodejs_20
# messaging
# we use gomuks for RAM preservation, but keep schildi around for files and images
];
programs.zsh.initExtra = "
export GPG_TTY=\"$(tty)\"
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
gpgconf --launch gpg-agent
";
# sway config
wayland.windowManager.sway= {
config = rec {
input = {
"*" = {
xkb_layout = "us";
xkb_options = "ctrl:nocaps,grp:win_space_toggle";
xkb_variant = "altgr-intl";
};
"type:touchpad" = {
dwt = "enabled";
tap = "enabled";
natural_scroll = "enabled";
middle_emulation = "enabled";
};
};
output = {
eDP-1 = {
mode = "2160x1440@59.955Hz";
scale = "1";
bg = "~/.dotfiles/wallpaper/surfacewp.png fill";
};
};
keybindings = let
modifier = config.wayland.windowManager.sway.config.modifier;
in {
"${modifier}+F2" = "exec brightnessctl set +5%";
"${modifier}+F1"= "exec brightnessctl set 5%-";
"${modifier}+n" = "exec sway output eDP-1 transform normal, splith";
"${modifier}+Ctrl+p" = "exec nixGL wl-mirror eDP-1";
"${modifier}+t" = "exec sway output eDP-1 transform 90, splitv";
"${modifier}+XF86AudioLowerVolume" = "exec grim -g \"$(slurp)\" -t png - | wl-copy -t image/png";
"${modifier}+XF86AudioRaiseVolume" = "exec grim -g \"$(slurp)\" -t png - | wl-copy -t image/png";
"${modifier}+w" = "exec \"bash ~/.dotfiles/scripts/checkgomuks.sh\"";
};
startup = [
{ command = "sleep 60 && nixGL nextcloud --background";}
# { command = "sleep 60 && nixGL spotify";}
{ command = "sleep 60 && nixGL discord --start-minimized -enable-features=UseOzonePlatform -ozone-platform=wayland";}
# { command = "sleep 60 && nixGL schildichat-desktop --hidden";}
{ command = "sleep 60 && nixGL syncthingtray --wait"; }
{ command = "sleep 60 && ANKI_WAYLAND=1 nixGL anki";}
{ command = "nm-applet --indicator";}
{ command = "sleep 60 && OBSIDIAN_USE_WAYLAND=1 nixGL obsidian -enable-features=UseOzonePlatform -ozone-platform=wayland";}
];
keycodebindings = {
"124" = "exec systemctl suspend";
};
};
extraConfig = "
exec swaymsg input 7062:6917:NTRG0001:01_1B96:1B05 map_to_output eDP-1
exec swaymsg input 7062:6917:NTRG0001:01_1B96:1B05_Stylus map_to_output eDP-1
";
};
}

102
profiles/threed/home.nix Normal file
View file

@ -0,0 +1,102 @@
{ config, pkgs, lib, fetchFromGitHub, ... }:
{
home = {
username = "swarsel";
homeDirectory = "/home/swarsel";
stateVersion = "23.05"; # Please read the comment before changing.
keyboard.layout = "us";
packages = with pkgs; [
# xdg-utils
# nodejs_20
];
};
sops.age.sshKeyPaths = [ "${config.home.homeDirectory}/.ssh/sops" ];
programs.waybar.settings.mainBar = {
cpu.format = "{icon0} {icon1} {icon2} {icon3}";
temperature.hwmon-path = "/sys/devices/platform/coretemp.0/hwmon/hwmon1/temp3_input";
};
programs.waybar.settings.mainBar.modules-right = ["custom/outer-left-arrow-dark"
"mpris"
"custom/left-arrow-light"
"network"
"custom/left-arrow-dark"
"pulseaudio"
"custom/left-arrow-light"
"custom/pseudobat"
"battery"
"custom/left-arrow-dark"
"group/hardware"
"custom/left-arrow-light"
"clock#2"
"custom/left-arrow-dark"
"clock#1"
];
wayland.windowManager.sway= {
config = rec {
input = {
"*" = {
xkb_layout = "us";
xkb_options = "grp:win_space_toggle";
xkb_variant = "altgr-intl";
};
"type:touchpad" = {
dwt = "enabled";
tap = "enabled";
natural_scroll = "enabled";
middle_emulation = "enabled";
};
};
output = {
eDP-1 = {
mode = "2160x1440@59.955Hz";
scale = "1";
bg = "~/.dotfiles/wallpaper/surfacewp.png fill";
};
};
keybindings = let
modifier = config.wayland.windowManager.sway.config.modifier;
in {
"${modifier}+F2" = "exec brightnessctl set +5%";
"${modifier}+F1"= "exec brightnessctl set 5%-";
"${modifier}+n" = "exec sway output eDP-1 transform normal, splith";
"${modifier}+Ctrl+p" = "exec wl-mirror eDP-1";
"${modifier}+t" = "exec sway output eDP-1 transform 90, splitv";
"${modifier}+XF86AudioLowerVolume" = "exec grim -g \"$(slurp)\" -t png - | wl-copy -t image/png";
"${modifier}+XF86AudioRaiseVolume" = "exec grim -g \"$(slurp)\" -t png - | wl-copy -t image/png";
"${modifier}+w" = "exec \"bash ~/.dotfiles/scripts/checkschildi.sh\"";
};
startup = [
{ command = "nextcloud --background";}
{ command = "spotify";}
{ command = "discord --start-minimized";}
{ command = "schildichat-desktop --disable-gpu-driver-bug-workarounds --hidden";}
{ command = "ANKI_WAYLAND=1 anki";}
{ command = "OBSIDIAN_USE_WAYLAND=1 obsidian";}
{ command = "nm-applet";}
];
keycodebindings = {
"124" = "exec systemctl suspend";
};
};
extraConfig = "
exec swaymsg input 7062:6917:NTRG0001:01_1B96:1B05 map_to_output eDP-1
exec swaymsg input 7062:6917:NTRG0001:01_1B96:1B05_Stylus map_to_output eDP-1
";
};
}

98
profiles/threed/nixos.nix Normal file
View file

@ -0,0 +1,98 @@
{ config, lib, pkgs, inputs, ... }:
{
imports =
[
./hardware-configuration.nix
];
services = {
getty.autologinUser = "swarsel";
greetd.settings.initial_session.user="swarsel";
};
# Bootloader
boot = {
loader.systemd-boot.enable = lib.mkForce false;
lanzaboote = {
enable = true;
pkiBundle = "/etc/secureboot";
};
loader.efi.canTouchEfiVariables = true;
# use bootspec instead of lzbt for secure boot. This is not a generally needed setting
bootspec.enable = true;
# kernelPackages = pkgs.linuxPackages_latest;
};
networking = {
hostName = "threed";
enableIPv6 = false;
firewall.enable = false;
};
stylix.image = ../../wallpaper/surfacewp.png;
stylix = {
base16Scheme = ../../wallpaper/swarsel.yaml;
# base16Scheme = "${pkgs.base16-schemes}/share/themes/shapeshifter.yaml";
polarity = "dark";
opacity.popups = 0.5;
cursor = {
package = pkgs.capitaine-cursors;
name = "capitaine-cursors";
size = 16;
};
fonts = {
sizes = {
terminal = 10;
applications = 11;
};
serif = {
# package = (pkgs.nerdfonts.override { fonts = [ "FiraMono" "FiraCode"]; });
package = pkgs.cantarell-fonts;
# package = pkgs.montserrat;
name = "Cantarell";
# name = "FiraCode Nerd Font Propo";
# name = "Montserrat";
};
sansSerif = {
# package = (pkgs.nerdfonts.override { fonts = [ "FiraMono" "FiraCode"]; });
package = pkgs.cantarell-fonts;
# package = pkgs.montserrat;
name = "Cantarell";
# name = "FiraCode Nerd Font Propo";
# name = "Montserrat";
};
monospace = {
package = (pkgs.nerdfonts.override { fonts = [ "FiraCode"]; });
name = "FiraCode Nerd Font Mono";
};
emoji = {
package = pkgs.noto-fonts-emoji;
name = "Noto Color Emoji";
};
};
};
users.users.swarsel = {
isNormalUser = true;
description = "Leon S";
extraGroups = [ "networkmanager" "wheel" "lp" "audio" "video" ];
packages = with pkgs; [];
};
environment.systemPackages = with pkgs; [
];
system.stateVersion = "23.05";
}

45
programs/emacs/custom.el Normal file
View file

@ -0,0 +1,45 @@
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(browse-url-browser-function 'browse-url-firefox)
'(custom-safe-themes
'("7ec8fd456c0c117c99e3a3b16aaf09ed3fb91879f6601b1ea0eeaee9c6def5d9"
"badd1a5e20bd0c29f4fe863f3b480992c65ef1fa63951f59aa5d6b129a3f9c4c"
"2e05569868dc11a52b08926b4c1a27da77580daa9321773d92822f7a639956ce"
default))
'(org-agenda-files '("/home/swarsel/Calendars/leon_cal.org"))
'(send-mail-function 'sendmail-send-it)
'(warning-suppress-log-types
'(((python python-shell-completion-native-turn-on-maybe)) (comp)
((defvaralias losing-value org-tab-first-hook))))
'(warning-suppress-types '(((defvaralias losing-value org-tab-first-hook)))))
;; (custom-set-faces
;; ;; custom-set-faces was added by Custom.
;; ;; If you edit it by hand, you could mess it up, so be careful.
;; ;; Your init file should contain only one such instance.
;; ;; If there is more than one, they won't work right.
;; '(evil-goggles-change-face ((t (:inherit diff-removed))))
;; '(evil-goggles-delete-face ((t (:inherit diff-removed))))
;; '(evil-goggles-paste-face ((t (:inherit diff-added))))
;; '(evil-goggles-undo-redo-add-face ((t (:inherit diff-added))))
;; '(evil-goggles-undo-redo-change-face ((t (:inherit diff-changed))))
;; '(evil-goggles-undo-redo-remove-face ((t (:inherit diff-removed))))
;; '(evil-goggles-yank-face ((t (:inherit diff-changed))))
;; '(flycheck-posframe-border-face ((t (:foreground "darkgrey"))))
;; '(ivy-current-match ((t (:extend t :background "dark cyan" :foreground "black"))))
;; '(org-block ((t (:inherit fixed-pitch :extend t :background "#20282F"))))
;; '(org-block-begin-line ((t (:inherit org-block :extend t :background "#20282F" :foreground "DeepSkyBlue4" :weight bold)))))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(evil-goggles-change-face ((t (:inherit diff-removed))))
'(evil-goggles-delete-face ((t (:inherit diff-removed))))
'(evil-goggles-paste-face ((t (:inherit diff-added))))
'(evil-goggles-undo-redo-add-face ((t (:inherit diff-added))))
'(evil-goggles-undo-redo-change-face ((t (:inherit diff-changed))))
'(evil-goggles-undo-redo-remove-face ((t (:inherit diff-removed))))
'(evil-goggles-yank-face ((t (:inherit diff-changed)))))

View file

@ -0,0 +1,39 @@
(setq gc-cons-threshold most-positive-fixnum
gc-cons-percentage 0.6)
(tool-bar-mode 0)
(menu-bar-mode 0)
(scroll-bar-mode 0)
(setq frame-inhibit-implied-resize t)
(setq default-frame-alist
(append
(list
'(undecorated . t)
'(min-height . 1)
'(height . 42)
'(min-width . 1)
'(width . 100)
'(vertical-scroll-bars . nil)
'(internal-border-width . 10)
'(tool-bar-lines . 0)
'(menu-bar-lines . 0))))
(setq-default left-margin-width 1
right-margin-width 1)
(add-hook
'after-make-frame-functions
(defun setup-blah-keys (frame)
(with-selected-frame frame
(when (display-graphic-p)
(define-key input-decode-map (kbd "C-i") [C-i])
(define-key input-decode-map (kbd "C-[") [C-lsb])
(define-key input-decode-map (kbd "C-m") [C-m])
))))
(defun swarsel/last-buffer () (interactive) (switch-to-buffer nil))
(global-set-key (kbd "<C-m>") #'swarsel/last-buffer)
(setq comp-deferred-compilation nil)

1848
programs/emacs/init.el Normal file

File diff suppressed because it is too large Load diff

1824
programs/emacs/init.el~ Normal file

File diff suppressed because it is too large Load diff

27
scripts/checkconfigstatus.sh Executable file
View file

@ -0,0 +1,27 @@
#!/bin/bash
# CFG=$(git --git-dir=$HOME/.cfg/ --work-tree=$HOME diff --numstat | wc -l)
CFG=$(git --git-dir=$HOME/.cfg/ --work-tree=$HOME status -s | wc -l)
CSE=$(git --git-dir=$HOME/Documents/GitHub/CSE_TUWIEN/.git --work-tree=$HOME/Documents/GitHub/CSE_TUWIEN/ status -s | wc -l)
PASS=$(git --git-dir=$HOME/.local/share/password-store/.git --work-tree=$HOME/.local/share/password-store/ status -s | wc -l)
if [ $CFG != 0 ]; then
CFG_STR='CONFIG'
else
CFG_STR=''
fi
if [ $CSE != 0 ]; then
CSE_STR=' CSE'
else
CSE_STR=''
fi
if [ $PASS != 0 ]; then
PASS_STR=' PASS'
else
PASS_STR=''
fi
OUT="$CFG_STR""$CSE_STR""$PASS_STR"
echo "$OUT"

10
scripts/checkdiscord.sh Executable file
View file

@ -0,0 +1,10 @@
#!/bin/bash
STR=$(swaymsg -t get_tree | grep discord)
if [ "$STR" == "" ]; then
exec discord
#exec swaymsg '[class=discord]' move container to scratchpad; scratchpad show
else
exec swaymsg '[app_id=discord]' kill
fi
exit 0

12
scripts/checkgomuks.sh Executable file
View file

@ -0,0 +1,12 @@
#!/bin/bash
STR=$(swaymsg -t get_tree | jq -r 'recurse(.nodes[]) | select(.name == "__i3_scratch")' | grep gomuksterm)
CHECK=$(swaymsg -t get_tree | grep gomuksterm)
if [ "$CHECK" == "" ]; then
exec kitty -T gomuksterm -o confirm_os_window_close=0 gomuks & sleep 1
fi
if [ "$STR" == "" ]; then
exec swaymsg '[title="gomuksterm"]' scratchpad show
else
exec swaymsg '[title="gomuksterm"]' scratchpad show
fi
exit 0

13
scripts/checkkitty.sh Executable file
View file

@ -0,0 +1,13 @@
#!/bin/bash
STR=$(swaymsg -t get_tree | jq -r 'recurse(.nodes[]) | select(.name == "__i3_scratch")' | grep kittyterm)
CHECK=$(swaymsg -t get_tree | grep kittyterm)
if [ "$CHECK" == "" ]; then
exec kitty -T kittyterm & sleep 1
fi
if [ "$STR" == "" ]; then
exec swaymsg '[title="kittyterm"]' scratchpad show
else
exec swaymsg '[title="kittyterm"]' scratchpad show
fi
exit 0

10
scripts/checkschildi.sh Executable file
View file

@ -0,0 +1,10 @@
#!/bin/bash
STR=$(swaymsg -t get_tree | grep SchildiChat)
if [ "$STR" == "" ]; then
exec schildichat-desktop
#exec swaymsg '[app_id=SchildiChat]' move container to scratchpad; scratchpad show
else
exec swaymsg '[app_id=SchildiChat]' kill
fi
exit 0

7
scripts/checkspotify.sh Executable file
View file

@ -0,0 +1,7 @@
#!/bin/bash
# this is a crutch script that is to be used until spotify
# properly sets an app_id upon launch
swaymsg '[app_id="^$"]' scratchpad show
# exec spotify

10
scripts/checkspotify_actual.sh Executable file
View file

@ -0,0 +1,10 @@
#!/bin/bash
STR=$(swaymsg -t get_tree | grep spotify)
if [ "$STR" == "" ]; then
exec spotify & sleep 2
exec swaymsg '[class="Spotify"]' scratchpad show
else
exec swaymsg '[class="Spotify"]' scratchpad show
fi
exit 0

12
scripts/checkspotifytui.sh Executable file
View file

@ -0,0 +1,12 @@
#!/bin/bash
STR=$(swaymsg -t get_tree | jq -r 'recurse(.nodes[]) | select(.name == "__i3_scratch")' | grep spotifytui)
CHECK=$(swaymsg -t get_tree | grep spotifytui)
if [ "$CHECK" == "" ]; then
exec kitty -T spotifytui -o confirm_os_window_close=0 spt & sleep 1
fi
if [ "$STR" == "" ]; then
exec swaymsg '[title="spotifytui"]' scratchpad show
else
exec swaymsg '[title="spotifytui"]' scratchpad show
fi
exit 0

5
scripts/devShell/benchmark Executable file
View file

@ -0,0 +1,5 @@
#!/bin/sh
rm -rf build
cmake -S . -B build -D CMAKE_BUILD_TYPE=Release
cmake --build build --target benchmark
./build/benchmark/benchmark

5
scripts/devShell/compile Executable file
View file

@ -0,0 +1,5 @@
#!/bin/sh
rm -rf build
cmake -S . -B build -D CMAKE_BUILD_TYPE=Debug
cmake --build build --target all
ctest --test-dir build

15
scripts/editor.sh Executable file
View file

@ -0,0 +1,15 @@
#!/bin/bash
STR=$(swaymsg -t get_tree | jq -r 'recurse(.nodes[]) | select(.name == "__i3_scratch")' | grep kittyterm)
if [ "$STR" == "" ]; then
VAR="1"
swaymsg '[title="kittyterm"]' scratchpad show
else
VAR="0"
fi
emacsclient -c -a "" "$@"
if [ "$VAR" == "1" ]
then
swaymsg '[title="kittyterm"]' scratchpad show
fi
exit 0

16
scripts/editor_nowait.sh Executable file
View file

@ -0,0 +1,16 @@
#!/bin/bash
STR=$(swaymsg -t get_tree | jq -r 'recurse(.nodes[]) | select(.name == "__i3_scratch")' | grep kittyterm)
if [ "$STR" == "" ]; then
VAR="1"
swaymsg '[title="kittyterm"]' scratchpad show
emacsclient -c -a "" "$@"
else
VAR="0"
emacsclient -n -c -a "" "$@"
fi
if [ "$VAR" == "1" ]
then
swaymsg '[title="kittyterm"]' scratchpad show
fi
exit 0

View file

@ -0,0 +1,55 @@
mrswarsel: ENC[AES256_GCM,data:d87RitiYFsLpuxdOaI1xLVW6dA==,iv:MX+IDLr6H5lOmbq0RZc7cFPLfuSDoQKxDljKjeZRppA=,tag:QvuoRtS5EbZV9bKr/URnhw==,type:str]
nautilus: ENC[AES256_GCM,data:p0qGJuaNBKbZGRqGzV33SDh4jA==,iv:+EGI9GWsBPIwFz1RK3Hth2PV9OKiWzba9VsRUjUs1Cs=,tag:W+fCUPnFqoR0ggv9j2qafg==,type:str]
leon: ENC[AES256_GCM,data:NdHUj00/cdq1+hKes3irtMEGcA==,iv:jfMyTOznA+bTVBXvrN6Prq0Z0jvLNcm/7x0iauaSvw0=,tag:74c7l5sRjYphQGG8ky+3CQ==,type:str]
caldav: ENC[AES256_GCM,data:cmgO/btKdGG4I6B4MMDMrwFvZuSpAYJZZkw6XJ5qd/qxYaMnvKYzQ1VQUaoxYsxCgunm2/d/76NK3/ZojAaIqFVeN3gnd5wRmFty1g==,iv:nBXUBtfabaAeK5bs9wmEwkeGOK7UUL+kALd3W4qRvc0=,tag:oQaNH8Kdn62T+EVVOgfR8Q==,type:str]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age:
- recipient: age1zdjm8qa5t25mca0xxhhkpuh85mgg4l267mqjj2pdttksq7zg4unqdmqyp4
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBZQU5MS2FxTEg3SGwxNDZq
SmJvbi9tZWtCL3kxVTYydk1YeURWVTBJWkZFCjQyUHRuU2U4ZWVGekpDOUFqTlQ1
SlNxZTVXZWZ6dVJZQ0QvcG5yNTNPazAKLS0tIG1RTjcvRk5KN3FuakhkdUdYM2Qv
MnJpRGdkZ0dIZ1dEOFF1ZVVXbmdPT3MKBQSQiVjvTvBOdSciHkWoLRaHetw5m200
SG7+K345GT4pWnQSzSGN26eKDvWNES0tZFIpUB9mpCslgIjpCpvl5Q==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2023-12-08T21:04:26Z"
mac: ENC[AES256_GCM,data:NDRcclJRrK7RjRCfP8jLJ2aXa5LtttIE20i1Her70AqOca9pcb7UV+DD3/lIb/NRM8wbIQMuOw4T7CnAnPTrokzqDTiPkafh3zM+qjV5FFSucktkMtJCKwYePGdS7RZOkydISTWPFVoo7FPX0i51+mGRtzMPhm9lufluITeZ46w=,iv:rxGIUaeEaOGYL5Vp9aB8UXBxX2U+H/Dtm+PEPLMaYis=,tag:0pI11GBOVtiRzcsmQtYRHg==,type:str]
pgp:
- created_at: "2023-12-08T07:40:01Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMAwDh3VI7VctTARAAq7uFn44YEG6/af/V1OyoMrgZ1KGGOmRITE7j1+PHJWmq
wBUwAKXyuSTo5bzRUdynEWdKwYD/7YY+jqO57orcWVql6MJUoxYXNEK3ZF7lDXdL
q1SOnb0FjdNPhPCR2pUByyi/KmvnFBX/OQ8tc16nQ6nZ7KkRdUFPtOFNqX6cGARV
jIu3BoYJn1Aitax2c6Gt8K/OH31o24wp38F7O9tQTImezOjArsfzgTR+aL9UOv1B
uYgDtnKXqSaY20h8nSnBgE3+pxWM75rp8a1JFkbQCWn1dDRWhmfCcdS4GHXfHeKP
jezlNQvi7DfIgN0QxyrMd97MW4bOAMQ7HNT7bH28L3pXRU2OfJdgUFmVG6Iakubh
2PXyO8vh+KIiZNGhGPCLVOtHiL6UhjZuULCE65Kh4AAm5PsUcbV1vTGi+Vnoq1Ed
3DAYNjIkXx0pv1RB+d1T4Ym+I6xnm7HKtnY4CZCDeszyi9fluok/a8FbaaNK5qpd
YfS4S+eNymUtz9nEKKFvF5dYM7cqTkVRo0rsBB5gxvaWVxt4iveWHNelYWgfbfAe
bc2gWdZ3vpHjdjxVAISeClqwPKF+ZpZLuwSMoSQxWSMSMC7V6kUl3CF32zdsJT6E
ob0uJ2DILcQj91rd1EDH6RW4eZfvfglV+WlpEH7GkYa413TNem3vsGKYLIe95rSF
AgwDC9FRLmchgYQBD/9UlyxDh7ehiGxf7iX2d//TJLNtDb8yAk4nNb49VEJRq1D2
+/qaST4dtwIfFR9uqiQVKo6lIk4q3vk9QXUJQsGPIj7GpXiHb+2gxBOqdz7GFihD
3bXDcVGFRwynz2FWmydwS+NFFaqOe/HBIF9TYE64sxXu8RXDOyLI6cv8zFIv1DqQ
ogZfSJNAqEFjUehWUcW7KA3fFs5/FEPEK07rJu6PVkyi4lWl7AtvZpTNFX7wKY1t
EKzhtpPiPjKR8iMGcEG/S1jf9r7MKzpFlu7QAmONdxQLjWgKV71clHIXt39PVOdP
6rz/QtWu2nZUBwNZSxiPPssTpONG0iiX4N5u6Pb9hrgw1WLyObwRK9cOeCqEuLMt
LCpVeIt2PV4ozMMfQC6v9PlR3aQcaWLOH9E7ogbXU642kVAIcCv/nsFJtU8QkxwN
JFAU9UBLNa4FssBjeBJx7HyUN8V3jDzmXYZnjcEalH1hzXw4Nl0rkUpiZTPUeCBP
qt2QJQFT4Hn6bUOnM0yzNcwJzXwTMxrjYSs1Kj6Lm6CdelBBnccXqDV/Hc9JR1kc
BM+u8BtUNvTRKSE5sfl93FwYqFgSKJWfmBB6YsgVN6up2lEzUez4kgh9KXlal0Mv
8ENUKEdIENfU8IPAn8Kyc7SIiW9yugp6g+PoEBc5/aEWiguS+CReCwiM6t6XktJe
Abf3/jzpDVs/X0Y9M70+OxAe//dUoVj0jd52l8uTA4v7s++sfB2vv6DVvW6y3Vrw
l8+JPgcfDXVe4it7pYxCY+EzU1y+g2d3t6XolGqyHJ88d23XRXDQ5Uz/IJhbpw==
=zTtX
-----END PGP MESSAGE-----
fp: 4BE7925262289B476DBBC17B76FD3810215AE097
unencrypted_suffix: _unencrypted
version: 3.8.1

View file

@ -0,0 +1,3 @@
# List of assigned trustvalues, created So 17 Sep 2023 03:37:14 CEST
# (Use "gpg --import-ownertrust" to restore them)
4BE7925262289B476DBBC17B76FD3810215AE097:6:

View file

@ -0,0 +1,109 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
dF/fBNFmNC2yUJ6dc2F1iU9S7jY4TiCv
=KpA6
-----END PGP PUBLIC KEY BLOCK-----

1
secrets/keys/nixos.pub Normal file
View file

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGPg63pYhrS2UAzFvcmqGrCkp/DG/NihDO/JS3kBs/J+ swarsel@nixos

1
secrets/keys/stand.pub Normal file
View file

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMr0iwKZtJDYfs4WJ1PfgDHcP1/9KqQOoqTSKWrZerUu stand sops

1
secrets/keys/surface.pub Normal file
View file

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA0GIpY0NvYTKS9BWwl3G9qZtq65LqsrcVDMJzctzB2G surface sops

38
templates/cpp_flake.nix Normal file
View file

@ -0,0 +1,38 @@
# flake.nix
{
description = "C/C++ environment";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
};
outputs = {nixpkgs, ...}: let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
llvm = pkgs.llvmPackages_latest;
in {
devShells.${system}.default = pkgs.mkShell {
packages = with pkgs; [
gcc
#builder
cmake
gnumake
#headers
clang-tools
#lsp
llvm.libstdcxxClang
#tools
cppcheck
valgrind
doxygen
];
hardeningDisable = ["all"];
# direnv does not allow aliases, use scripts as a workaround
shellHook = ''
PATH_add ~/.dotfiles/scripts/devShell
'';
# ...
};
};
}

46
templates/cu_flake.nix Normal file
View file

@ -0,0 +1,46 @@
# flake.nix
{
description = "CUDA environment";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
};
outputs = {nixpkgs, ...}: let
system = "x86_64-linux";
pkgs = import nixpkgs { system = "x86_64-linux"; config.allowUnfree = true; };
llvm = pkgs.llvmPackages_latest;
in {
devShells.${system}.default = pkgs.mkShell {
packages = with pkgs; [
# gcc
#builder
# cmake
# gnumake
#headers
clang-tools
#lsp
# llvm.libstdcxxClang
# cudaPackages.cuda_nvcc
#tools
cppcheck
valgrind
doxygen
cudatoolkit
(pkgs.python3.withPackages (python-pkgs: [
python-pkgs.numpy
python-pkgs.pandas
python-pkgs.scipy
python-pkgs.matplotlib
python-pkgs.requests
python-pkgs.debugpy
python-pkgs.python-lsp-server
]))
];
hardeningDisable = ["all"];
# ...
};
};
}

28
templates/py_flake.nix Normal file
View file

@ -0,0 +1,28 @@
{
description = "Python Flake";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
};
outputs = {nixpkgs, ...}: let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
in {
devShells.${system}.default = pkgs.mkShell {
packages = [
(pkgs.python3.withPackages (python-pkgs: [
python-pkgs.numpy
python-pkgs.pandas
python-pkgs.scipy
python-pkgs.matplotlib
python-pkgs.requests
python-pkgs.debugpy
python-pkgs.flake8
python-pkgs.gnureadline
python-pkgs.python-lsp-server
]))
];
};
};
}

36
templates/rust_flake.nix Normal file
View file

@ -0,0 +1,36 @@
# flake.nix
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
rust-overlay.url = "github:oxalica/rust-overlay";
};
outputs = {self, nixpkgs, rust-overlay, ...}: let
system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
overlays = [rust-overlay.overlays.default];
};
toolchain = pkgs.rust-bin.fromRustupToolchainFile ./toolchain.toml;
in {
devShells.${system}.default = pkgs.mkShell {
packages = with pkgs; [
cargo
clippy
rustc
rustfmt
toolchain
rust-analyzer-unwrapped
rust-analyzer
];
env = {
RUST_BACKTRACE = "full";
};
RUST_SRC_PATH = "${toolchain}/lib/rustlib/src/rust/library";
# ...
};
};
}

View file

@ -0,0 +1,29 @@
\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{longtable}
\usepackage{wrapfig}
\usepackage{rotating}
\usepackage[normalem]{ulem}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{capt-of}
\usepackage{hyperref}
\usepackage{verbatim}
\usepackage{listings}
\author{Leon Schwarzäugl}
\date{\today}
\title{--NAME--}
\hypersetup{
pdfauthor={Leon Schwarzäugl},
pdftitle={--METADATA-NAME--},
pdfkeywords={},
pdfsubject={},
pdfcreator={Emacs 30.0.50 (Org mode 9.6.12)},
pdflang={English}}
\begin{document}
\end{document}

6
templates/toolchain.toml Normal file
View file

@ -0,0 +1,6 @@
[toolchain]
channel = "stable"
components = [
"rust-src"
# ...
]

BIN
wallpaper/lenovowp.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 MiB

BIN
wallpaper/serverwp.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 389 KiB

BIN
wallpaper/standwp.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 MiB

BIN
wallpaper/surfacewp.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3 MiB

BIN
wallpaper/swarsel.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

35
wallpaper/swarsel.yaml Normal file
View file

@ -0,0 +1,35 @@
# scheme: "better-contrast"
author: "Swarsel"
base00: "1D252C" # #1d252c passt
base01: "171D23" # #171d23
base02: "5EC4FF" # #5EC4FF
base03: "566C7D" # #566C7D passt
base04: "5EC4FF" # #5EC4FF passt
base05: "A0B3C5" # #A0B3C5 passt
base06: "C06ECE" # #C06ECE passt
base07: "A0B3C5" # #A0B3C5 passt
base08: "D95468" # #D95468 passt
base09: "FFA880" # #ffA880 passt
base0A: "5EC4FF" # #5EC4FF
base0B: "8BD49C" # #8BD49C
base0C: "008B94" # #008B94 passt
base0D: "5EC4FF" # #5EC4FF passt
base0E: "C06ECE" # #C06ECE passt
base0F: "5EC4FF" # #5EC4FF passt
# base00 - Default Background
# base01 - Lighter Background (Used for status bars)
# base02 - Selection Background
# base03 - Comments, Invisibles, Line Highlighting
# base04 - Dark Foreground (Used for status bars)
# base05 - Default Foreground, Caret, Delimiters, Operators
# base06 - Light Foreground (Not often used)
# base07 - Light Background (Not often used)
# base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted
# base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url
# base0A - Classes, Markup Bold, Search Text Background
# base0B - Strings, Inherited Class, Markup Code, Diff Inserted
# base0C - Support, Regular Expressions, Escape Characters, Markup Quotes
# base0D - Functions, Methods, Attribute IDs, Headings
# base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed
# base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?>

BIN
wallpaper/user.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 MiB