Compare commits
216 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b77e7643dd | |||
| b0fb9073b1 | |||
| 751fd0d470 | |||
| 45cab9d0c8 | |||
| 9fedb8c107 | |||
| 483deacf79 | |||
| 905c19e9cf | |||
| 5b2fd3472f | |||
| 0f560c3596 | |||
| 6bc74facae | |||
| 0c2e43a514 | |||
| 6686cab532 | |||
| d4ad09d0cd | |||
| 04577ea081 | |||
| 2ab45885c3 | |||
| 53e1fc155f | |||
| 6d556885c4 | |||
| 2b8c5004d9 | |||
| 8aa917a190 | |||
| a827cd772f | |||
| 53f8c2a744 | |||
| ab23d15420 | |||
| e921a6f96b | |||
| 020961cc0d | |||
| b2d6c552e0 | |||
| 5384b399d7 | |||
| ff5d552eb1 | |||
| c64667d571 | |||
| 88591998c8 | |||
| 9fe6af74ec | |||
| 9a7352686c | |||
| 552a15dede | |||
| 307b8a3b51 | |||
| e83e0bf430 | |||
| 0935360f08 | |||
| bccdc24099 | |||
| 4e4677519b | |||
| 831f49e8bd | |||
| 8acb99770c | |||
| 7488da102e | |||
| be5e9cce07 | |||
| 0eddfbef58 | |||
| bdb85b6161 | |||
| 64392b695e | |||
| 8896788bfd | |||
| eec600d1d0 | |||
| b31791b9ef | |||
| 8de280d7e5 | |||
| 8c8a6121bc | |||
| f1296e7675 | |||
| ba56618049 | |||
| 349181f35b | |||
| 0b8b7564a1 | |||
| 54e0f94af5 | |||
| 977aa539a3 | |||
| d56605e37a | |||
| 7d013c83bc | |||
| d42f38531d | |||
| af54219f5f | |||
| b6f59055d8 | |||
| cb990c0cd4 | |||
| c896e02bf1 | |||
| c1e031efa9 | |||
| 19f213ca8c | |||
| a0ebb3f259 | |||
| 3a994a3b8d | |||
| 3b4c0e4a63 | |||
| b15dd4ce86 | |||
| db5514062c | |||
| 7b500ee994 | |||
| 07eb4664f9 | |||
| 872f80e92c | |||
| 562f873f97 | |||
| 2f5868fcca | |||
| e1c1f6e104 | |||
| 3bdf73557b | |||
| bb9988245a | |||
| 713f5bfe8c | |||
| c26f4ccd9a | |||
| d84bfd4628 | |||
| fb6ac408e1 | |||
| f01b079931 | |||
| 78990e6414 | |||
| cef602d758 | |||
| 368e741211 | |||
| fec13e08b9 | |||
| a540ca622d | |||
| 7fb0bcdac0 | |||
| b7726fce94 | |||
| 30c987bd9b | |||
| 539e9a0b8e | |||
| 1e4593ea17 | |||
| ec8a71de95 | |||
| 0c39388b21 | |||
| ebb043b589 | |||
| fcfc9f6450 | |||
| fe3cd057cd | |||
| b9cdb9299e | |||
| 8b6ba76848 | |||
| 2e79bd9e00 | |||
| cfdc9f7001 | |||
| a12b50edfa | |||
| 194d4bcec0 | |||
| 5badb000be | |||
| 08b3f2c194 | |||
| 5f9a110464 | |||
| bcd041484d | |||
| fd3b9f20f0 | |||
| bc160af26a | |||
| a34abd0f05 | |||
| 2fd1f5ee53 | |||
| 88547dc82c | |||
| ccf38c2da2 | |||
| b1107ae904 | |||
| 48f53b3884 | |||
| 9bcca96597 | |||
| 78e219a6cb | |||
| 8b958d6a56 | |||
| 1a1aa20690 | |||
| 54952923f3 | |||
| ca20fa6c35 | |||
| c1b2b51d13 | |||
| 28f78bb67e | |||
| 114647aa96 | |||
| 64ae389f27 | |||
| fd39dbfcd4 | |||
| b13cca7173 | |||
| 7807091b83 | |||
| d3026afb97 | |||
| 152daf1230 | |||
| ffda398f8d | |||
| 3e179960de | |||
| 93e655ed27 | |||
| 710c1dedb8 | |||
| 28ec5c73d4 | |||
| fc7285bd5c | |||
| 11ee156b29 | |||
| 2dba549787 | |||
| d28c7d870c | |||
| 8bf17e74ef | |||
| 08cf457aa3 | |||
| 448002ebf4 | |||
| 9735d3f0c0 | |||
| 8f1b0ade4d | |||
| db05024dc6 | |||
| 21053dac8c | |||
| 1ab0bf54fa | |||
| 5070d4dbfc | |||
| 12466b4426 | |||
| 23155d57b7 | |||
| a9e30bd84b | |||
| e62f6e9dce | |||
| c543bc13ea | |||
| b4d1681b99 | |||
| 6c32ffbe94 | |||
| 6787243414 | |||
| d350807e8c | |||
| f872c8db0c | |||
| 8c53c66c4d | |||
| 0f07029660 | |||
| 8010d771a1 | |||
| 7f4c41429e | |||
| 6d21fe4262 | |||
| c081f95aaf | |||
| 452a34c7e8 | |||
| 15c4616b91 | |||
| 07274a0364 | |||
| 3bb8db1349 | |||
| 65a3dcdc08 | |||
| 9fe40bfd13 | |||
| 07943d4f95 | |||
| 815a79ff41 | |||
| 32ddceba8f | |||
| 55ba4125d6 | |||
| b9274f546f | |||
| fd246d7daf | |||
| edae0d2bb0 | |||
| 1cb23dd0a4 | |||
| ab1052193a | |||
| 6dadb2008c | |||
| 18f9cc3fa8 | |||
| 9295ad7010 | |||
| e3cf2379ab | |||
| f6c3f676b2 | |||
| d57017382a | |||
| 1d7690eab4 | |||
| 67d68a9946 | |||
| 9af362b5c8 | |||
| a0ae09452f | |||
| 711859e660 | |||
| 1c1e496425 | |||
| 97229a521f | |||
| 7d8190210b | |||
| a1dfeff98b | |||
| 9e512c2863 | |||
| 136653b0fa | |||
| 75fb0f54ec | |||
| a3282f3eb3 | |||
| 843dfb986d | |||
| 3eba0fe092 | |||
| fdc8b03d9b | |||
| d86321cfe6 | |||
| 881c930fdb | |||
| dc3f9fe681 | |||
| d73ff17327 | |||
| 67468ba6fa | |||
| 6d2a7f50df | |||
| 3cf8f19fcc | |||
| d335f6c892 | |||
| 8d94428f77 | |||
| 903776dca6 | |||
| b6dc568215 | |||
| 130c341816 | |||
| 8d0430ae52 | |||
| 68da077c72 | |||
| 7d17c52192 |
@@ -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"
|
|
||||||
@@ -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"
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
[i3.variables]
|
|
||||||
monitor-primary = "HDMI-1"
|
|
||||||
monitor-secondary = "eDP-1"
|
|
||||||
screenlayout-script = "~/.screenlayout/laptop-at-home.sh"
|
|
||||||
@@ -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"
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
includes = [".dotter/kardorf.toml"]
|
|
||||||
packages = ["i3", "emacs", "alacritty", "zsh", "starship", "nix"]
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
includes = [".dotter/laptop.toml"]
|
|
||||||
packages = []
|
|
||||||
@@ -25,6 +25,7 @@ jobs:
|
|||||||
- name: Rebase from master branch
|
- name: Rebase from master branch
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
git fetch origin master
|
||||||
commits_ahead=$(git rev-list --count HEAD..origin/master)
|
commits_ahead=$(git rev-list --count HEAD..origin/master)
|
||||||
echo "Commits ahead: $commits_ahead"
|
echo "Commits ahead: $commits_ahead"
|
||||||
git log --oneline -5
|
git log --oneline -5
|
||||||
|
|||||||
@@ -1,24 +1,19 @@
|
|||||||
keys:
|
keys:
|
||||||
- &primary age1ee5udznhadk6m7jtglu4709rep080yjyd2ukzdl8jma4mm92y3psv0slpg
|
- &primary age1ee5udznhadk6m7jtglu4709rep080yjyd2ukzdl8jma4mm92y3psv0slpg
|
||||||
- &aspi-ssh age1q8lc5340gz5xw2f57nglrss68wv0j0hf36py2pdtrl6ky3yrq9qqk0njr4
|
- &aspi-ssh age1q8lc5340gz5xw2f57nglrss68wv0j0hf36py2pdtrl6ky3yrq9qqk0njr4
|
||||||
- &pianonix-ssh age1hsmfz8fjxu83sax9lr487h8xr6cyge0apdq4zpge4c8jpcjj2cksj825ct
|
|
||||||
- &builder-ssh age1kw4kmdm45zprvdkrrpvgq966l7585vhusmum083qlwnr0xxgd3uqatcyja
|
- &builder-ssh age1kw4kmdm45zprvdkrrpvgq966l7585vhusmum083qlwnr0xxgd3uqatcyja
|
||||||
|
- &kardorf-ssh age15lxw97z03q40xrdscnxqqugh5ky5aqrerg2t2rphkcqm6rnllurq8v98q5
|
||||||
|
|
||||||
creation_rules:
|
creation_rules:
|
||||||
- path_regex: hosts/common/secrets.yaml$
|
- path_regex: hosts/secrets-common.yaml$
|
||||||
key_groups:
|
key_groups:
|
||||||
- age:
|
- age:
|
||||||
- *primary
|
- *primary
|
||||||
- *aspi-ssh
|
- *aspi-ssh
|
||||||
- *pianonix-ssh
|
- *kardorf-ssh
|
||||||
|
|
||||||
- path_regex: hosts/builder/secrets.yaml$
|
- path_regex: hosts/builder/secrets.yaml$
|
||||||
key_groups:
|
key_groups:
|
||||||
- age:
|
- age:
|
||||||
- *primary
|
- *primary
|
||||||
- *builder-ssh
|
- *builder-ssh
|
||||||
|
|
||||||
- path_regex: hosts/pianonix/secrets.yaml$
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *primary
|
|
||||||
- *pianonix-ssh
|
|
||||||
|
|||||||
@@ -1,7 +1,12 @@
|
|||||||
#+title: My dotfiles
|
#+title: My dotfiles
|
||||||
|
|
||||||
My dotfiles for which I am using =nix=.
|
* Quick start for home-manger only (no need to pull this repo)
|
||||||
The structure is managed by [[https://snowfall.org/guides/lib/quickstart/][Snowfall lib]]
|
- Install nix using the https://github.com/DeterminateSystems/nix-installer
|
||||||
|
- Then run
|
||||||
|
#+begin_src shell
|
||||||
|
nix run nixpkgs#home-manager -- switch --flake git+https://gitlab.julian-mutter.de/julian/dotfiles.git#julian@quickstart
|
||||||
|
#+end_src
|
||||||
|
- Done
|
||||||
|
|
||||||
* Machine selection
|
* 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= automatically searches for =user= or =user@hostname= config in the flake, so specify one of those or you will have to manually specify them:
|
||||||
@@ -24,7 +29,7 @@ sops edit secrets/secrets.yaml
|
|||||||
** Authorize new device
|
** Authorize new device
|
||||||
- Generate public key from ssh -> Private age key generation not needed
|
- Generate public key from ssh -> Private age key generation not needed
|
||||||
#+begin_src sh
|
#+begin_src sh
|
||||||
ssh-to-age < /etc/ssh/ssh_host_ed25519_key
|
ssh-to-age < /etc/ssh/ssh_host_ed25519_key.pub
|
||||||
#+end_src
|
#+end_src
|
||||||
- Add age public key to file:.sops.yaml
|
- Add age public key to file:.sops.yaml
|
||||||
- Update keys
|
- Update keys
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
system.hydraAutoUpgrade = {
|
||||||
|
# Only enable if not dirty
|
||||||
|
enable = inputs.self ? rev;
|
||||||
|
dates = "*:0/10"; # Every 10 minutes
|
||||||
|
instance = "http://hydra.julian-mutter.de";
|
||||||
|
project = "dotfiles";
|
||||||
|
jobset = "main";
|
||||||
|
job = "hosts.${config.networking.hostName}";
|
||||||
|
oldFlakeRef = "self";
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
# Common config for all hosts
|
||||||
|
{
|
||||||
|
inputs,
|
||||||
|
outputs,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports =
|
||||||
|
[
|
||||||
|
./fish.nix # fish for admin
|
||||||
|
./locale.nix
|
||||||
|
./nix.nix
|
||||||
|
./sops.nix
|
||||||
|
./root.nix
|
||||||
|
]
|
||||||
|
++ [
|
||||||
|
inputs.home-manager.nixosModules.home-manager
|
||||||
|
]
|
||||||
|
++ (builtins.attrValues outputs.nixosModules);
|
||||||
|
|
||||||
|
# Replaces the (modulesPath + "/installer/scan/not-detected.nix") from default hardware-configuration.nix
|
||||||
|
# Enables non-free firmware
|
||||||
|
hardware.enableRedistributableFirmware = true;
|
||||||
|
|
||||||
|
# Networking
|
||||||
|
networking.networkmanager = {
|
||||||
|
enable = true;
|
||||||
|
plugins = with pkgs; [
|
||||||
|
networkmanager-openconnect
|
||||||
|
];
|
||||||
|
};
|
||||||
|
services.resolved.enable = false;
|
||||||
|
# MDNS Taken by avahi
|
||||||
|
# networking.networkmanager.dns = "none";
|
||||||
|
networking.nameservers = lib.mkDefault [
|
||||||
|
"1.1.1.1"
|
||||||
|
"8.8.8.8"
|
||||||
|
];
|
||||||
|
|
||||||
|
# HM module
|
||||||
|
home-manager.useGlobalPkgs = true; # hm module uses the pkgs of the nixos config
|
||||||
|
home-manager.backupFileExtension = "hm-backup"; # backup conflicting files. So hm activation never fails
|
||||||
|
home-manager.extraSpecialArgs = {
|
||||||
|
inherit inputs outputs;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -21,4 +21,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
console.keyMap = "de";
|
console.keyMap = "de";
|
||||||
|
|
||||||
|
time.timeZone = "Europe/Berlin";
|
||||||
}
|
}
|
||||||
@@ -1,15 +1,10 @@
|
|||||||
{
|
{outputs, ...}: {
|
||||||
lib,
|
|
||||||
outputs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
|
|
||||||
# Apply overlays
|
# Apply overlays
|
||||||
nixpkgs = {
|
nixpkgs = {
|
||||||
# TODO: apply this to hm and nixos without duplicate code
|
# TODO: apply this to hm and nixos without duplicate code
|
||||||
overlays = builtins.attrValues outputs.overlays;
|
overlays = builtins.attrValues outputs.overlays;
|
||||||
config = {
|
config = {
|
||||||
|
nvidia.acceptLicense = true;
|
||||||
allowUnfree = true;
|
allowUnfree = true;
|
||||||
allowUnfreePredicate = _: true; # TODO: what is this
|
allowUnfreePredicate = _: true; # TODO: what is this
|
||||||
warn-dirty = false;
|
warn-dirty = false;
|
||||||
@@ -19,7 +14,9 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
nix.settings.auto-optimise-store = lib.mkDefault true;
|
# optimize at every build, slows down builds
|
||||||
|
# better to do optimise.automatic for regular optimising
|
||||||
|
# nix.settings.auto-optimise-store = lib.mkDefault true;
|
||||||
nix.settings.experimental-features = [
|
nix.settings.experimental-features = [
|
||||||
"nix-command"
|
"nix-command"
|
||||||
"flakes"
|
"flakes"
|
||||||
@@ -27,31 +24,16 @@
|
|||||||
];
|
];
|
||||||
# warn-dirty = false;
|
# warn-dirty = false;
|
||||||
|
|
||||||
# Setup binary caches
|
|
||||||
nix.settings = {
|
|
||||||
substituters = [
|
|
||||||
"https://nix-community.cachix.org"
|
|
||||||
"https://cache.nixos.org/"
|
|
||||||
"https://hyprland.cachix.org"
|
|
||||||
"http://binarycache.julian-mutter.de"
|
|
||||||
];
|
|
||||||
trusted-public-keys = [
|
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
|
||||||
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
|
||||||
"binarycache.julian-mutter.de:oJ67uRFwRhNPKL58CHzy3QQLv38Kx7OA1K+6xlEPu7E="
|
|
||||||
];
|
|
||||||
|
|
||||||
trusted-users = [
|
|
||||||
"root"
|
|
||||||
"@wheel"
|
|
||||||
]; # needed for devenv to add custom caches
|
|
||||||
};
|
|
||||||
|
|
||||||
nix.gc = {
|
nix.gc = {
|
||||||
automatic = true;
|
automatic = true;
|
||||||
dates = "weekly";
|
dates = "weekly";
|
||||||
# Keep the last 3 generations
|
options = "--delete-older-than 30d";
|
||||||
options = "--delete-older-than +3";
|
persistent = true;
|
||||||
|
};
|
||||||
|
nix.optimise = {
|
||||||
|
automatic = true;
|
||||||
|
dates = ["weekly"]; # Optional; allows customizing optimisation schedule
|
||||||
|
persistent = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.nix-ld.enable = true;
|
programs.nix-ld.enable = true;
|
||||||
@@ -61,5 +43,4 @@
|
|||||||
# Add each flake input as a registry and nix_path
|
# Add each flake input as a registry and nix_path
|
||||||
# registry = lib.mapAttrs (_: flake: { inherit flake; }) flakeInputs;
|
# registry = lib.mapAttrs (_: flake: { inherit flake; }) flakeInputs;
|
||||||
# nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs;
|
# nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
# Packages needed as root
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
vim
|
||||||
|
htop
|
||||||
|
mc
|
||||||
|
gparted-xhost # needs to be installed as system package so it can be actually opened
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,25 +1,23 @@
|
|||||||
{
|
{
|
||||||
|
pwd,
|
||||||
inputs,
|
inputs,
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}:
|
}: let
|
||||||
let
|
|
||||||
isEd25519 = k: k.type == "ed25519";
|
isEd25519 = k: k.type == "ed25519";
|
||||||
getKeyPath = k: k.path;
|
getKeyPath = k: k.path;
|
||||||
keys = builtins.filter isEd25519 config.services.openssh.hostKeys;
|
keys = builtins.filter isEd25519 config.services.openssh.hostKeys;
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
imports = [inputs.sops-nix.nixosModules.sops];
|
imports = [inputs.sops-nix.nixosModules.sops];
|
||||||
|
|
||||||
sops.age = {
|
sops.age = {
|
||||||
sshKeyPaths = map getKeyPath keys;
|
sshKeyPaths = map getKeyPath keys;
|
||||||
|
|
||||||
# TODO: remove? only rely on ssh or pgp keys (e.g. ubikey like misterio is using!!!)
|
# TODO: remove? only rely on ssh or pgp keys (e.g. ubikey like misterio is using!!!)
|
||||||
keyFile = "/home/julian/.config/sops/age/keys.txt";
|
# keyFile = "/home/julian/.config/sops/age/keys.txt";
|
||||||
# Generate key if none of the above worked. With this, building will still work, just without secrets
|
# Generate key if none of the above worked. With this, building will still work, just without secrets
|
||||||
generateKey = true;
|
generateKey = false; # TODO: building should not work without secrets!?
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
sops.defaultSopsFile = ../secrets.yaml;
|
sops.defaultSopsFile = "${pwd}/hosts/secrets-common.yaml";
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# Make programs like nextcloud client access saved passwords
|
||||||
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
|
||||||
|
programs.seahorse.enable = true;
|
||||||
|
programs.ssh.askPassword = lib.mkForce "${pkgs.seahorse}/libexec/seahorse/ssh-askpass"; # Solve conflicting definition in seahorse and plasma6
|
||||||
|
|
||||||
|
# Make authentication work for e.g. gparted
|
||||||
|
security.polkit.enable = true;
|
||||||
|
systemd = {
|
||||||
|
user.services.polkit-gnome-authentication-agent-1 = {
|
||||||
|
description = "polkit-gnome-authentication-agent-1";
|
||||||
|
wantedBy = ["graphical-session.target"];
|
||||||
|
wants = ["graphical-session.target"];
|
||||||
|
after = ["graphical-session.target"];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "simple";
|
||||||
|
ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
|
||||||
|
Restart = "on-failure";
|
||||||
|
RestartSec = 1;
|
||||||
|
TimeoutStopSec = 10;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
# MDNS on local network
|
||||||
|
services.avahi = {
|
||||||
|
enable = true;
|
||||||
|
nssmdns4 = true;
|
||||||
|
nssmdns6 = true;
|
||||||
|
publish.enable = true;
|
||||||
|
publish.addresses = true;
|
||||||
|
ipv4 = true;
|
||||||
|
ipv6 = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
outputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# Setup binary caches
|
||||||
|
nix.settings = {
|
||||||
|
substituters = [
|
||||||
|
"https://nix-community.cachix.org"
|
||||||
|
"https://cache.nixos.org/"
|
||||||
|
"https://hyprland.cachix.org"
|
||||||
|
"http://binarycache.julian-mutter.de"
|
||||||
|
"https://devenv.cachix.org"
|
||||||
|
];
|
||||||
|
trusted-public-keys = [
|
||||||
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
|
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
||||||
|
"binarycache.julian-mutter.de:oJ67uRFwRhNPKL58CHzy3QQLv38Kx7OA1K+6xlEPu7E="
|
||||||
|
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
||||||
|
"devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="
|
||||||
|
];
|
||||||
|
|
||||||
|
trusted-users = [
|
||||||
|
"root"
|
||||||
|
"@wheel"
|
||||||
|
]; # needed for devenv to add custom caches
|
||||||
|
|
||||||
|
# Ensure we can still build when missing-server is not accessible
|
||||||
|
fallback = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
virtualisation.docker = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
services.flatpak.enable = true;
|
||||||
|
xdg.portal.enable = true;
|
||||||
|
xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-gtk];
|
||||||
|
xdg.portal.config.common.default = "*"; # Use first portal implementation found
|
||||||
|
}
|
||||||
@@ -1,6 +1,4 @@
|
|||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
{
|
|
||||||
|
|
||||||
programs.gamemode = {
|
programs.gamemode = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
@@ -20,5 +18,4 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -3,10 +3,7 @@
|
|||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}: {
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
services.xserver.displayManager.gdm = {
|
services.xserver.displayManager.gdm = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
{config, ...}: let
|
||||||
|
homeCfgs = config.home-manager.users;
|
||||||
|
julianCfg = homeCfgs.julian;
|
||||||
|
in {
|
||||||
|
users.extraUsers.greeter = {
|
||||||
|
# For caching
|
||||||
|
home = "/tmp/greeter-home";
|
||||||
|
createHome = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.regreet = {
|
||||||
|
enable = true;
|
||||||
|
iconTheme = julianCfg.gtk.iconTheme;
|
||||||
|
theme = julianCfg.gtk.theme;
|
||||||
|
# font = julianCfg.fontProfiles.regular; # TODO: do
|
||||||
|
cursorTheme = {
|
||||||
|
inherit (julianCfg.gtk.cursorTheme) name package;
|
||||||
|
};
|
||||||
|
cageArgs = [
|
||||||
|
"-s"
|
||||||
|
"-m"
|
||||||
|
"last"
|
||||||
|
]; # multimonitor use last monitor
|
||||||
|
# settings.background = {
|
||||||
|
# path = julianCfg.wallpaper;
|
||||||
|
# fit = "Cover";
|
||||||
|
# }; # TODO: fix
|
||||||
|
|
||||||
|
# TODO: setting keyboard language does not work
|
||||||
|
# settings = {
|
||||||
|
# env = {
|
||||||
|
# XKB_DEFAULT_LAYOUT = "de";
|
||||||
|
# # XKB_DEFAULT_VARIANT = "altgr-intl";
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -3,8 +3,7 @@
|
|||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}: {
|
||||||
{
|
|
||||||
services.xserver.windowManager.i3.enable = true;
|
services.xserver.windowManager.i3.enable = true;
|
||||||
services.xserver.windowManager.i3.package = pkgs.i3-gaps;
|
services.xserver.windowManager.i3.package = pkgs.i3-gaps;
|
||||||
services.displayManager.defaultSession = "none+i3";
|
services.displayManager.defaultSession = "none+i3";
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
security.krb5.enable = true;
|
||||||
|
security.krb5.settings = {
|
||||||
|
# domain_realm = {
|
||||||
|
# ".julian-mutter.de" = "julian-mutter.de";
|
||||||
|
# "julian-mutter.de" = "julian-mutter.de";
|
||||||
|
# };
|
||||||
|
libdefaults = {
|
||||||
|
default_realm = "julian-mutter.de";
|
||||||
|
# dns_lookup_realm = true;
|
||||||
|
# dns_lookup_kdc = true;
|
||||||
|
# ticket_lifetime = "24h";
|
||||||
|
# renew_lifetime = "7d";
|
||||||
|
};
|
||||||
|
realms = {
|
||||||
|
"julian-mutter.de" = {
|
||||||
|
kdc = ["kerberos.julian-mutter.de"];
|
||||||
|
admin_server = "kerberos-admin.julian-mutter.de";
|
||||||
|
default_domain = "julian-mutter.de";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -3,11 +3,9 @@
|
|||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}:
|
}: let
|
||||||
let
|
|
||||||
hosts = lib.attrNames outputs.nixosConfigurations;
|
hosts = lib.attrNames outputs.nixosConfigurations;
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
services.openssh = {
|
services.openssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
@@ -15,7 +13,7 @@ in
|
|||||||
PasswordAuthentication = false;
|
PasswordAuthentication = false;
|
||||||
PermitRootLogin = "no";
|
PermitRootLogin = "no";
|
||||||
|
|
||||||
# TODO: what does this d
|
# TODO: what does this do
|
||||||
# Let WAYLAND_DISPLAY be forwarded
|
# Let WAYLAND_DISPLAY be forwarded
|
||||||
AcceptEnv = "WAYLAND_DISPLAY";
|
AcceptEnv = "WAYLAND_DISPLAY";
|
||||||
X11Forwarding = true;
|
X11Forwarding = true;
|
||||||
@@ -36,7 +34,7 @@ in
|
|||||||
# publicKeyFile = ../../${hostname}/ssh_host_ed25519_key.pub;
|
# publicKeyFile = ../../${hostname}/ssh_host_ed25519_key.pub;
|
||||||
# extraHostNames =
|
# extraHostNames =
|
||||||
# [
|
# [
|
||||||
# "${hostname}.m7.rs"
|
# # "${hostname}.m7.rs"
|
||||||
# ]
|
# ]
|
||||||
# ++
|
# ++
|
||||||
# # Alias for localhost if it's the same host
|
# # Alias for localhost if it's the same host
|
||||||
@@ -48,5 +46,4 @@ in
|
|||||||
# ]);
|
# ]);
|
||||||
# });
|
# });
|
||||||
# };
|
# };
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,11 +1,7 @@
|
|||||||
{
|
{pkgs, ...}: {
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
shared-mime-info # extended mimetype support
|
shared-mime-info # extended mimetype support
|
||||||
lxde.lxmenu-data # open with "Installed Applications"
|
lxmenu-data # open with "Installed Applications"
|
||||||
pcmanfm
|
pcmanfm
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -3,6 +3,7 @@
|
|||||||
services.pulseaudio.enable = false;
|
services.pulseaudio.enable = false;
|
||||||
services.pipewire = {
|
services.pipewire = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
wireplumber.enable = true;
|
||||||
alsa.enable = true;
|
alsa.enable = true;
|
||||||
alsa.support32Bit = true;
|
alsa.support32Bit = true;
|
||||||
pulse.enable = true;
|
pulse.enable = true;
|
||||||
@@ -14,6 +15,14 @@
|
|||||||
"module.x11.bell" = false;
|
"module.x11.bell" = false;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
"10-increase-buffer" = {
|
||||||
|
"context.properties" = {
|
||||||
|
"default.clock.rate" = 48000;
|
||||||
|
"default.clock.quantum" = 1024;
|
||||||
|
"default.clock.min-quantum" = 1024;
|
||||||
|
"default.clock.max-quantum" = 2048;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,6 @@
|
|||||||
{ config, ... }:
|
{config, ...}: let
|
||||||
let
|
|
||||||
dockerEnabled = config.virtualisation.docker.enable;
|
dockerEnabled = config.virtualisation.docker.enable;
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
virtualisation.podman = {
|
virtualisation.podman = {
|
||||||
enable = true;
|
enable = true;
|
||||||
dockerCompat = !dockerEnabled;
|
dockerCompat = !dockerEnabled;
|
||||||
@@ -3,10 +3,7 @@
|
|||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}: {
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
# Set location used by redshift
|
# Set location used by redshift
|
||||||
location.provider = "manual";
|
location.provider = "manual";
|
||||||
location.latitude = 47.92;
|
location.latitude = 47.92;
|
||||||
@@ -3,10 +3,7 @@
|
|||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}: {
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
programs.thunar.enable = true;
|
programs.thunar.enable = true;
|
||||||
programs.xfconf.enable = true; # Persist saved preferences
|
programs.xfconf.enable = true; # Persist saved preferences
|
||||||
programs.thunar.plugins = with pkgs.xfce; [
|
programs.thunar.plugins = with pkgs.xfce; [
|
||||||
@@ -3,10 +3,7 @@
|
|||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}: {
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
virtualisation.virtualbox.host.enable = true;
|
virtualisation.virtualbox.host.enable = true;
|
||||||
# virtualisation.virtualbox.host.enableExtensionPack = true;
|
# virtualisation.virtualbox.host.enableExtensionPack = true;
|
||||||
# virtualisation.virtualbox.guest.enable = true;
|
# virtualisation.virtualbox.guest.enable = true;
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
networking.wg-quick.interfaces = {
|
||||||
|
julian = {
|
||||||
|
configFile = "/etc/wireguard/julian.conf";
|
||||||
|
autostart = true; # This interface is started on boot
|
||||||
|
};
|
||||||
|
comu = {
|
||||||
|
configFile = "/etc/wireguard/comu.conf";
|
||||||
|
autostart = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
programs.wireshark = {
|
||||||
|
enable = true;
|
||||||
|
dumpcap.enable = true;
|
||||||
|
usbmon.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
users.users.julian.extraGroups = ["wireshark"];
|
||||||
|
}
|
||||||
@@ -1,13 +1,12 @@
|
|||||||
{
|
{
|
||||||
|
pwd,
|
||||||
pkgs,
|
pkgs,
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}:
|
}: let
|
||||||
let
|
|
||||||
ifTheyExist = groups: builtins.filter (group: builtins.hasAttr group config.users.groups) groups;
|
ifTheyExist = groups: builtins.filter (group: builtins.hasAttr group config.users.groups) groups;
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
users.mutableUsers = false;
|
users.mutableUsers = false;
|
||||||
users.users.julian = {
|
users.users.julian = {
|
||||||
description = "Julian";
|
description = "Julian";
|
||||||
@@ -19,18 +18,22 @@ in
|
|||||||
"networkmanager"
|
"networkmanager"
|
||||||
"wheel"
|
"wheel"
|
||||||
"audio"
|
"audio"
|
||||||
|
"realtime"
|
||||||
|
"rtkit"
|
||||||
"network"
|
"network"
|
||||||
"video"
|
"video"
|
||||||
"podman"
|
"podman"
|
||||||
"docker"
|
"docker"
|
||||||
"git"
|
"git"
|
||||||
"gamemode"
|
"gamemode"
|
||||||
|
"dialout"
|
||||||
];
|
];
|
||||||
|
|
||||||
openssh.authorizedKeys.keys = lib.splitString "\n" (
|
openssh.authorizedKeys.keys = lib.splitString "\n" (
|
||||||
builtins.readFile ../../../../homes/julian/ssh.pub
|
builtins.readFile ./ssh.pub
|
||||||
);
|
);
|
||||||
hashedPasswordFile = config.sops.secrets.julian-password.path;
|
# hashedPasswordFile = config.sops.secrets.julian-password.path;
|
||||||
|
hashedPassword = "$y$j9T$N33kLJQbV8soUoCbDkpwA1$r/yahJDgOPo4GGOrAi6BUG5zLTzmaBrA5NQ4nno561A";
|
||||||
packages = [pkgs.home-manager];
|
packages = [pkgs.home-manager];
|
||||||
};
|
};
|
||||||
users.groups.julian = {
|
users.groups.julian = {
|
||||||
@@ -38,12 +41,11 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
sops.secrets.julian-password = {
|
sops.secrets.julian-password = {
|
||||||
sopsFile = ../../secrets.yaml;
|
sopsFile = "${pwd}/hosts/secrets-common.yaml";
|
||||||
neededForUsers = true;
|
neededForUsers = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager.users.julian = import ../../../../homes/julian/${config.networking.hostName}.nix;
|
home-manager.users.julian = import "${pwd}/homes/julian/${config.networking.hostName}.nix";
|
||||||
|
|
||||||
security.pam.services.swaylock = {}; # Make swaylock unlocking work
|
security.pam.services.swaylock = {}; # Make swaylock unlocking work
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
ifTheyExist = groups: builtins.filter (group: builtins.hasAttr group config.users.groups) groups;
|
||||||
|
in {
|
||||||
|
users.mutableUsers = false;
|
||||||
|
users.users.wolfi = {
|
||||||
|
description = "Wolfi";
|
||||||
|
group = "wolfi";
|
||||||
|
isNormalUser = true;
|
||||||
|
shell = pkgs.fish;
|
||||||
|
extraGroups = ifTheyExist [
|
||||||
|
"networkmanager"
|
||||||
|
"wheel"
|
||||||
|
"audio"
|
||||||
|
"network"
|
||||||
|
"video"
|
||||||
|
"podman"
|
||||||
|
"docker"
|
||||||
|
"git"
|
||||||
|
"gamemode"
|
||||||
|
];
|
||||||
|
|
||||||
|
hashedPassword = "$y$j9T$ifzWjoZaRtPUOOfMYnbJ20$uFOO1EyDApL52vRUicZYgupaTA/a6sGNUj3imZ/lcb6";
|
||||||
|
packages = [pkgs.home-manager];
|
||||||
|
};
|
||||||
|
users.groups.wolfi = {};
|
||||||
|
}
|
||||||
@@ -2,16 +2,25 @@
|
|||||||
description = "Home Manager configuration of julian";
|
description = "Home Manager configuration of julian";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
|
||||||
systems.url = "github:nix-systems/default-linux";
|
systems.url = "github:nix-systems/default-linux";
|
||||||
nixos-hardware.url = "github:nixos/nixos-hardware";
|
nixos-hardware.url = "github:nixos/nixos-hardware";
|
||||||
impermanence.url = "github:nix-community/impermanence";
|
impermanence.url = "github:nix-community/impermanence";
|
||||||
nix-colors.url = "github:misterio77/nix-colors";
|
nix-colors.url = "github:misterio77/nix-colors";
|
||||||
deploy-rs.url = "github:serokell/deploy-rs";
|
deploy-rs.url = "github:serokell/deploy-rs";
|
||||||
|
|
||||||
|
nixos-generators = {
|
||||||
|
url = "github:nix-community/nixos-generators";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager/release-25.11";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
nix-index-database = {
|
||||||
|
url = "github:nix-community/nix-index-database";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
sops-nix = {
|
sops-nix = {
|
||||||
@@ -28,16 +37,12 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
# Various flakes
|
# Various flakes
|
||||||
alacritty-theme = {
|
|
||||||
url = "github:alacritty/alacritty-theme";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
yazi-flavors = {
|
yazi-flavors = {
|
||||||
url = "github:yazi-rs/flavors";
|
url = "github:yazi-rs/flavors";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
nixvim = {
|
nixvim = {
|
||||||
url = "github:nix-community/nixvim";
|
url = "github:nix-community/nixvim/nixos-25.11";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
nix-matlab = {
|
nix-matlab = {
|
||||||
@@ -56,15 +61,13 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs =
|
outputs = {
|
||||||
{
|
|
||||||
self,
|
self,
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
home-manager,
|
home-manager,
|
||||||
systems,
|
systems,
|
||||||
...
|
...
|
||||||
}@inputs:
|
} @ inputs: let
|
||||||
let
|
|
||||||
inherit (self) outputs;
|
inherit (self) outputs;
|
||||||
lib = nixpkgs.lib // home-manager.lib;
|
lib = nixpkgs.lib // home-manager.lib;
|
||||||
forEachSystem = f: lib.genAttrs (import systems) (system: f pkgsFor.${system});
|
forEachSystem = f: lib.genAttrs (import systems) (system: f pkgsFor.${system});
|
||||||
@@ -73,107 +76,75 @@
|
|||||||
import nixpkgs {
|
import nixpkgs {
|
||||||
inherit system;
|
inherit system;
|
||||||
config.allowUnfree = true;
|
config.allowUnfree = true;
|
||||||
config.permittedInsecurePackages = [
|
|
||||||
"olm-3.2.16"
|
|
||||||
];
|
|
||||||
warn-dirty = false;
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
inherit lib;
|
inherit lib;
|
||||||
|
|
||||||
nixosModules = import ./modules/nixos;
|
nixosModules = import ./modules/nixos;
|
||||||
homeManagerModules = import ./modules/home-manager;
|
homeManagerModules = import ./modules/home-manager;
|
||||||
|
|
||||||
overlays = import ./overlays {inherit inputs outputs;};
|
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; });
|
packages = forEachSystem (pkgs: import ./packages {inherit pkgs;});
|
||||||
devShells = forEachSystem (pkgs: import ./shell.nix {inherit pkgs;});
|
devShells = forEachSystem (pkgs: import ./shell.nix {inherit pkgs;});
|
||||||
formatter = forEachSystem (pkgs: pkgs.alejandra);
|
formatter = forEachSystem (pkgs: pkgs.alejandra); # nix fmt *
|
||||||
|
|
||||||
nixosConfigurations = {
|
nixosConfigurations = {
|
||||||
# Main laptop
|
# Main laptop
|
||||||
aspi = lib.nixosSystem {
|
aspi = lib.nixosSystem {
|
||||||
modules = [ ./hosts/aspi ];
|
modules = [
|
||||||
specialArgs = {
|
./hosts/aspi
|
||||||
inherit inputs outputs;
|
];
|
||||||
};
|
|
||||||
};
|
|
||||||
# Piano raspberry pi
|
|
||||||
pianonix = lib.nixosSystem {
|
|
||||||
modules = [ ./hosts/pianonix ];
|
|
||||||
specialArgs = {
|
specialArgs = {
|
||||||
inherit inputs outputs;
|
inherit inputs outputs;
|
||||||
|
pwd = "${self}";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
kardorf = lib.nixosSystem {
|
kardorf = lib.nixosSystem {
|
||||||
modules = [ ./hosts/pianonix ];
|
modules = [./hosts/kardorf];
|
||||||
specialArgs = {
|
specialArgs = {
|
||||||
inherit inputs outputs;
|
inherit inputs outputs;
|
||||||
|
pwd = "${self}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
builder = lib.nixosSystem {
|
||||||
|
modules = [./hosts/builder];
|
||||||
|
specialArgs = {
|
||||||
|
inherit inputs outputs;
|
||||||
|
pwd = "${self}";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Standalone HM
|
# Standalone HM
|
||||||
homeConfigurations = {
|
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 {
|
"julian@v3ms" = lib.homeManagerConfiguration {
|
||||||
modules = [
|
modules = [
|
||||||
./homes/julian/v3ms
|
./homes/julian/v3ms
|
||||||
./homes/julian/hm-standalone-config.nix
|
./homes/julian/hm-standalone-config.nix
|
||||||
];
|
];
|
||||||
pkgs = pkgsFor.aarch64-linux;
|
pkgs = pkgsFor.x86_64-linux;
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = {
|
||||||
inherit inputs outputs;
|
inherit inputs outputs;
|
||||||
|
pwd = "${self}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"julian@quickstart" = lib.homeManagerConfiguration {
|
||||||
|
modules = [
|
||||||
|
./homes/julian/quickstart.nix
|
||||||
|
./homes/julian/hm-standalone-config.nix
|
||||||
|
];
|
||||||
|
pkgs = pkgsFor.x86_64-linux;
|
||||||
|
extraSpecialArgs = {
|
||||||
|
inherit inputs outputs;
|
||||||
|
pwd = "${self}";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# deploy-rs node configuration
|
# deploy-rs node configuration
|
||||||
deploy.nodes = {
|
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 = {
|
builder = {
|
||||||
hostname = "builder.julian-mutter.de";
|
hostname = "builder.julian-mutter.de";
|
||||||
profiles.system = {
|
profiles.system = {
|
||||||
|
|||||||
@@ -1,30 +1,58 @@
|
|||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./global
|
./global
|
||||||
|
|
||||||
./features/fish
|
./features/fish
|
||||||
./features/direnv
|
./features/direnv
|
||||||
./features/topgrade
|
./features/topgrade
|
||||||
./features/neovim
|
./features/neovim
|
||||||
./features/kitty
|
./features/ghostty
|
||||||
./features/wezterm
|
./features/wezterm
|
||||||
./features/alacritty
|
./features/alacritty
|
||||||
./features/yazi
|
./features/yazi
|
||||||
./features/emacs
|
./features/emacs
|
||||||
# ./features/i3
|
./features/tmux
|
||||||
|
./features/qt-distrobox
|
||||||
|
|
||||||
./features/hyprland
|
./features/hyprland
|
||||||
|
|
||||||
./features/nix-helper
|
|
||||||
./features/desktop
|
|
||||||
|
|
||||||
./features/suites/cli
|
./features/suites/cli
|
||||||
./features/suites/desktop
|
./features/suites/desktop
|
||||||
./features/suites/development
|
./features/suites/development
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
hostName = "aspi";
|
hostName = "aspi";
|
||||||
is-nixos = true;
|
is-nixos = true;
|
||||||
terminal = "kitty";
|
terminal = "alacritty";
|
||||||
|
|
||||||
|
# ------- ----------
|
||||||
|
# | eDP-1 | | HDMI-A-1 |
|
||||||
|
# ------- ----------
|
||||||
|
monitors = [
|
||||||
|
{
|
||||||
|
name = "HDMI-A-1";
|
||||||
|
# width = 1680;
|
||||||
|
# height = 1050;
|
||||||
|
workspaces = [
|
||||||
|
"1"
|
||||||
|
"2"
|
||||||
|
"3"
|
||||||
|
"4"
|
||||||
|
"5"
|
||||||
|
];
|
||||||
|
primary = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "eDP-1";
|
||||||
|
# width = 1680;
|
||||||
|
# height = 1050;
|
||||||
|
workspaces = [
|
||||||
|
"6"
|
||||||
|
"7"
|
||||||
|
"8"
|
||||||
|
"9"
|
||||||
|
"10"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
import = [
|
|
||||||
"~/.config/alacritty/theme/themes/smoooooth.toml"
|
|
||||||
]
|
|
||||||
@@ -1,17 +1,12 @@
|
|||||||
{
|
{
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}:
|
}: {
|
||||||
|
programs.alacritty = {
|
||||||
{
|
enable = true;
|
||||||
home.packages = with pkgs; [ alacritty ];
|
settings = {};
|
||||||
|
theme = "smoooooth";
|
||||||
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";
|
home.sessionVariables.TERMINAL = lib.mkIf (config.terminal == "alacritty") "alacritty";
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 182 KiB |
|
Before Width: | Height: | Size: 177 KiB |
|
Before Width: | Height: | Size: 823 KiB |
|
Before Width: | Height: | Size: 759 KiB |
|
Before Width: | Height: | Size: 1.6 MiB |
|
Before Width: | Height: | Size: 1024 KiB |
|
Before Width: | Height: | Size: 2.8 MiB |
|
Before Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 1.6 MiB |
|
Before Width: | Height: | Size: 499 KiB |
|
Before Width: | Height: | Size: 607 KiB |
|
Before Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 719 KiB |
|
Before Width: | Height: | Size: 464 KiB |
|
Before Width: | Height: | Size: 831 KiB |
|
Before Width: | Height: | Size: 159 KiB |
|
Before Width: | Height: | Size: 354 KiB |
|
Before Width: | Height: | Size: 861 KiB |
|
Before Width: | Height: | Size: 98 KiB |
|
Before Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 267 KiB |
|
Before Width: | Height: | Size: 239 KiB |
|
Before Width: | Height: | Size: 299 KiB |
|
Before Width: | Height: | Size: 10 MiB |
|
Before Width: | Height: | Size: 2.7 MiB |
|
Before Width: | Height: | Size: 1.6 MiB |
|
Before Width: | Height: | Size: 4.0 MiB |
|
Before Width: | Height: | Size: 261 KiB |
|
Before Width: | Height: | Size: 269 KiB |
|
Before Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 216 KiB |
|
Before Width: | Height: | Size: 342 KiB |
|
Before Width: | Height: | Size: 412 KiB |
|
Before Width: | Height: | Size: 595 KiB |
@@ -4,18 +4,13 @@
|
|||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
with lib; let
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
|
||||||
doomRepoUrl = "https://github.com/doomemacs/doomemacs";
|
doomRepoUrl = "https://github.com/doomemacs/doomemacs";
|
||||||
configRepoUrl = "https://gitlab.julian-mutter.de/julian/emacs-config";
|
configRepoUrl = "https://gitlab.julian-mutter.de/julian/emacs-config";
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
home.sessionPath = ["/home/julian/.config/emacs/bin"];
|
home.sessionPath = ["/home/julian/.config/emacs/bin"];
|
||||||
|
|
||||||
home.packages =
|
home.packages = with pkgs;
|
||||||
with pkgs;
|
|
||||||
[
|
[
|
||||||
binutils # native-comp needs 'as', provided by this
|
binutils # native-comp needs 'as', provided by this
|
||||||
|
|
||||||
@@ -30,7 +25,8 @@ in
|
|||||||
|
|
||||||
## Module dependencies
|
## Module dependencies
|
||||||
(aspellWithDicts (
|
(aspellWithDicts (
|
||||||
ds: with ds; [
|
ds:
|
||||||
|
with ds; [
|
||||||
en
|
en
|
||||||
en-computers
|
en-computers
|
||||||
en-science
|
en-science
|
||||||
@@ -46,6 +42,8 @@ in
|
|||||||
|
|
||||||
# Code formatters for use with doom emacs
|
# Code formatters for use with doom emacs
|
||||||
nixfmt-rfc-style # nix
|
nixfmt-rfc-style # nix
|
||||||
|
alejandra # nix
|
||||||
|
|
||||||
nixd # nix lsp
|
nixd # nix lsp
|
||||||
dockfmt # docker
|
dockfmt # docker
|
||||||
google-java-format # java
|
google-java-format # java
|
||||||
@@ -54,6 +52,14 @@ in
|
|||||||
shfmt
|
shfmt
|
||||||
pyright
|
pyright
|
||||||
clang-tools # c++ lsp etc
|
clang-tools # c++ lsp etc
|
||||||
|
ccls # alternative c++ lsp
|
||||||
|
cmake
|
||||||
|
bear
|
||||||
|
cmake-language-server
|
||||||
|
|
||||||
|
# qt6.full # qt tools and libs including lsp
|
||||||
|
tinymist # typst lsp
|
||||||
|
|
||||||
ltex-ls # latex languagetool
|
ltex-ls # latex languagetool
|
||||||
|
|
||||||
graphviz
|
graphviz
|
||||||
@@ -61,6 +67,27 @@ in
|
|||||||
# neocmakelsp # cmake
|
# neocmakelsp # cmake
|
||||||
|
|
||||||
emacs-all-the-icons-fonts
|
emacs-all-the-icons-fonts
|
||||||
|
frajul.typst-languagetool
|
||||||
|
ltex-ls-plus
|
||||||
|
|
||||||
|
(texlive.combine {
|
||||||
|
inherit
|
||||||
|
(texlive)
|
||||||
|
scheme-basic
|
||||||
|
# for rendering latex in inkscape
|
||||||
|
standalone
|
||||||
|
amsmath
|
||||||
|
preview
|
||||||
|
# needed for org mode preview
|
||||||
|
dvisvgm
|
||||||
|
dvipng # for preview and export as html
|
||||||
|
wrapfig
|
||||||
|
# amsmath
|
||||||
|
ulem
|
||||||
|
hyperref
|
||||||
|
capt-of
|
||||||
|
;
|
||||||
|
})
|
||||||
]
|
]
|
||||||
++ lib.optional config.is-nixos emacs;
|
++ lib.optional config.is-nixos emacs;
|
||||||
|
|
||||||
|
|||||||
@@ -3,10 +3,7 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
with lib; {
|
||||||
with lib;
|
|
||||||
|
|
||||||
{
|
|
||||||
home.file = {
|
home.file = {
|
||||||
".config/starship.toml".source = ./starship.toml;
|
".config/starship.toml".source = ./starship.toml;
|
||||||
".config/fish/conf.d/last-working-dir.fish".source = ./last-working-dir.fish;
|
".config/fish/conf.d/last-working-dir.fish".source = ./last-working-dir.fish;
|
||||||
@@ -30,6 +27,11 @@ with lib;
|
|||||||
enableFishIntegration = true;
|
enableFishIntegration = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
programs.zoxide = {
|
||||||
|
enable = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
};
|
||||||
|
|
||||||
programs.fish = {
|
programs.fish = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
@@ -41,14 +43,18 @@ with lib;
|
|||||||
cd $argv
|
cd $argv
|
||||||
'';
|
'';
|
||||||
run = ''
|
run = ''
|
||||||
nix run nixpkgs#"$argv[1]" -- $argv[2..-1]
|
nix run --impure nixpkgs#"$argv[1]" -- $argv[2..-1]
|
||||||
'';
|
'';
|
||||||
shell = ''
|
shell = ''
|
||||||
set args
|
set args
|
||||||
for arg in $argv
|
for arg in $argv
|
||||||
set args $args nixpkgs#$arg
|
set args $args nixpkgs#$arg
|
||||||
end
|
end
|
||||||
nix shell $args
|
nix shell --impure $args
|
||||||
|
'';
|
||||||
|
fish_user_key_bindings = ''
|
||||||
|
bind ctrl-space 'zi; commandline -f repaint'
|
||||||
|
bind -M insert ctrl-space 'zi; commandline -f repaint'
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,13 +1,9 @@
|
|||||||
{
|
{
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
config,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
with lib; {
|
||||||
with lib;
|
|
||||||
|
|
||||||
{
|
|
||||||
fonts.fontconfig.enable = true; # required to autoload fonts from packages
|
fonts.fontconfig.enable = true; # required to autoload fonts from packages
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
nerd-fonts.fira-code
|
nerd-fonts.fira-code
|
||||||
@@ -15,7 +11,7 @@ with lib;
|
|||||||
dejavu_fonts
|
dejavu_fonts
|
||||||
noto-fonts
|
noto-fonts
|
||||||
noto-fonts-cjk-sans
|
noto-fonts-cjk-sans
|
||||||
noto-fonts-emoji
|
noto-fonts-color-emoji
|
||||||
liberation_ttf
|
liberation_ttf
|
||||||
fira-code
|
fira-code
|
||||||
fira-code-symbols
|
fira-code-symbols
|
||||||
|
|||||||
@@ -9,6 +9,5 @@
|
|||||||
settings = {
|
settings = {
|
||||||
general.adjustment-method = "wayland";
|
general.adjustment-method = "wayland";
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.ghostty = {
|
||||||
|
enable = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
settings = {
|
||||||
|
theme = "catppuccin-mocha";
|
||||||
|
font-size = 12;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.sessionVariables.TERMINAL = lib.mkIf (config.terminal == "ghostty") "ghostty";
|
||||||
|
}
|
||||||
@@ -3,11 +3,9 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
inputs,
|
inputs,
|
||||||
...
|
...
|
||||||
}:
|
}: let
|
||||||
let
|
|
||||||
inherit (inputs.nix-colors.lib-contrib {inherit pkgs;}) gtkThemeFromScheme;
|
inherit (inputs.nix-colors.lib-contrib {inherit pkgs;}) gtkThemeFromScheme;
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
# Do not make conditional, just toggle things on and off
|
# Do not make conditional, just toggle things on and off
|
||||||
imports = [inputs.nix-colors.homeManagerModules.default]; # TODO: what does this do
|
imports = [inputs.nix-colors.homeManagerModules.default]; # TODO: what does this do
|
||||||
|
|
||||||
@@ -26,9 +24,10 @@ in
|
|||||||
};
|
};
|
||||||
cursorTheme = {
|
cursorTheme = {
|
||||||
package = pkgs.apple-cursor;
|
package = pkgs.apple-cursor;
|
||||||
name = "macOS-BigSur";
|
name = "macOS";
|
||||||
size = 24;
|
size = 24;
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-gtk];
|
||||||
}
|
}
|
||||||
@@ -4,14 +4,12 @@
|
|||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}:
|
}: let
|
||||||
|
inherit
|
||||||
let
|
(inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
||||||
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
|
||||||
palette
|
palette
|
||||||
;
|
;
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
# inputs.hyprland.homeManagerModules.default
|
# inputs.hyprland.homeManagerModules.default
|
||||||
./waybar
|
./waybar
|
||||||
@@ -26,7 +24,7 @@ in
|
|||||||
./zathura.nix
|
./zathura.nix
|
||||||
./waypipe.nix
|
./waypipe.nix
|
||||||
|
|
||||||
./hyprbars.nix
|
# ./hyprbars.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
xdg.portal = {
|
xdg.portal = {
|
||||||
@@ -42,15 +40,29 @@ in
|
|||||||
programs.imv.enable = true; # TODO: what is that
|
programs.imv.enable = true; # TODO: what is that
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
# hyprpicker # TODO
|
hyprpicker
|
||||||
# hyprcursor # TODO
|
|
||||||
brightnessctl
|
brightnessctl
|
||||||
# grimblast
|
|
||||||
frajul.hyprshot-gui
|
frajul.hyprshot-gui
|
||||||
frajul.wl-ocr
|
frajul.wl-ocr
|
||||||
|
|
||||||
wf-recorder
|
wf-recorder
|
||||||
wl-clipboard
|
wl-clipboard
|
||||||
|
|
||||||
|
(pkgs.writeShellScriptBin "toggle-screen-mirroring" (
|
||||||
|
builtins.readFile ./toggle-screen-mirroring.sh
|
||||||
|
))
|
||||||
|
|
||||||
|
(pkgs.writeShellScriptBin "correct-workspace-locations" (
|
||||||
|
lib.concatStringsSep "\n" (
|
||||||
|
builtins.concatLists (
|
||||||
|
map (
|
||||||
|
monitor:
|
||||||
|
map (ws: "hyprctl dispatch moveworkspacetomonitor ${ws} ${monitor.name}") monitor.workspaces
|
||||||
|
)
|
||||||
|
config.monitors
|
||||||
|
)
|
||||||
|
)
|
||||||
|
))
|
||||||
];
|
];
|
||||||
|
|
||||||
services.cliphist = {
|
services.cliphist = {
|
||||||
@@ -140,14 +152,61 @@ in
|
|||||||
# hyprlandPlugins.hyprbars
|
# hyprlandPlugins.hyprbars
|
||||||
];
|
];
|
||||||
|
|
||||||
|
submaps = {
|
||||||
|
"resize".settings = {
|
||||||
|
binde = [
|
||||||
|
", right, resizeactive, 20"
|
||||||
|
", left, resizeactive, -20 0"
|
||||||
|
", up, resizeactive, 0 -20"
|
||||||
|
", down, resizeactive, 0 20"
|
||||||
|
", l, resizeactive, 20"
|
||||||
|
", h, resizeactive, -20 0"
|
||||||
|
", k, resizeactive, 0 -20"
|
||||||
|
", j, resizeactive, 0 20"
|
||||||
|
];
|
||||||
|
|
||||||
|
bind = [
|
||||||
|
", q, submap, reset"
|
||||||
|
", escape, submap, reset"
|
||||||
|
|
||||||
|
", catchall, submap, reset" # make any other keypress cancel the submap
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"open, reset".settings = {
|
||||||
|
bind = [
|
||||||
|
", e, exec, emacs"
|
||||||
|
", m, exec, open-messaging"
|
||||||
|
", b, exec, firefox"
|
||||||
|
|
||||||
|
", catchall, submap, reset" # make any other keypress cancel the submap
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Disable animations for selection, fixes screenshots
|
||||||
|
extraConfig = ''
|
||||||
|
# layerrule {
|
||||||
|
# name = no_anim_for_selection
|
||||||
|
# no_anim = on
|
||||||
|
# match:namespace = selection
|
||||||
|
# }
|
||||||
|
layerrule = noanim, selection
|
||||||
|
'';
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
"$mod" = "SUPER";
|
"$mod" = "SUPER";
|
||||||
|
|
||||||
|
# Environment variables programs like emacs have access to
|
||||||
|
env = "TERMINAL,${config.terminal}";
|
||||||
|
|
||||||
# Monitors
|
# Monitors
|
||||||
monitor = ",preferred,auto,auto";
|
monitor = ",preferred,auto,1";
|
||||||
|
|
||||||
# Autostart
|
# Autostart
|
||||||
exec-once = [ "firefox" ];
|
exec-once = [
|
||||||
|
(lib.getExe pkgs.firefox)
|
||||||
|
(lib.getExe pkgs.waybar)
|
||||||
|
];
|
||||||
|
|
||||||
# Look and Feel
|
# Look and Feel
|
||||||
general = {
|
general = {
|
||||||
@@ -198,6 +257,7 @@ in
|
|||||||
|
|
||||||
exec = [
|
exec = [
|
||||||
"hyprctl setcursor ${config.gtk.cursorTheme.name} ${toString config.gtk.cursorTheme.size}"
|
"hyprctl setcursor ${config.gtk.cursorTheme.name} ${toString config.gtk.cursorTheme.size}"
|
||||||
|
"correct-workspace-locations"
|
||||||
];
|
];
|
||||||
|
|
||||||
misc = {
|
misc = {
|
||||||
@@ -209,6 +269,10 @@ in
|
|||||||
vfr = true; # power saving
|
vfr = true; # power saving
|
||||||
};
|
};
|
||||||
|
|
||||||
|
cursor = {
|
||||||
|
no_hardware_cursors = 1; # disable hardware cursors to fix tearing on kardorf
|
||||||
|
};
|
||||||
|
|
||||||
render = {
|
render = {
|
||||||
# we do, in fact, want direct scanout
|
# we do, in fact, want direct scanout
|
||||||
direct_scanout = true;
|
direct_scanout = true;
|
||||||
@@ -225,7 +289,10 @@ in
|
|||||||
windowrulev2 = [
|
windowrulev2 = [
|
||||||
"suppressevent maximize, class:.*"
|
"suppressevent maximize, class:.*"
|
||||||
"workspace 1, class:firefox"
|
"workspace 1, class:firefox"
|
||||||
|
"workspace 8, class:Zotero"
|
||||||
"workspace 9, class:nheko"
|
"workspace 9, class:nheko"
|
||||||
|
"workspace 9, class:Element"
|
||||||
|
"workspace 9, class:discord"
|
||||||
"workspace 9, class:org.telegram.desktop"
|
"workspace 9, class:org.telegram.desktop"
|
||||||
"workspace 10, class:thunderbird"
|
"workspace 10, class:thunderbird"
|
||||||
"float, class:qalculate-gtk"
|
"float, class:qalculate-gtk"
|
||||||
@@ -233,23 +300,17 @@ in
|
|||||||
];
|
];
|
||||||
|
|
||||||
# Workspace rules
|
# Workspace rules
|
||||||
workspace = [
|
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)
|
# smart gaps (none when only one window in workspace)
|
||||||
"w[t1], gapsin:0, gapsout:0, border:1"
|
"w[t1], gapsin:0, gapsout:0, border:1"
|
||||||
"w[tg1], gapsin:0, gapsout:0, border:1"
|
"w[tg1], gapsin:0, gapsout:0, border:1"
|
||||||
"f[1], gapsin:0, gapsout:0, border:1"
|
"f[1], gapsin:0, gapsout:0, border:1"
|
||||||
];
|
]
|
||||||
|
# builds like "1, e-DP1" "2, HDMI-1" etc.
|
||||||
|
++ builtins.concatLists (
|
||||||
|
map (monitor: map (ws: "${ws}, monitor:${monitor.name}") monitor.workspaces) config.monitors
|
||||||
|
);
|
||||||
|
|
||||||
# Mouse binds
|
# Mouse binds
|
||||||
bindm = [
|
bindm = [
|
||||||
@@ -261,17 +322,23 @@ in
|
|||||||
bind =
|
bind =
|
||||||
[
|
[
|
||||||
# compositor commands
|
# compositor commands
|
||||||
"$mod, Space, focuswindow, floating"
|
#
|
||||||
"$mod SHIFT, Space, togglefloating,"
|
#
|
||||||
|
"$mod, R, submap, resize"
|
||||||
|
"$mod, O, submap, open"
|
||||||
|
#
|
||||||
|
|
||||||
|
"$mod, SPACE, focuswindow, floating"
|
||||||
|
"$mod SHIFT, SPACE, togglefloating,"
|
||||||
"$mod, F, fullscreen,"
|
"$mod, F, fullscreen,"
|
||||||
"$mod, X, killactive,"
|
"$mod, X, killactive,"
|
||||||
|
|
||||||
"$mod, O, togglesplit," # dwindle
|
"$mod, -, togglesplit," # dwindle
|
||||||
|
|
||||||
# opening applications
|
# opening applications
|
||||||
"$mod, D, exec, wofi --show drun,run"
|
"$mod, D, exec, wofi --show drun,run"
|
||||||
"$mod, E, exec, pcmanfm"
|
"$mod, E, exec, pcmanfm"
|
||||||
"$mod, Return, exec, kitty"
|
"$mod, Return, exec, ${config.terminal}"
|
||||||
"$mod, B, exec, firefox"
|
"$mod, B, exec, firefox"
|
||||||
"$mod, C, exec, qalculate-gtk"
|
"$mod, C, exec, qalculate-gtk"
|
||||||
|
|
||||||
@@ -279,7 +346,9 @@ in
|
|||||||
"$mod SHIFT, E, exec, wlogout -p layer-shell"
|
"$mod SHIFT, E, exec, wlogout -p layer-shell"
|
||||||
"$mod, Escape, exec, wlogout -p layer-shell"
|
"$mod, Escape, exec, wlogout -p layer-shell"
|
||||||
"$mod SHIFT, R, exec, hyprctl reload"
|
"$mod SHIFT, R, exec, hyprctl reload"
|
||||||
|
"$mod, Print, exec, hyprshot-gui"
|
||||||
", Print, exec, hyprshot-gui"
|
", Print, exec, hyprshot-gui"
|
||||||
|
"$mod, P, exec, toggle-screen-mirroring; correct-workspace-locations"
|
||||||
|
|
||||||
# "$mod SHIFT, E, exec, pkill Hyprland"
|
# "$mod SHIFT, E, exec, pkill Hyprland"
|
||||||
# "$mod, G, togglegroup,"
|
# "$mod, G, togglegroup,"
|
||||||
|
|||||||
@@ -4,8 +4,7 @@
|
|||||||
lib,
|
lib,
|
||||||
outputs,
|
outputs,
|
||||||
...
|
...
|
||||||
}:
|
}: let
|
||||||
let
|
|
||||||
getHostname = x: lib.last (lib.splitString "@" x);
|
getHostname = x: lib.last (lib.splitString "@" x);
|
||||||
# remoteColorschemes = lib.mapAttrs' (n: v: {
|
# remoteColorschemes = lib.mapAttrs' (n: v: {
|
||||||
# name = getHostname n;
|
# name = getHostname n;
|
||||||
@@ -27,8 +26,7 @@ let
|
|||||||
${lib.getExe pkgs.gnused} -i '/Initialized successfully/d' main.cpp
|
${lib.getExe pkgs.gnused} -i '/Initialized successfully/d' main.cpp
|
||||||
'';
|
'';
|
||||||
});
|
});
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
plugins = [hyprbars];
|
plugins = [hyprbars];
|
||||||
settings = {
|
settings = {
|
||||||
@@ -40,8 +38,7 @@ in
|
|||||||
# bar_text_size = config.fontProfiles.regular.size;
|
# bar_text_size = config.fontProfiles.regular.size;
|
||||||
bar_part_of_window = true;
|
bar_part_of_window = true;
|
||||||
bar_precedence_over_border = true;
|
bar_precedence_over_border = true;
|
||||||
hyprbars-button =
|
hyprbars-button = let
|
||||||
let
|
|
||||||
closeAction = "hyprctl dispatch killactive";
|
closeAction = "hyprctl dispatch killactive";
|
||||||
|
|
||||||
isOnSpecial = ''hyprctl activewindow -j | jq -re 'select(.workspace.name == "special")' >/dev/null'';
|
isOnSpecial = ''hyprctl activewindow -j | jq -re 'select(.workspace.name == "special")' >/dev/null'';
|
||||||
@@ -50,8 +47,7 @@ in
|
|||||||
minimizeAction = "${isOnSpecial} && ${moveToActive} || ${moveToSpecial}";
|
minimizeAction = "${isOnSpecial} && ${moveToActive} || ${moveToSpecial}";
|
||||||
|
|
||||||
maximizeAction = "hyprctl dispatch fullscreen 1";
|
maximizeAction = "hyprctl dispatch fullscreen 1";
|
||||||
in
|
in [
|
||||||
[
|
|
||||||
# Red close button
|
# Red close button
|
||||||
# "${rgb config.colorscheme.colors.red},12,,${closeAction}"
|
# "${rgb config.colorscheme.colors.red},12,,${closeAction}"
|
||||||
# # Yellow "minimize" (send to special workspace) button
|
# # Yellow "minimize" (send to special workspace) button
|
||||||
|
|||||||
@@ -5,13 +5,12 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
inputs,
|
inputs,
|
||||||
...
|
...
|
||||||
}:
|
}: let
|
||||||
let
|
inherit
|
||||||
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
(inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
||||||
palette
|
palette
|
||||||
;
|
;
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
programs.hyprlock.enable = true;
|
programs.hyprlock.enable = true;
|
||||||
programs.hyprlock.settings = {
|
programs.hyprlock.settings = {
|
||||||
general = {
|
general = {
|
||||||
|
|||||||
@@ -5,25 +5,26 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
inputs,
|
inputs,
|
||||||
...
|
...
|
||||||
}:
|
}: let
|
||||||
let
|
inherit
|
||||||
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
(inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
||||||
palette
|
palette
|
||||||
;
|
;
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
home.packages = with pkgs; [libnotify];
|
home.packages = with pkgs; [libnotify];
|
||||||
|
|
||||||
services.mako = {
|
services.mako = {
|
||||||
enable = true;
|
enable = true;
|
||||||
defaultTimeout = 5000; # milliseconds, can be overwritten by notification sender
|
settings = {
|
||||||
# backgroundColor = "#${palette.base00}"; TODO fix
|
defaultTimeout = "5000"; # milliseconds, can be overwritten by notification sender
|
||||||
# textColor = "#${palette.base05}";
|
backgroundColor = "#${palette.base00}";
|
||||||
# borderColor = "#${palette.base0D}";
|
textColor = "#${palette.base05}";
|
||||||
# progressColor = "over #${palette.base02}";
|
borderColor = "#${palette.base0D}";
|
||||||
# extraConfig = ''
|
progressColor = "over #${palette.base02}";
|
||||||
# [urgency=high]
|
extraConfig = ''
|
||||||
# border-color=#${palette.base09}
|
[urgency=high]
|
||||||
|
border-color=#${palette.base09}
|
||||||
# '';
|
# '';
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,8 +3,7 @@
|
|||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}:
|
}: let
|
||||||
let
|
|
||||||
swaylock = "${config.programs.swaylock.package}/bin/swaylock";
|
swaylock = "${config.programs.swaylock.package}/bin/swaylock";
|
||||||
pgrep = "${pkgs.procps}/bin/pgrep";
|
pgrep = "${pkgs.procps}/bin/pgrep";
|
||||||
pactl = "${pkgs.pulseaudio}/bin/pactl";
|
pactl = "${pkgs.pulseaudio}/bin/pactl";
|
||||||
@@ -15,13 +14,11 @@ let
|
|||||||
lockTime = 4 * 60; # TODO: configurable desktop (10 min)/laptop (4 min)
|
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.
|
# Makes two timeouts: one for when the screen is not locked (lockTime+timeout) and one for when it is.
|
||||||
afterLockTimeout =
|
afterLockTimeout = {
|
||||||
{
|
|
||||||
timeout,
|
timeout,
|
||||||
command,
|
command,
|
||||||
resumeCommand ? null,
|
resumeCommand ? null,
|
||||||
}:
|
}: [
|
||||||
[
|
|
||||||
{
|
{
|
||||||
timeout = lockTime + timeout;
|
timeout = lockTime + timeout;
|
||||||
inherit command resumeCommand;
|
inherit command resumeCommand;
|
||||||
@@ -31,8 +28,7 @@ let
|
|||||||
inherit resumeCommand timeout;
|
inherit resumeCommand timeout;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
services.swayidle = {
|
services.swayidle = {
|
||||||
enable = true;
|
enable = true;
|
||||||
systemdTarget = "graphical-session.target";
|
systemdTarget = "graphical-session.target";
|
||||||
|
|||||||
@@ -2,11 +2,9 @@
|
|||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}: let
|
||||||
let
|
|
||||||
inherit (config.colorscheme) colors;
|
inherit (config.colorscheme) colors;
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
programs.swaylock = {
|
programs.swaylock = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
|
|||||||
@@ -0,0 +1,67 @@
|
|||||||
|
#! /usr/bin/env sh
|
||||||
|
|
||||||
|
# A hyprland script for a laptop-external-monitor setup, toggling between which is in use
|
||||||
|
|
||||||
|
# Launch at startup to make hyprland disable the internal monitor if an external monitor is detected and enabled
|
||||||
|
# Additionally it's called with a keybind to switch between a laptop monitor and an external display
|
||||||
|
# Ideally the conditional monitor behaviour was instead done directly in hyprland.conf, but I'm not sure whether that's possible
|
||||||
|
#
|
||||||
|
# Relevant info:
|
||||||
|
# - hyprctl monitors: identifies currently enabled monitors
|
||||||
|
# - hyprctl monitors all: identifies ALL connected monitors - including those not in use
|
||||||
|
#
|
||||||
|
# Suggested use:
|
||||||
|
# Add this line somewhere after the regular monitor configuration in hyprland.conf:
|
||||||
|
# exec = /path/to/hyprland-monitors-toggle.sh
|
||||||
|
# Add a keybind to run this script on demand:
|
||||||
|
# bind =,SomeKeyHere, exec, /path/to/hyprland-monitors-toggle.sh
|
||||||
|
|
||||||
|
#move_all_workspaces_to_monitor() {
|
||||||
|
# TARGET_MONITOR="$1"
|
||||||
|
|
||||||
|
# hyprctl workspaces | grep ^workspace | cut --delimiter ' ' --fields 3 | xargs -I '{}' hyprctl dispatch moveworkspacetomonitor '{}' "$TARGET_MONITOR"
|
||||||
|
|
||||||
|
# # Previous approach
|
||||||
|
# #hyprctl swapactiveworkspaces $EXTERNAL_MONITOR $INTERNAL_MONITOR
|
||||||
|
#}
|
||||||
|
|
||||||
|
# TODO: Detect these instead of hardcoding them
|
||||||
|
INTERNAL_MONITOR="eDP-1"
|
||||||
|
EXTERNAL_MONITOR="HDMI-A-1"
|
||||||
|
|
||||||
|
# NUM_MONITORS=$(hyprctl monitors all | grep --count Monitor)
|
||||||
|
# NUM_MONITORS_ACTIVE=$(hyprctl monitors | grep --count Monitor)
|
||||||
|
|
||||||
|
# Make sure all
|
||||||
|
# if [ "$NUM_MONITORS_ACTIVE" -eq 1 ]; then
|
||||||
|
# move_all_workspaces_to_monitor $INTERNAL_MONITOR
|
||||||
|
# exit
|
||||||
|
# fi
|
||||||
|
|
||||||
|
MIRROR_SETTING=$(hyprctl monitors all -j | jq -r '.[] | select(.name == "HDMI-A-1") | .mirrorOf')
|
||||||
|
|
||||||
|
# # For dynamically toggling which monitor is active later via a keybind
|
||||||
|
# if [ "$NUM_MONITORS" -gt 1 ]; then # Handling multiple monitors
|
||||||
|
# if hyprctl monitors | cut --delimiter ' ' --fields 2 | grep --quiet ^$EXTERNAL_MONITOR; then
|
||||||
|
# hyprctl keyword monitor $INTERNAL_MONITOR,preferred,0x0,1
|
||||||
|
# move_all_workspaces_to_monitor $INTERNAL_MONITOR
|
||||||
|
# hyprctl keyword monitor "$EXTERNAL_MONITOR, disable"
|
||||||
|
# else
|
||||||
|
# hyprctl keyword monitor $EXTERNAL_MONITOR,preferred,0x0,1
|
||||||
|
# move_all_workspaces_to_monitor $EXTERNAL_MONITOR
|
||||||
|
# hyprctl keyword monitor "$INTERNAL_MONITOR, disable"
|
||||||
|
# fi
|
||||||
|
# else # If the external monitor is disconnected without running this script first, it might become the case that no monitor is on - therefore turn on the laptop monitor!
|
||||||
|
# hyprctl keyword monitor $INTERNAL_MONITOR,preferred,0x0,1
|
||||||
|
# move_all_workspaces_to_monitor $INTERNAL_MONITOR
|
||||||
|
# fi
|
||||||
|
|
||||||
|
echo setting:
|
||||||
|
echo $MIRROR_SETTING
|
||||||
|
if [ "$MIRROR_SETTING" = "none" ]; then
|
||||||
|
echo "mirroring..."
|
||||||
|
hyprctl keyword monitor "$EXTERNAL_MONITOR, preferred, auto, 1, mirror, $INTERNAL_MONITOR"
|
||||||
|
else
|
||||||
|
hyprctl keyword monitor "$EXTERNAL_MONITOR, disable" # shortly disable monitor so waybar recognizes the new monitor again # TODO: find better solution
|
||||||
|
hyprctl keyword monitor "$EXTERNAL_MONITOR, preferred, auto, 1"
|
||||||
|
fi
|
||||||
@@ -12,7 +12,14 @@
|
|||||||
|
|
||||||
"modules-center": [],
|
"modules-center": [],
|
||||||
|
|
||||||
"modules-right": ["idle_inhibitor", "disk", "cpu", "memory", "pulseaudio", "battery", "clock", "tray"],
|
"modules-right": ["idle_inhibitor", "custom/nixos-update", "disk", "cpu", "memory", "pulseaudio", "battery", "clock", "tray"],
|
||||||
|
|
||||||
|
"custom/nixos-update": {
|
||||||
|
"exec": "frajul-auto-upgrade-status",
|
||||||
|
"return-type": "json",
|
||||||
|
"interval": 2,
|
||||||
|
"on-click-right": "frajul-auto-upgrade-toggle"
|
||||||
|
},
|
||||||
|
|
||||||
"hyprland/workspaces": {
|
"hyprland/workspaces": {
|
||||||
"on-scroll-up": "hyprctl dispatch workspace m+1",
|
"on-scroll-up": "hyprctl dispatch workspace m+1",
|
||||||
@@ -35,6 +42,7 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
"idle_inhibitor": {
|
"idle_inhibitor": {
|
||||||
|
"start-activated": true,
|
||||||
"format": "{icon}",
|
"format": "{icon}",
|
||||||
"format-icons": {
|
"format-icons": {
|
||||||
"activated": "",
|
"activated": "",
|
||||||
|
|||||||
@@ -5,14 +5,12 @@
|
|||||||
lib,
|
lib,
|
||||||
inputs,
|
inputs,
|
||||||
...
|
...
|
||||||
}:
|
}: let
|
||||||
let
|
|
||||||
palette = (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name}).palette;
|
palette = (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name}).palette;
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
programs.waybar = {
|
programs.waybar = {
|
||||||
enable = true;
|
enable = true;
|
||||||
systemd.enable = true;
|
# systemd.enable = true;
|
||||||
settings.mainBar = builtins.fromJSON (builtins.readFile ./config.json);
|
settings.mainBar = builtins.fromJSON (builtins.readFile ./config.json);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -3,8 +3,7 @@
|
|||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}:
|
}: {
|
||||||
{
|
|
||||||
home.packages = [pkgs.waypipe];
|
home.packages = [pkgs.waypipe];
|
||||||
systemd.user.services = {
|
systemd.user.services = {
|
||||||
waypipe-client = {
|
waypipe-client = {
|
||||||
|
|||||||
@@ -5,13 +5,12 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
inputs,
|
inputs,
|
||||||
...
|
...
|
||||||
}:
|
}: let
|
||||||
let
|
inherit
|
||||||
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
(inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
||||||
palette
|
palette
|
||||||
;
|
;
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
home.packages = with pkgs; [wlogout];
|
home.packages = with pkgs; [wlogout];
|
||||||
|
|
||||||
# xdg.configFile."wlogout/style.css".text = ''
|
# xdg.configFile."wlogout/style.css".text = ''
|
||||||
|
|||||||
@@ -5,13 +5,12 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
inputs,
|
inputs,
|
||||||
...
|
...
|
||||||
}:
|
}: let
|
||||||
let
|
inherit
|
||||||
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
(inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
||||||
palette
|
palette
|
||||||
;
|
;
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
home.packages = with pkgs; [wofi];
|
home.packages = with pkgs; [wofi];
|
||||||
|
|
||||||
xdg.configFile."wofi/config".source = ./config;
|
xdg.configFile."wofi/config".source = ./config;
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
{ config, ... }:
|
{config, ...}: let
|
||||||
let
|
|
||||||
inherit (config.colorscheme) colors;
|
inherit (config.colorscheme) colors;
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
programs.zathura = {
|
programs.zathura = {
|
||||||
enable = true;
|
enable = true;
|
||||||
options = {
|
options = {
|
||||||
|
|||||||
@@ -3,8 +3,7 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}:
|
}: {
|
||||||
{
|
|
||||||
imports = [../rofi];
|
imports = [../rofi];
|
||||||
|
|
||||||
services.dunst.enable = true;
|
services.dunst.enable = true;
|
||||||
@@ -36,7 +35,9 @@
|
|||||||
|
|
||||||
# Overwrite default home-manager config file
|
# Overwrite default home-manager config file
|
||||||
xdg.configFile."i3/config".source = lib.mkForce (
|
xdg.configFile."i3/config".source = lib.mkForce (
|
||||||
if config.hostName == "kardorf" then ./i3/config-kardorf else ./i3/config
|
if config.hostName == "kardorf"
|
||||||
|
then ./i3/config-kardorf
|
||||||
|
else ./i3/config
|
||||||
);
|
);
|
||||||
|
|
||||||
home.file = {
|
home.file = {
|
||||||
|
|||||||