54 Commits

Author SHA1 Message Date
7f4c41429e update flake
Some checks failed
Update Nix Flake / update-flake (push) Failing after 15s
2025-07-04 14:44:51 +02:00
6d21fe4262 format code 2025-07-04 14:44:31 +02:00
c081f95aaf open-messaging: adapt to new telegram program name 2025-07-04 14:44:01 +02:00
452a34c7e8 Neovim: add clangd 2025-07-04 14:43:51 +02:00
15c4616b91 Fix emacs not having TERMINAL env var 2025-07-04 14:43:45 +02:00
07274a0364 Update alacritty config, use as default 2025-07-04 14:41:58 +02:00
3bb8db1349 Fix builder using itself as remote subsituter 2025-07-04 14:40:58 +02:00
65a3dcdc08 Use ghostty as primary terminal
Some checks failed
Update Nix Flake / update-flake (push) Failing after 16s
2025-06-30 08:37:24 +02:00
9fe40bfd13 package rtklib 2025-05-26 21:51:07 +02:00
07943d4f95 format file
Some checks failed
Update Nix Flake / update-flake (push) Failing after 12s
2025-05-23 09:59:30 +02:00
815a79ff41 kardorf: fix seahorse and plasma6 config conflict 2025-05-23 09:58:59 +02:00
32ddceba8f kardorf: use i3 instead of hyprland 2025-05-23 09:58:38 +02:00
55ba4125d6 add latex packages to fix org mode exporting
Some checks failed
Update Nix Flake / update-flake (push) Failing after 11s
2025-05-21 23:01:09 +02:00
b9274f546f update flake 2025-05-21 23:01:03 +02:00
fd246d7daf Add hydra-auto-upgrade module, still wip
Some checks failed
Update Nix Flake / update-flake (push) Failing after 16s
2025-05-16 13:13:47 +02:00
edae0d2bb0 Delete i3 scripts also available in my nix pkgs 2025-05-16 12:56:22 +02:00
1cb23dd0a4 Add todo 2025-05-16 12:53:20 +02:00
ab1052193a rename deprecated options 2025-05-16 12:12:22 +02:00
6dadb2008c kardorf: enable ssh access 2025-05-16 12:11:45 +02:00
18f9cc3fa8 Add user julian to dialout for serial port access 2025-05-16 08:27:45 +02:00
9295ad7010 add kardorf ssh key to common secrets.yaml 2025-05-16 08:27:45 +02:00
e3cf2379ab yazi: update config to new version 2025-05-16 08:27:45 +02:00
f6c3f676b2 update flake 2025-05-16 08:27:45 +02:00
d57017382a v3ms: add /snap/bin to path
Some checks failed
Update Nix Flake / update-flake (push) Failing after 14s
2025-05-09 11:41:21 +02:00
1d7690eab4 Fix mako settings
Some checks failed
Update Nix Flake / update-flake (push) Failing after 14s
2025-05-06 07:50:35 +02:00
67d68a9946 Fix waybar not visible on second monitor after toggling mirroring twice
Some checks failed
Update Nix Flake / update-flake (push) Failing after 15s
2025-05-05 15:10:07 +02:00
9af362b5c8 hyprland: quick and dirty screen mirroring 2025-05-05 14:56:22 +02:00
a0ae09452f hyprland: install hyprpicker 2025-05-05 08:24:26 +02:00
711859e660 hyprland: fix cursor theme not applied 2025-05-05 08:24:09 +02:00
1c1e496425 use NH_FLAKE instead of FLAKE for nh 2025-05-05 07:11:28 +02:00
97229a521f Add discord to open-messaging 2025-05-05 07:11:02 +02:00
7d8190210b Mako: disable usage of deprecated config value
Some checks failed
Update Nix Flake / update-flake (push) Failing after 15s
2025-05-04 20:42:53 +02:00
a1dfeff98b topgrade: disable "update flake" step 2025-05-04 20:29:11 +02:00
9e512c2863 Update flake 2025-05-04 20:29:06 +02:00
136653b0fa Use hashed password for julian 2025-05-04 13:52:36 +02:00
75fb0f54ec Delete unused hyprland nixos config 2025-05-04 13:52:27 +02:00
a3282f3eb3 Configure kardorf host config 2025-05-04 13:52:13 +02:00
843dfb986d Fix type of monitor.workspaces 2025-05-04 13:51:54 +02:00
3eba0fe092 Make nvidia on kardorf work 2025-05-04 13:51:44 +02:00
fdc8b03d9b Add user wolfi 2025-05-04 13:51:22 +02:00
d86321cfe6 Add monitor configuration to aspi and kardorf homes 2025-05-04 13:51:00 +02:00
881c930fdb Fix wrong architectures used for v3ms and kardorf 2025-05-04 13:50:36 +02:00
dc3f9fe681 Add kardorf ssh key to sops 2025-05-04 13:50:23 +02:00
d73ff17327 Delete deprecated .dotter files 2025-05-04 13:49:24 +02:00
67468ba6fa Fix kardorf using aspi config 2025-05-01 22:09:02 +02:00
6d2a7f50df workflow: add git fetch before rebasing
Some checks failed
Update Nix Flake / update-flake (push) Failing after 15s
2025-04-30 13:15:25 +02:00
3cf8f19fcc Disable autostart for wireguard comu
Some checks failed
Update Nix Flake / update-flake (push) Failing after 14s
2025-04-29 21:44:54 +02:00
d335f6c892 builder: fix config
Some checks failed
Update Nix Flake / update-flake (push) Failing after 15s
2025-04-28 22:44:33 +02:00
8d94428f77 Fix lsp warnings for clean code 2025-04-28 22:27:16 +02:00
903776dca6 Clean up aspi and home hm config 2025-04-28 22:24:30 +02:00
b6dc568215 Rename desktop feature to gtk 2025-04-28 22:24:21 +02:00
130c341816 Remove wallpaper directory 2025-04-28 22:23:42 +02:00
8d0430ae52 Delete unused config file for shells 2025-04-28 22:19:00 +02:00
68da077c72 Format code with alejandra 2025-04-28 22:17:11 +02:00
146 changed files with 1127 additions and 1103 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -25,6 +25,7 @@ jobs:
- name: Rebase from master branch
shell: bash
run: |
git fetch origin master
commits_ahead=$(git rev-list --count HEAD..origin/master)
echo "Commits ahead: $commits_ahead"
git log --oneline -5

View File

@ -3,6 +3,8 @@ keys:
- &aspi-ssh age1q8lc5340gz5xw2f57nglrss68wv0j0hf36py2pdtrl6ky3yrq9qqk0njr4
- &pianonix-ssh age1hsmfz8fjxu83sax9lr487h8xr6cyge0apdq4zpge4c8jpcjj2cksj825ct
- &builder-ssh age1kw4kmdm45zprvdkrrpvgq966l7585vhusmum083qlwnr0xxgd3uqatcyja
- &kardorf-ssh age15lxw97z03q40xrdscnxqqugh5ky5aqrerg2t2rphkcqm6rnllurq8v98q5
creation_rules:
- path_regex: hosts/common/secrets.yaml$
key_groups:
@ -10,6 +12,7 @@ creation_rules:
- *primary
- *aspi-ssh
- *pianonix-ssh
- *kardorf-ssh
- path_regex: hosts/builder/secrets.yaml$
key_groups:

151
flake.lock generated
View File

@ -1,21 +1,5 @@
{
"nodes": {
"alacritty-theme": {
"flake": false,
"locked": {
"lastModified": 1740080741,
"narHash": "sha256-ROer+oqSY/Z5PAxZFJ5U9R+kMfWb596/1CuEWTcoMIk=",
"owner": "alacritty",
"repo": "alacritty-theme",
"rev": "687675f3f2245c80ff8bfe8180b0eb40dfc0bc86",
"type": "github"
},
"original": {
"owner": "alacritty",
"repo": "alacritty-theme",
"type": "github"
}
},
"base16-schemes": {
"flake": false,
"locked": {
@ -54,11 +38,11 @@
"utils": "utils"
},
"locked": {
"lastModified": 1727447169,
"narHash": "sha256-3KyjMPUKHkiWhwR91J1YchF6zb6gvckCAY1jOE+ne0U=",
"lastModified": 1749105467,
"narHash": "sha256-hXh76y/wDl15almBcqvjryB50B0BaiXJKk20f314RoE=",
"owner": "serokell",
"repo": "deploy-rs",
"rev": "aa07eb05537d4cd025e2310397a6adcedfe72c76",
"rev": "6bc76b872374845ba9d645a2f012b764fecd765f",
"type": "github"
},
"original": {
@ -74,11 +58,11 @@
]
},
"locked": {
"lastModified": 1741786315,
"narHash": "sha256-VT65AE2syHVj6v/DGB496bqBnu1PXrrzwlw07/Zpllc=",
"lastModified": 1750903843,
"narHash": "sha256-Ng9+f0H5/dW+mq/XOKvB9uwvGbsuiiO6HrPdAcVglCs=",
"owner": "nix-community",
"repo": "disko",
"rev": "0d8c6ad4a43906d14abd5c60e0ffe7b587b213de",
"rev": "83c4da299c1d7d300f8c6fd3a72ac46cb0d59aae",
"type": "github"
},
"original": {
@ -90,11 +74,11 @@
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"lastModified": 1733328505,
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"type": "github"
},
"original": {
@ -106,11 +90,11 @@
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1733328505,
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
"lastModified": 1747046372,
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
"type": "github"
},
"original": {
@ -127,11 +111,11 @@
]
},
"locked": {
"lastModified": 1741352980,
"narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=",
"lastModified": 1749398372,
"narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9",
"rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569",
"type": "github"
},
"original": {
@ -193,7 +177,7 @@
},
"flake-utils_4": {
"inputs": {
"systems": "systems_4"
"systems": "systems_5"
},
"locked": {
"lastModified": 1731533236,
@ -216,11 +200,11 @@
]
},
"locked": {
"lastModified": 1745340124,
"narHash": "sha256-zQTOl/JPGjiAQoU1yraCGfPBg7yr4nlHNdbZy8Ebrl4=",
"lastModified": 1751239699,
"narHash": "sha256-zA1uUdAq3c26fHm26xMWMuF5COhI18EzaH7az/P2OWM=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "c9433ae62fbb4bd09609e242569edc3b551e21a9",
"rev": "f6deff178cc4d6049d30785dbfc831e6c6e3a219",
"type": "github"
},
"original": {
@ -258,16 +242,16 @@
]
},
"locked": {
"lastModified": 1729958008,
"narHash": "sha256-EiOq8jF4Z/zQe0QYVc3+qSKxRK//CFHMB84aYrYGwEs=",
"lastModified": 1748294338,
"narHash": "sha256-FVO01jdmUNArzBS7NmaktLdGA5qA3lUMJ4B7a05Iynw=",
"owner": "NuschtOS",
"repo": "ixx",
"rev": "9fd01aad037f345350eab2cd45e1946cc66da4eb",
"rev": "cc5f390f7caf265461d4aab37e98d2292ebbdb85",
"type": "github"
},
"original": {
"owner": "NuschtOS",
"ref": "v0.0.6",
"ref": "v0.0.8",
"repo": "ixx",
"type": "github"
}
@ -361,11 +345,11 @@
]
},
"locked": {
"lastModified": 1741791880,
"narHash": "sha256-0nFAtEaSk0OZXIp3gjeK43e3drbzXjLLSye8RT6hKPU=",
"lastModified": 1751122911,
"narHash": "sha256-XVVKlxAmRe+DlkznExlv4V0f/W/qYkCBL3Tp+5ycoB0=",
"owner": "doronbehar",
"repo": "nix-matlab",
"rev": "a8ea92e365477727c924293255a143026e57a5ba",
"rev": "56437a6fe605f8a4bad0798f2b865d5851b8efca",
"type": "gitlab"
},
"original": {
@ -376,11 +360,11 @@
},
"nixos-hardware": {
"locked": {
"lastModified": 1744633460,
"narHash": "sha256-fbWE4Xpw6eH0Q6in+ymNuDwTkqmFmtxcQEmtRuKDTTk=",
"lastModified": 1750837715,
"narHash": "sha256-2m1ceZjbmgrJCZ2PuQZaK4in3gcg3o6rZ7WK6dr5vAA=",
"owner": "nixos",
"repo": "nixos-hardware",
"rev": "9a049b4a421076d27fee3eec664a18b2066824cb",
"rev": "98236410ea0fe204d0447149537a924fb71a6d4f",
"type": "github"
},
"original": {
@ -391,11 +375,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1702272962,
"narHash": "sha256-D+zHwkwPc6oYQ4G3A1HuadopqRwUY/JkMwHz1YF7j4Q=",
"lastModified": 1743014863,
"narHash": "sha256-jAIUqsiN2r3hCuHji80U7NNEafpIMBXiwKlSrjWMlpg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e97b3e4186bcadf0ef1b6be22b8558eab1cdeb5d",
"rev": "bd3bac8bfb542dbde7ffffb6987a1a1f9d41699f",
"type": "github"
},
"original": {
@ -422,11 +406,11 @@
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1744440957,
"narHash": "sha256-FHlSkNqFmPxPJvy+6fNLaNeWnF1lZSgqVCl/eWaJRc4=",
"lastModified": 1751048012,
"narHash": "sha256-MYbotu4UjWpTsq01wglhN5xDRfZYLFtNk7SBY0BcjkU=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "26d499fc9f1d567283d5d56fcf367edd815dba1d",
"rev": "a684c58d46ebbede49f280b653b9e56100aa3877",
"type": "github"
},
"original": {
@ -450,11 +434,11 @@
},
"nixpkgs_3": {
"locked": {
"lastModified": 1744932701,
"narHash": "sha256-fusHbZCyv126cyArUwwKrLdCkgVAIaa/fQJYFlCEqiU=",
"lastModified": 1751011381,
"narHash": "sha256-krGXKxvkBhnrSC/kGBmg5MyupUUT5R6IBCLEzx9jhMM=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "b024ced1aac25639f8ca8fdfc2f8c4fbd66c48ef",
"rev": "30e2e2857ba47844aa71991daa6ed1fc678bcbb7",
"type": "github"
},
"original": {
@ -470,14 +454,15 @@
"nixpkgs": [
"nixpkgs"
],
"nuschtosSearch": "nuschtosSearch"
"nuschtosSearch": "nuschtosSearch",
"systems": "systems_4"
},
"locked": {
"lastModified": 1745324162,
"narHash": "sha256-Sjb/LvtWpPtSXacjJCTrLAmWtXNJd0SWxO3PzTvD7Tc=",
"lastModified": 1751144320,
"narHash": "sha256-KJsKiGfkfXFB23V26NQ1p+UPsexI6NKtivnrwSlWWdQ=",
"owner": "nix-community",
"repo": "nixvim",
"rev": "60638182b8d1b0fe13631d02eafaf8903499ee60",
"rev": "ceb52aece5d571b37096945c2815604195a04eb4",
"type": "github"
},
"original": {
@ -496,11 +481,11 @@
]
},
"locked": {
"lastModified": 1739738736,
"narHash": "sha256-Rl4Fw+3PsLTEzzUGlB8kePaiIersDbv5voAif3D6LoM=",
"lastModified": 1749730855,
"narHash": "sha256-L3x2nSlFkXkM6tQPLJP3oCBMIsRifhIDPMQQdHO5xWo=",
"owner": "NuschtOS",
"repo": "search",
"rev": "9ff62c8e1fbe5dc649dee680c7eb4935936c8ac3",
"rev": "8dfe5879dd009ff4742b668d9c699bc4b9761742",
"type": "github"
},
"original": {
@ -511,7 +496,6 @@
},
"root": {
"inputs": {
"alacritty-theme": "alacritty-theme",
"deploy-rs": "deploy-rs",
"disko": "disko",
"home-manager": "home-manager",
@ -526,7 +510,7 @@
"nixvim": "nixvim",
"sheet-organizer": "sheet-organizer",
"sops-nix": "sops-nix",
"systems": "systems_5",
"systems": "systems_6",
"yazi-flavors": "yazi-flavors"
}
},
@ -539,11 +523,11 @@
]
},
"locked": {
"lastModified": 1737048258,
"narHash": "sha256-QcprTngXkN/XuaiSKrswJUHEV+Nz3dSzP6zcLq00Y48=",
"lastModified": 1742577105,
"narHash": "sha256-1VFPRxydmDhq+CQogLeafh2zmNGKTMFYiV4y9NZXApo=",
"ref": "refs/heads/master",
"rev": "67d5dac0d1a1c0ae0beaf972881976a8b0908fd1",
"revCount": 73,
"rev": "94de09f4298233795996e17163ae6b987cdedbe9",
"revCount": 75,
"type": "git",
"url": "https://gitlab.julian-mutter.de/julian/sheet-organizer"
},
@ -559,11 +543,11 @@
]
},
"locked": {
"lastModified": 1741644481,
"narHash": "sha256-E0RrMykMtEv15V3QhpsFutgoSKhL1JBhidn+iZajOyg=",
"lastModified": 1750119275,
"narHash": "sha256-Rr7Pooz9zQbhdVxux16h7URa6mA80Pb/G07T4lHvh0M=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "e653d71e82575a43fe9d228def8eddb73887b866",
"rev": "77c423a03b9b2b79709ea2cb63336312e78b72e2",
"type": "github"
},
"original": {
@ -633,6 +617,21 @@
}
},
"systems_5": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_6": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
@ -652,11 +651,11 @@
"systems": "systems"
},
"locked": {
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
@ -668,11 +667,11 @@
"yazi-flavors": {
"flake": false,
"locked": {
"lastModified": 1741392393,
"narHash": "sha256-iTMch0T933Tvofvo3ZzFwk+PNs+dsK0SrAIlJ03v73E=",
"lastModified": 1748603166,
"narHash": "sha256-m3yk6OcJ9vbCwtxkMRVUDhMMTOwaBFlqWDxGqX2Kyvc=",
"owner": "yazi-rs",
"repo": "flavors",
"rev": "b929df6bdb56536e14c1fc24c9659f441b961f28",
"rev": "d04a298a8d4ada755816cb1a8cfb74dd46ef7124",
"type": "github"
},
"original": {

225
flake.nix
View File

@ -28,10 +28,6 @@
};
# Various flakes
alacritty-theme = {
url = "github:alacritty/alacritty-theme";
flake = false;
};
yazi-flavors = {
url = "github:yazi-rs/flavors";
flake = false;
@ -56,20 +52,18 @@
};
};
outputs =
{
self,
nixpkgs,
home-manager,
systems,
...
}@inputs:
let
inherit (self) outputs;
lib = nixpkgs.lib // home-manager.lib;
forEachSystem = f: lib.genAttrs (import systems) (system: f pkgsFor.${system});
pkgsFor = lib.genAttrs (import systems) (
system:
outputs = {
self,
nixpkgs,
home-manager,
systems,
...
} @ inputs: let
inherit (self) outputs;
lib = nixpkgs.lib // home-manager.lib;
forEachSystem = f: lib.genAttrs (import systems) (system: f pkgsFor.${system});
pkgsFor = lib.genAttrs (import systems) (
system:
import nixpkgs {
inherit system;
config.allowUnfree = true;
@ -78,111 +72,116 @@
];
warn-dirty = false;
}
);
in
{
inherit lib;
);
in {
inherit lib;
nixosModules = import ./modules/nixos;
homeManagerModules = import ./modules/home-manager;
nixosModules = import ./modules/nixos;
homeManagerModules = import ./modules/home-manager;
overlays = import ./overlays { inherit inputs outputs; };
# hydraJobs = import ./hydra.nix { inherit inputs outputs; }; # TODO add hydra jobs here?
overlays = import ./overlays {inherit inputs outputs;};
# hydraJobs = import ./hydra.nix { inherit inputs outputs; }; # TODO add hydra jobs here?
packages = forEachSystem (pkgs: import ./pkgs { inherit pkgs; });
devShells = forEachSystem (pkgs: import ./shell.nix { inherit pkgs; });
formatter = forEachSystem (pkgs: pkgs.alejandra);
packages = forEachSystem (pkgs: import ./pkgs {inherit pkgs;});
devShells = forEachSystem (pkgs: import ./shell.nix {inherit pkgs;});
formatter = forEachSystem (pkgs: pkgs.alejandra);
nixosConfigurations = {
# Main laptop
aspi = lib.nixosSystem {
modules = [ ./hosts/aspi ];
specialArgs = {
inherit inputs outputs;
};
};
# Piano raspberry pi
pianonix = lib.nixosSystem {
modules = [ ./hosts/pianonix ];
specialArgs = {
inherit inputs outputs;
};
};
kardorf = lib.nixosSystem {
modules = [ ./hosts/pianonix ];
specialArgs = {
inherit inputs outputs;
};
nixosConfigurations = {
# Main laptop
aspi = lib.nixosSystem {
modules = [./hosts/aspi];
specialArgs = {
inherit inputs outputs;
};
};
# Standalone HM
homeConfigurations = {
# Main laptop
"julian@aspi" = lib.homeManagerConfiguration {
modules = [
./homes/julian/aspi.nix
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
# Media server (RPi)
"julian@pianonix" = lib.homeManagerConfiguration {
modules = [
./homes/julian/pianonix.nix
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.aarch64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"julian@kardorf" = lib.homeManagerConfiguration {
modules = [
./homes/julian/kardorf.nix
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.aarch64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"julian@v3ms" = lib.homeManagerConfiguration {
modules = [
./homes/julian/v3ms
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.aarch64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
# Piano raspberry pi
pianonix = lib.nixosSystem {
modules = [./hosts/pianonix];
specialArgs = {
inherit inputs outputs;
};
};
# deploy-rs node configuration
deploy.nodes = {
pianonix = {
hostname = "pianonix.local";
profiles.system = {
sshUser = "root";
user = "root";
path = inputs.deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.pianonix;
confirmTimeout = 90; # default: 30s; raspberrypi takes a little longer restarting services
};
kardorf = lib.nixosSystem {
modules = [./hosts/kardorf];
specialArgs = {
inherit inputs outputs;
};
builder = {
hostname = "builder.julian-mutter.de";
profiles.system = {
sshUser = "root";
user = "root";
path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.builder;
remoteBuild = true;
};
};
builder = lib.nixosSystem {
modules = [./hosts/builder];
specialArgs = {
inherit inputs outputs;
};
};
};
# Standalone HM
homeConfigurations = {
# Main laptop
"julian@aspi" = lib.homeManagerConfiguration {
modules = [
./homes/julian/aspi.nix
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
# Media server (RPi)
"julian@pianonix" = lib.homeManagerConfiguration {
modules = [
./homes/julian/pianonix.nix
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.aarch64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"julian@kardorf" = lib.homeManagerConfiguration {
modules = [
./homes/julian/kardorf.nix
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"julian@v3ms" = lib.homeManagerConfiguration {
modules = [
./homes/julian/v3ms
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
};
# deploy-rs node configuration
deploy.nodes = {
pianonix = {
hostname = "pianonix.local";
profiles.system = {
sshUser = "root";
user = "root";
path = inputs.deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.pianonix;
confirmTimeout = 90; # default: 30s; raspberrypi takes a little longer restarting services
};
};
builder = {
hostname = "builder.julian-mutter.de";
profiles.system = {
sshUser = "root";
user = "root";
path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.builder;
remoteBuild = true;
};
};
};
};
}

View File

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

View File

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

View File

@ -1,17 +1,12 @@
{
lib,
pkgs,
inputs,
config,
...
}:
{
home.packages = with pkgs; [ alacritty ];
home.file = {
".config/alacritty/theme".source = "${inputs.alacritty-theme}";
".config/alacritty/alacritty.toml".source = ./alacritty.toml;
}: {
programs.alacritty = {
enable = true;
settings = {};
theme = "smoooooth";
};
home.sessionVariables.TERMINAL = lib.mkIf (config.terminal == "alacritty") "alacritty";

Binary file not shown.

Before

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 823 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 759 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1024 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 499 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 607 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 719 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 464 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 831 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 354 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 861 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 267 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 239 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 299 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 261 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 269 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 216 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 342 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 412 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 595 KiB

View File

@ -4,24 +4,19 @@
config,
...
}:
with lib;
let
with lib; let
doomRepoUrl = "https://github.com/doomemacs/doomemacs";
configRepoUrl = "https://gitlab.julian-mutter.de/julian/emacs-config";
in
{
home.sessionPath = [ "/home/julian/.config/emacs/bin" ];
in {
home.sessionPath = ["/home/julian/.config/emacs/bin"];
home.packages =
with pkgs;
home.packages = with pkgs;
[
binutils # native-comp needs 'as', provided by this
## Doom dependencies
git
(ripgrep.override { withPCRE2 = true; })
(ripgrep.override {withPCRE2 = true;})
## Optional dependencies
fd # faster projectile indexing
@ -30,12 +25,13 @@ in
## Module dependencies
(aspellWithDicts (
ds: with ds; [
en
en-computers
en-science
de
]
ds:
with ds; [
en
en-computers
en-science
de
]
))
hunspell
@ -46,6 +42,8 @@ in
# Code formatters for use with doom emacs
nixfmt-rfc-style # nix
alejandra # nix
nixd # nix lsp
dockfmt # docker
google-java-format # java
@ -64,7 +62,7 @@ in
]
++ lib.optional config.is-nixos emacs;
home.activation.installDoomEmacs = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
home.activation.installDoomEmacs = lib.hm.dag.entryAfter ["writeBoundary"] ''
if [ ! -d "/home/julian/.config/emacs" ]; then
$DRY_RUN_CMD ${pkgs.git}/bin/git clone --depth=1 --single-branch "${doomRepoUrl}" "/home/julian/.config/emacs"
fi

View File

@ -3,10 +3,7 @@
pkgs,
...
}:
with lib;
{
with lib; {
home.file = {
".config/starship.toml".source = ./starship.toml;
".config/fish/conf.d/last-working-dir.fish".source = ./last-working-dir.fish;

View File

@ -4,10 +4,7 @@
config,
...
}:
with lib;
{
with lib; {
fonts.fontconfig.enable = true; # required to autoload fonts from packages
home.packages = with pkgs; [
nerd-fonts.fira-code

View File

@ -9,6 +9,5 @@
settings = {
general.adjustment-method = "wayland";
};
};
}

View File

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

View File

@ -3,13 +3,11 @@
pkgs,
inputs,
...
}:
let
inherit (inputs.nix-colors.lib-contrib { inherit pkgs; }) gtkThemeFromScheme;
in
{
}: let
inherit (inputs.nix-colors.lib-contrib {inherit pkgs;}) gtkThemeFromScheme;
in {
# Do not make conditional, just toggle things on and off
imports = [ inputs.nix-colors.homeManagerModules.default ]; # TODO: what does this do
imports = [inputs.nix-colors.homeManagerModules.default]; # TODO: what does this do
# home.sessionVariables.GTK_THEME = "Catppuccin-Mocha-Compact-Blue-dark";
gtk = {
@ -26,9 +24,10 @@ in
};
cursorTheme = {
package = pkgs.apple-cursor;
name = "macOS-BigSur";
name = "macOS";
size = 24;
};
};
xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-gtk];
}

View File

@ -4,14 +4,12 @@
config,
lib,
...
}:
let
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
}: let
inherit
(inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
palette
;
in
{
in {
imports = [
# inputs.hyprland.homeManagerModules.default
./waybar
@ -30,7 +28,7 @@ in
];
xdg.portal = {
extraPortals = [ pkgs.xdg-desktop-portal-wlr ];
extraPortals = [pkgs.xdg-desktop-portal-wlr];
config.hyprland = {
default = [
"wlr"
@ -42,15 +40,29 @@ in
programs.imv.enable = true; # TODO: what is that
home.packages = with pkgs; [
# hyprpicker # TODO
# hyprcursor # TODO
hyprpicker
brightnessctl
# grimblast
frajul.hyprshot-gui
frajul.wl-ocr
wf-recorder
wl-clipboard
(pkgs.writeShellScriptBin "toggle-screen-mirroring" (
builtins.readFile ./toggle-screen-mirroring.sh
))
(pkgs.writeShellScriptBin "correct-workspace-locations" (
lib.concatStringsSep "\n" (
builtins.concatLists (
map (
monitor:
map (ws: "hyprctl dispatch moveworkspacetomonitor ${ws} ${monitor.name}") monitor.workspaces
)
config.monitors
)
)
))
];
services.cliphist = {
@ -143,11 +155,14 @@ in
settings = {
"$mod" = "SUPER";
# Environment variables programs like emacs have access to
env = "TERMINAL,${config.terminal}";
# Monitors
monitor = ",preferred,auto,auto";
monitor = ",preferred,auto,1";
# Autostart
exec-once = [ "firefox" ];
exec-once = ["firefox"];
# Look and Feel
general = {
@ -198,6 +213,7 @@ in
exec = [
"hyprctl setcursor ${config.gtk.cursorTheme.name} ${toString config.gtk.cursorTheme.size}"
"correct-workspace-locations"
];
misc = {
@ -233,23 +249,17 @@ in
];
# Workspace rules
workspace = [
"1, monitor:HDMI-A-1"
"2, monitor:HDMI-A-1"
"3, monitor:HDMI-A-1"
"4, monitor:HDMI-A-1"
"5, monitor:HDMI-A-1"
"6, monitor:eDP-1"
"7, monitor:eDP-1"
"8, monitor:eDP-1"
"9, monitor:eDP-1"
"10, monitor:eDP-1"
# smart gaps (none when only one window in workspace)
"w[t1], gapsin:0, gapsout:0, border:1"
"w[tg1], gapsin:0, gapsout:0, border:1"
"f[1], gapsin:0, gapsout:0, border:1"
];
workspace =
[
# smart gaps (none when only one window in workspace)
"w[t1], gapsin:0, gapsout:0, border:1"
"w[tg1], gapsin:0, gapsout:0, border:1"
"f[1], gapsin:0, gapsout:0, border:1"
]
# 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
bindm = [
@ -271,7 +281,7 @@ in
# opening applications
"$mod, D, exec, wofi --show drun,run"
"$mod, E, exec, pcmanfm"
"$mod, Return, exec, kitty"
"$mod, Return, exec, ${config.terminal}"
"$mod, B, exec, firefox"
"$mod, C, exec, qalculate-gtk"
@ -279,7 +289,9 @@ in
"$mod SHIFT, E, exec, wlogout -p layer-shell"
"$mod, Escape, exec, wlogout -p layer-shell"
"$mod SHIFT, R, exec, hyprctl reload"
"$mod, Print, exec, hyprshot-gui"
", Print, exec, hyprshot-gui"
"$mod, P, exec, toggle-screen-mirroring; correct-workspace-locations"
# "$mod SHIFT, E, exec, pkill Hyprland"
# "$mod, G, togglegroup,"
@ -356,26 +368,26 @@ in
"$mod CTRL, 0, movetoworkspacesilent, 10"
]
++
# Screen lock
(
let
swaylock = lib.getExe config.programs.swaylock.package;
in
# Screen lock
(
let
swaylock = lib.getExe config.programs.swaylock.package;
in
lib.optionals config.programs.swaylock.enable [
"$mod,TAB,exec,${swaylock} --daemonize"
]
)
)
++
# Notification manager
(
let
makoctl = lib.getExe' config.services.mako.package "makoctl";
in
# Notification manager
(
let
makoctl = lib.getExe' config.services.mako.package "makoctl";
in
lib.optionals config.services.mako.enable [
"$mod,w,exec,${makoctl} dismiss"
"$mod SHIFT,W,exec,${makoctl} restore"
]
);
);
# plugin = {
# hyprbars = {

View File

@ -4,8 +4,7 @@
lib,
outputs,
...
}:
let
}: let
getHostname = x: lib.last (lib.splitString "@" x);
# remoteColorschemes = lib.mapAttrs' (n: v: {
# name = getHostname n;
@ -19,18 +18,17 @@ let
# Make sure it's using the same hyprland package as we are
hyprland = config.wayland.windowManager.hyprland.package;
}).overrideAttrs
(old: {
# Yeet the initialization notification (I hate it)
postPatch =
(old.postPatch or "")
+ ''
${lib.getExe pkgs.gnused} -i '/Initialized successfully/d' main.cpp
'';
});
in
{
(old: {
# Yeet the initialization notification (I hate it)
postPatch =
(old.postPatch or "")
+ ''
${lib.getExe pkgs.gnused} -i '/Initialized successfully/d' main.cpp
'';
});
in {
wayland.windowManager.hyprland = {
plugins = [ hyprbars ];
plugins = [hyprbars];
settings = {
"plugin:hyprbars" = {
bar_height = 25;
@ -40,25 +38,23 @@ in
# bar_text_size = config.fontProfiles.regular.size;
bar_part_of_window = true;
bar_precedence_over_border = true;
hyprbars-button =
let
closeAction = "hyprctl dispatch killactive";
hyprbars-button = let
closeAction = "hyprctl dispatch killactive";
isOnSpecial = ''hyprctl activewindow -j | jq -re 'select(.workspace.name == "special")' >/dev/null'';
moveToSpecial = "hyprctl dispatch movetoworkspacesilent special";
moveToActive = "hyprctl dispatch movetoworkspacesilent name:$(hyprctl -j activeworkspace | jq -re '.name')";
minimizeAction = "${isOnSpecial} && ${moveToActive} || ${moveToSpecial}";
isOnSpecial = ''hyprctl activewindow -j | jq -re 'select(.workspace.name == "special")' >/dev/null'';
moveToSpecial = "hyprctl dispatch movetoworkspacesilent special";
moveToActive = "hyprctl dispatch movetoworkspacesilent name:$(hyprctl -j activeworkspace | jq -re '.name')";
minimizeAction = "${isOnSpecial} && ${moveToActive} || ${moveToSpecial}";
maximizeAction = "hyprctl dispatch fullscreen 1";
in
[
# Red close button
# "${rgb config.colorscheme.colors.red},12,,${closeAction}"
# # Yellow "minimize" (send to special workspace) button
# "${rgb config.colorscheme.colors.yellow},12,,${minimizeAction}"
# # Green "maximize" (fullscreen) button
# "${rgb config.colorscheme.colors.green},12,,${maximizeAction}"
];
maximizeAction = "hyprctl dispatch fullscreen 1";
in [
# Red close button
# "${rgb config.colorscheme.colors.red},12,,${closeAction}"
# # Yellow "minimize" (send to special workspace) button
# "${rgb config.colorscheme.colors.yellow},12,,${minimizeAction}"
# # Green "maximize" (fullscreen) button
# "${rgb config.colorscheme.colors.green},12,,${maximizeAction}"
];
};
# windowrulev2 =

View File

@ -5,13 +5,12 @@
pkgs,
inputs,
...
}:
let
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
}: let
inherit
(inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
palette
;
in
{
in {
programs.hyprlock.enable = true;
programs.hyprlock.settings = {
general = {

View File

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

View File

@ -3,8 +3,7 @@
lib,
config,
...
}:
let
}: let
swaylock = "${config.programs.swaylock.package}/bin/swaylock";
pgrep = "${pkgs.procps}/bin/pgrep";
pactl = "${pkgs.pulseaudio}/bin/pactl";
@ -15,24 +14,21 @@ let
lockTime = 4 * 60; # TODO: configurable desktop (10 min)/laptop (4 min)
# Makes two timeouts: one for when the screen is not locked (lockTime+timeout) and one for when it is.
afterLockTimeout =
afterLockTimeout = {
timeout,
command,
resumeCommand ? null,
}: [
{
timeout,
command,
resumeCommand ? null,
}:
[
{
timeout = lockTime + timeout;
inherit command resumeCommand;
}
{
command = "${isLocked} && ${command}";
inherit resumeCommand timeout;
}
];
in
{
timeout = lockTime + timeout;
inherit command resumeCommand;
}
{
command = "${isLocked} && ${command}";
inherit resumeCommand timeout;
}
];
in {
services.swayidle = {
enable = true;
systemdTarget = "graphical-session.target";
@ -45,18 +41,18 @@ in
}
]
++
# Turn off displays (hyprland)
(lib.optionals config.wayland.windowManager.hyprland.enable (afterLockTimeout {
timeout = 300;
command = "${hyprctl} dispatch dpms off";
resumeCommand = "${hyprctl} dispatch dpms on";
}))
# Turn off displays (hyprland)
(lib.optionals config.wayland.windowManager.hyprland.enable (afterLockTimeout {
timeout = 300;
command = "${hyprctl} dispatch dpms off";
resumeCommand = "${hyprctl} dispatch dpms on";
}))
++
# Turn off displays (sway)
(lib.optionals config.wayland.windowManager.sway.enable (afterLockTimeout {
timeout = 300;
command = "${swaymsg} 'output * dpms off'";
resumeCommand = "${swaymsg} 'output * dpms on'";
}));
# Turn off displays (sway)
(lib.optionals config.wayland.windowManager.sway.enable (afterLockTimeout {
timeout = 300;
command = "${swaymsg} 'output * dpms off'";
resumeCommand = "${swaymsg} 'output * dpms on'";
}));
};
}

View File

@ -2,11 +2,9 @@
config,
pkgs,
...
}:
let
}: let
inherit (config.colorscheme) colors;
in
{
in {
programs.swaylock = {
enable = true;
settings = {

View File

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

View File

@ -5,11 +5,9 @@
lib,
inputs,
...
}:
let
}: let
palette = (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name}).palette;
in
{
in {
programs.waybar = {
enable = true;
systemd.enable = true;

View File

@ -3,9 +3,8 @@
lib,
config,
...
}:
{
home.packages = [ pkgs.waypipe ];
}: {
home.packages = [pkgs.waypipe];
systemd.user.services = {
waypipe-client = {
Unit.Description = "Runs waypipe on startup to support SSH forwarding";
@ -14,7 +13,7 @@
ExecStart = "${lib.getExe (config.lib.nixGL.wrap pkgs.waypipe)} --socket %h/.waypipe/client.sock client";
ExecStopPost = "${lib.getExe' pkgs.coreutils "rm"} -f %h/.waypipe/client.sock";
};
Install.WantedBy = [ "graphical-session.target" ];
Install.WantedBy = ["graphical-session.target"];
};
waypipe-server = {
Unit.Description = "Runs waypipe on startup to support SSH forwarding";
@ -24,7 +23,7 @@
ExecStart = "${lib.getExe (config.lib.nixGL.wrap pkgs.waypipe)} --socket %h/.waypipe/server.sock --title-prefix '[%H] ' --login-shell --display wayland-waypipe server -- ${lib.getExe' pkgs.coreutils "sleep"} infinity";
ExecStopPost = "${lib.getExe' pkgs.coreutils "rm"} -f %h/.waypipe/server.sock %t/wayland-waypipe";
};
Install.WantedBy = [ "default.target" ];
Install.WantedBy = ["default.target"];
};
};
}

View File

@ -5,14 +5,13 @@
pkgs,
inputs,
...
}:
let
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
}: let
inherit
(inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
palette
;
in
{
home.packages = with pkgs; [ wlogout ];
in {
home.packages = with pkgs; [wlogout];
# xdg.configFile."wlogout/style.css".text = ''
# * {

View File

@ -5,14 +5,13 @@
pkgs,
inputs,
...
}:
let
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
}: let
inherit
(inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
palette
;
in
{
home.packages = with pkgs; [ wofi ];
in {
home.packages = with pkgs; [wofi];
xdg.configFile."wofi/config".source = ./config;
xdg.configFile."wofi/style.css".text = ''

View File

@ -1,8 +1,6 @@
{ config, ... }:
let
{config, ...}: let
inherit (config.colorscheme) colors;
in
{
in {
programs.zathura = {
enable = true;
options = {

View File

@ -3,9 +3,8 @@
pkgs,
config,
...
}:
{
imports = [ ../rofi ];
}: {
imports = [../rofi];
services.dunst.enable = true;
@ -32,11 +31,13 @@
package = pkgs.i3-gaps;
};
xsession.importedVariables = [ ];
xsession.importedVariables = [];
# Overwrite default home-manager config file
xdg.configFile."i3/config".source = lib.mkForce (
if config.hostName == "kardorf" then ./i3/config-kardorf else ./i3/config
if config.hostName == "kardorf"
then ./i3/config-kardorf
else ./i3/config
);
home.file = {
@ -48,5 +49,5 @@
".config/i3status-rust/config.toml".source = ./i3status-rust/config.toml;
};
home.sessionPath = [ "/home/julian/.config/i3/scripts" ];
home.sessionPath = ["/home/julian/.config/i3/scripts"];
}

View File

@ -142,8 +142,8 @@ bindsym $mod+Shift+9 move container to workspace number $ws9; workspace $ws9
bindsym $mod+Shift+0 move container to workspace number $ws10; workspace $ws10
# Monitor config
set $monitor_left "DVI-D-0"
set $monitor_right "DVI-D-1"
set $monitor_left "DVI-D-1"
set $monitor_right "DVI-D-2"
workspace $ws1 output $monitor_left
workspace $ws2 output $monitor_left

View File

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

View File

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

View File

@ -3,9 +3,7 @@
pkgs,
config,
...
}:
{
}: {
programs.kitty = {
enable = true;
shellIntegration.enableFishIntegration = true;

View File

@ -3,11 +3,8 @@
pkgs,
inputs,
...
}:
{
imports = [ inputs.nixvim.homeManagerModules.nixvim ];
}: {
imports = [inputs.nixvim.homeManagerModules.nixvim];
home.sessionVariables = {
EDITOR = "nvim";
@ -39,7 +36,6 @@
opts = {
number = false;
relativenumber = false;
};
clipboard.register = "unnamedplus"; # Use system clipboard
@ -93,9 +89,9 @@
conform-nvim = {
enable = true;
settings.formatters_by_ft = with pkgs; {
lua = [ "stylua" ];
python = [ "black" ];
nix = [ "nixfmt" ];
lua = ["stylua"];
python = ["black"];
nix = ["nixfmt"];
};
# extraOptions = {
# default_format_opts.lsp_format = "fallback";
@ -107,9 +103,9 @@
enable = true;
autoEnableSources = true;
settings.sources = [
{ name = "nvim_lsp"; }
{ name = "path"; }
{ name = "buffer"; }
{name = "nvim_lsp";}
{name = "path";}
{name = "buffer";}
];
settings.mapping = {
"<Tab>" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})";
@ -155,10 +151,9 @@
pyright.enable = true;
dockerls.enable = true;
lua_ls.enable = true;
clangd.enable = true;
};
};
};
};
}

View File

@ -1,12 +1,6 @@
{
lib,
pkgs,
...
}:
{
{pkgs, ...}: {
home.sessionVariables = {
FLAKE = "/home/julian/.dotfiles";
NH_FLAKE = "/home/julian/.dotfiles";
};
home.shellAliases = {
@ -14,5 +8,5 @@
"hs" = "nh home switch";
};
home.packages = with pkgs; [ nh ];
home.packages = with pkgs; [nh];
}

View File

@ -2,13 +2,11 @@
lib,
pkgs,
...
}:
{
}: {
# this would need you to config rofi using home-manager
# programs.rofi = { enable = true; };
home.packages = with pkgs; [ rofi ];
home.packages = with pkgs; [rofi];
home.file = {
".config/rofi/config.rasi".source = ./config.rasi;

View File

@ -1,9 +1,4 @@
{
pkgs,
...
}:
{
{pkgs, ...}: {
home.packages = with pkgs; [
bat
du-dust # Like du tree but better

View File

@ -1,10 +1,6 @@
{
lib,
pkgs,
...
}:
{pkgs, ...}: {
imports = [../../gtk];
{
services.blueman-applet.enable = true;
services.nextcloud-client.enable = true;
services.nextcloud-client.startInBackground = true;
@ -17,7 +13,7 @@
enable = true;
extensions = [
# Tampermonkey
{ id = "dhdgffkkebhmkfjojejmpbldmpobfkfo"; }
{id = "dhdgffkkebhmkfjojejmpbldmpobfkfo";}
];
};
@ -38,7 +34,7 @@
# geogebra
cheese
handbrake
kitty # Terminal
# kitty # Terminal, already available as feature
libnotify
libreoffice
mate.engrampa

View File

@ -1,10 +1,4 @@
{
pkgs,
...
}:
{
{pkgs, ...}: {
home.packages = with pkgs; [
watchexec # Run command when any file in current dir changes
android-tools # adb
@ -29,11 +23,16 @@
julia-bin
(texlive.combine {
# for rendering latex in inkscape
inherit (texlive)
inherit
(texlive)
scheme-medium
standalone
amsmath
preview
# needed for org mode export
wrapfig
capt-of
biblatex
;
})
matlab # Using nix-matlab overlay defined in flake
@ -63,6 +62,7 @@
## My scripts
frajul.deploy-to-pianopi
frajul.rtklib
(pkgs.writeShellScriptBin "matlab-rsp" ''
matlab -desktop -sd "/home/julian/git/uwa-channel-model" -softwareopengl

View File

@ -7,8 +7,7 @@
misc.assume_yes = true;
misc.no_retry = true;
pre_commands."Update flake" =
"git -C /home/julian/.dotfiles checkout origin/flake-updates -- flake.lock";
# pre_commands."Update flake" = "git -C /home/julian/.dotfiles checkout origin/flake-updates -- flake.lock";
linux.nix_arguments = "--flake /home/julian/.dotfiles";
linux.home_manager_arguments = [

View File

@ -3,9 +3,7 @@
pkgs,
config,
...
}:
{
}: {
programs.wezterm = {
enable = true;
extraConfig = ''

View File

@ -2,8 +2,7 @@
pkgs,
inputs,
...
}:
{
}: {
programs.zoxide.enable = true;
programs.zoxide.enableFishIntegration = true;
@ -27,7 +26,7 @@
programs.yazi.enable = true;
programs.yazi.enableFishIntegration = true;
programs.yazi.settings.manager = {
sort_by = "modified";
sort_by = "mtime";
sort_reverse = true;
show_hidden = true;
};
@ -36,29 +35,29 @@
manager.prepend_keymap = [
# Override defaults
{
on = [ "e" ];
on = ["e"];
run = ''shell --orphan --confirm "pcmanfm &"'';
desc = "Open gui file manager";
}
{
on = [ "<C-o>" ];
on = ["<C-o>"];
run = ''shell "$SHELL" --block --confirm'';
desc = "Open shell here";
}
{
on = [ "<C-n>" ];
on = ["<C-n>"];
run = ''shell 'dragon -x -i -T "$1"' --confirm'';
desc = "Dragndrop via dragon";
}
{
on = [ "<Enter>" ];
on = ["<Enter>"];
run = "plugin --sync smart-enter";
desc = "Enter the child directory, or open the file";
}
];
input.prepend_keymap = [
{
on = [ "<Esc>" ];
on = ["<Esc>"];
run = "close";
desc = "Cancel input";
}

View File

@ -2,13 +2,12 @@
lib,
pkgs,
...
}:
{
}: {
home.file = {
".config/starship.toml".source = ./starship.toml;
};
home.packages = with pkgs; [ starship ];
home.packages = with pkgs; [starship];
programs.starship = {
enable = true;
@ -28,14 +27,14 @@
enable = true;
plugins = [
# list of plugins: https://github.com/unixorn/awesome-zsh-plugins
{ name = "agkozak/zsh-z"; }
{name = "agkozak/zsh-z";}
{
name = "zsh-users/zsh-completions";
}
# make it behave like fish
{ name = "zsh-users/zsh-autosuggestions"; }
{ name = "zsh-users/zsh-history-substring-search"; }
{name = "zsh-users/zsh-autosuggestions";}
{name = "zsh-users/zsh-history-substring-search";}
{
name = "zsh-users/zsh-syntax-highlighting";
} # must be last sourced plugin

View File

@ -1,17 +1,16 @@
{
inputs,
lib,
pkgs,
config,
outputs,
...
}:
{
imports = [
../features/fonts
# ../features/cli
# ../features/helix
] ++ (builtins.attrValues outputs.homeManagerModules);
}: {
imports =
[
../features/fonts
../features/nix-helper
]
++ (builtins.attrValues outputs.homeManagerModules);
nix = {
package = lib.mkDefault pkgs.nix;
@ -39,7 +38,7 @@
homeDirectory = lib.mkDefault "/home/${config.home.username}";
stateVersion = lib.mkDefault "23.11";
sessionPath = [ "$HOME/.local/bin" ];
sessionPath = ["$HOME/.local/bin"];
};
# TODO: colorscheme
@ -51,5 +50,4 @@
# home.file = {
# ".colorscheme.json".text = builtins.toJSON config.colorscheme;
# };
}

View File

@ -6,9 +6,11 @@
# inherit pkgs;
# inherit lib;
# };
{ lib, pkgs, ... }:
let
{
lib,
pkgs,
...
}: let
package-names = with pkgs; {
"x-scheme-handler/tg" = telegram-desktop;
"x-scheme-handler/mailto" = thunderbird;
@ -40,6 +42,7 @@ let
"inode/directory" = pcmanfm;
};
in
lib.mapAttrs (mimeType: package: [
"${package}/share/applications/${package.pname}.desktop"
]) package-names
lib.mapAttrs (mimeType: package: [
"${package}/share/applications/${package.pname}.desktop"
])
package-names

View File

@ -1,9 +1,5 @@
# Only apply this to home-manager standalone
{
outputs,
...
}:
{
{outputs, ...}: {
# Apply overlays
nixpkgs = {
overlays = builtins.attrValues outputs.overlays;
@ -43,6 +39,5 @@
];
# nix.settings. # warn-dirty = false; # TODO: do I want this
};
}

View File

@ -6,22 +6,51 @@
./features/direnv
./features/topgrade
./features/neovim
./features/kitty
./features/ghostty
./features/wezterm
./features/yazi
./features/emacs
# ./features/hyprland
./features/i3
./features/nix-helper
./features/desktop
./features/suites/cli
./features/suites/desktop
./features/suites/development
];
hostName = "kardorf";
is-nixos = true;
terminal = "kitty";
terminal = "ghostty";
# --------- ---------
# | DVI-D-1 | | DVI-D-2 |
# --------- ---------
monitors = [
{
name = "DVI-D-1";
width = 1680;
height = 1050;
workspaces = [
"1"
"2"
"3"
"4"
"5"
];
primary = true;
}
{
name = "DVI-D-2";
width = 1680;
height = 1050;
workspaces = [
"6"
"7"
"8"
"9"
"10"
];
}
];
}

View File

@ -1,8 +1,4 @@
{
pkgs,
...
}:
{
{pkgs, ...}: {
imports = [
./global
@ -11,8 +7,7 @@
./features/neovim
./features/wezterm
./features/yazi
./features/nix-helper
./features/desktop
./features/gtk
];
hostName = "pianonix";
@ -34,8 +29,7 @@
# Autostart link
home.file = {
".config/autostart/sheet-organizer.desktop".source =
"${pkgs.sheet-organizer}/share/applications/sheet-organizer.desktop";
".config/autostart/sheet-organizer.desktop".source = "${pkgs.sheet-organizer}/share/applications/sheet-organizer.desktop";
".config/sheet-organizer/config.toml".text = ''
working_directory = "/home/julian/Klavier"
'';

View File

@ -2,8 +2,7 @@
lib,
pkgs,
...
}:
{
}: {
imports = [
../global
@ -20,10 +19,12 @@
is-nixos = false;
# terminal = "kitty";
home.sessionPath = ["/snap/bin"];
home.packages =
lib.lists.concatMap (packages-list-file: import packages-list-file { inherit pkgs; })
[
./fonts.nix
./packages.nix
];
lib.lists.concatMap (packages-list-file: import packages-list-file {inherit pkgs;})
[
./fonts.nix
./packages.nix
];
}

View File

@ -1,7 +1,5 @@
{ pkgs, ... }:
with pkgs;
[
{pkgs, ...}:
with pkgs; [
nerd-fonts.fira-code
font-awesome
dejavu_fonts

View File

@ -1,7 +1,5 @@
{ pkgs, ... }:
with pkgs;
[
{pkgs, ...}:
with pkgs; [
# Rust setup
rustc
rustfmt

View File

@ -4,6 +4,7 @@
../common/global
../common/users/julian
../common/optional/binarycaches.nix
../common/optional/remote-builder.nix
../common/optional/boot-efi.nix
@ -46,5 +47,4 @@
# Enable touchpad support
services.libinput.enable = true;
}

View File

@ -2,9 +2,7 @@
config,
lib,
...
}:
{
}: {
boot.initrd.availableKernelModules = [
"vmd"
"xhci_pci"
@ -14,11 +12,11 @@
"usbhid"
"sd_mod"
];
boot.initrd.kernelModules = [ "dm-snapshot" ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
boot.blacklistedKernelModules = [ "pcspkr" ]; # Disables "beep"
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
boot.initrd.kernelModules = ["dm-snapshot"];
boot.kernelModules = ["kvm-intel"];
boot.extraModulePackages = [];
boot.blacklistedKernelModules = ["pcspkr"]; # Disables "beep"
boot.binfmt.emulatedSystems = ["aarch64-linux"];
boot.initrd.luks.devices = {
root = {
@ -62,7 +60,7 @@
};
swapDevices = [
{ device = "/dev/disk/by-uuid/26140b4a-0579-406d-a484-35aa31b32e80"; }
{device = "/dev/disk/by-uuid/26140b4a-0579-406d-a484-35aa31b32e80";}
];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking

View File

@ -1,45 +1,15 @@
# sudo nixos-rebuild switch --flake .#builder --target-host root@192.168.3.118
# or
# deploy .#builder
{ config, pkgs, ... }:
{
{config, ...}: {
imports = [
./hardware-configuration.nix
../common/global
];
# hardware.graphics = {
# enable = true;
# extraPackages = with pkgs; [
# rocmPackages.clr.icd
# linuxPackages.amdgpu-pro
# ];
# };
# boot.kernelParams = [
# "radeon.si_support=0"
# "radeon.cik_support=1"
# "amdgpu.si_support=0"
# "amdgpu.cik_support=1"
# ];
# boot.extraModulePackages = with config.boot.kernelPackages; [ amdgpu-pro ];
# boot.blacklistedKernelModules = [ "radeon" ];
boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/sda";
# Emulated systems used as alternative to cross-compiling
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
networking.hostName = "builder";
modules = {
keymap.enable = true;
locales.enable = true;
sops.enable = true;
};
system.stateVersion = "23.11";
users.users.nix = {
isNormalUser = true;
@ -60,17 +30,21 @@
substituters = [
"https://nix-community.cachix.org"
"https://cache.nixos.org/"
"https://hyprland.cachix.org"
];
trusted-public-keys = [
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
];
trusted-public-keys = [ "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" ];
trusted-users = [ "nix" ];
trusted-users = ["nix"];
max-jobs = "auto";
cores = 0;
};
# optimize store by hardlinking store files
nix.optimise.automatic = true;
nix.optimise.dates = [ "03:15" ];
nix.optimise.dates = ["03:15"];
# nix.gc.automatic = true;
# nix.gc.dates = "daily";
@ -85,17 +59,6 @@
max-free = ${toString (100 * 1024 * 1024 * 1024)}
'';
environment.systemPackages = with pkgs; [
vim
htop
mc
# # AMD GPU tools
# pciutils
# nvtopPackages.amd
# linuxPackages.amdgpu-pro
];
nix.nrBuildUsers = 64;
# prevent memory to get filled
@ -209,8 +172,7 @@
};
virtualHosts."binarycache.julian-mutter.de" = {
locations."/".proxyPass =
"http://${config.services.nix-serve.bindAddress}:${toString config.services.nix-serve.port}";
locations."/".proxyPass = "http://${config.services.nix-serve.bindAddress}:${toString config.services.nix-serve.port}";
};
clientMaxBodySize = "2G";
@ -225,7 +187,7 @@
url = "https://gitlab.julian-mutter.de";
name = "builder";
tokenFile = config.sops.secrets."gitea_token".path;
labels = [ ]; # use default labels
labels = []; # use default labels
};
virtualisation.docker.enable = true;
@ -239,7 +201,7 @@
sops.secrets."gitea_token" = {
owner = config.users.users.nix.name;
sopsFile = ../../../secrets/secrets-builder.yaml;
sopsFile = ./secrets.yaml;
};
# =========== Binary Cache ==========
@ -249,7 +211,7 @@
};
# =========== Binary Cache with attic ==========
sops.secrets."attic_token".sopsFile = ../../../secrets/secrets-builder.yaml;
sops.secrets."attic_token".sopsFile = ./secrets.yaml;
services.atticd = {
enable = true;
@ -257,7 +219,7 @@
settings = {
listen = "[::]:8080";
jwt = { };
jwt = {};
# Data chunking
#
@ -283,8 +245,4 @@
};
};
};
# ======================== DO NOT CHANGE THIS ========================
system.stateVersion = "23.11";
# ======================== DO NOT CHANGE THIS ========================
}

View File

@ -1,17 +1,4 @@
# 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 + "/profiles/qemu-guest.nix") ];
{lib, ...}: {
boot.initrd.availableKernelModules = [
"ata_piix"
"uhci_hcd"
@ -21,8 +8,8 @@
"sr_mod"
];
# boot.initrd.kernelModules = [ "amdgpu" ]; # GPU support
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
boot.kernelModules = [];
boot.extraModulePackages = [];
fileSystems."/" = {
device = "/dev/disk/by-uuid/f088fe8e-bf3d-4a89-98bd-ead9852d381f";
@ -37,4 +24,27 @@
# networking.interfaces.ens18.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
# hardware.graphics = {
# enable = true;
# extraPackages = with pkgs; [
# rocmPackages.clr.icd
# linuxPackages.amdgpu-pro
# ];
# };
# boot.kernelParams = [
# "radeon.si_support=0"
# "radeon.cik_support=1"
# "amdgpu.si_support=0"
# "amdgpu.cik_support=1"
# ];
# boot.extraModulePackages = with config.boot.kernelPackages; [ amdgpu-pro ];
# boot.blacklistedKernelModules = [ "radeon" ];
boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/sda";
# Emulated systems used as alternative to cross-compiling
boot.binfmt.emulatedSystems = ["aarch64-linux"];
}

View File

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

View File

@ -1,11 +1,9 @@
# Common config for all hosts
{
inputs,
outputs,
...
}:
{
}: {
imports =
[
./fish.nix # fish for admin
@ -34,5 +32,4 @@
home-manager.extraSpecialArgs = {
inherit inputs outputs;
};
}

View File

@ -2,14 +2,13 @@
lib,
outputs,
...
}:
{
}: {
# Apply overlays
nixpkgs = {
# TODO: apply this to hm and nixos without duplicate code
overlays = builtins.attrValues outputs.overlays;
config = {
nvidia.acceptLicense = true;
allowUnfree = true;
allowUnfreePredicate = _: true; # TODO: what is this
warn-dirty = false;
@ -27,26 +26,6 @@
];
# 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 = {
automatic = true;
dates = "weekly";
@ -61,5 +40,4 @@
# Add each flake input as a registry and nix_path
# registry = lib.mapAttrs (_: flake: { inherit flake; }) flakeInputs;
# nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs;
}

View File

@ -1,6 +1,4 @@
{ pkgs, ... }:
{
{pkgs, ...}: {
# Packages needed as root
environment.systemPackages = with pkgs; [
vim

View File

@ -2,14 +2,12 @@
inputs,
config,
...
}:
let
}: let
isEd25519 = k: k.type == "ed25519";
getKeyPath = k: k.path;
keys = builtins.filter isEd25519 config.services.openssh.hostKeys;
in
{
imports = [ inputs.sops-nix.nixosModules.sops ];
in {
imports = [inputs.sops-nix.nixosModules.sops];
sops.age = {
sshKeyPaths = map getKeyPath keys;
@ -17,8 +15,7 @@ in
# TODO: remove? only rely on ssh or pgp keys (e.g. ubikey like misterio is using!!!)
keyFile = "/home/julian/.config/sops/age/keys.txt";
# Generate key if none of the above worked. With this, building will still work, just without secrets
generateKey = true;
generateKey = false; # TODO: building should not work without secrets!?
};
sops.defaultSopsFile = ../secrets.yaml;

View File

@ -1,17 +1,22 @@
{ pkgs, ... }:
{
pkgs,
lib,
...
}: {
# Make programs like nextcloud client access saved passwords
programs.seahorse.enable = true;
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" ];
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";

View File

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

View File

@ -1,10 +1,6 @@
{
pkgs,
...
}:
{
{pkgs, ...}: {
services.flatpak.enable = true;
xdg.portal.enable = true;
xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-gtk];
xdg.portal.config.common.default = "*"; # Use first portal implementation found
}

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