My nixos configuration

Compare changes

Choose any two refs to compare.

Changed files
+50 -145
home
configurations
modules
profiles
base
development
programs
openshift
services
restic
nixos
configurations
+33 -33
flake.lock
··· 37 ] 38 }, 39 "locked": { 40 - "lastModified": 1744683403, 41 - "narHash": "sha256-ZphiIohrkf7bG5eKzQHhZqrpyiygbqdBrId6UgAHWOY=", 42 "owner": "nix-community", 43 "repo": "emacs-overlay", 44 - "rev": "d601c3de7e1932384a43585408a398ddccf3e1c6", 45 "type": "github" 46 }, 47 "original": { ··· 262 ] 263 }, 264 "locked": { 265 - "lastModified": 1744663884, 266 - "narHash": "sha256-a6QGaZMDM1miK8VWzAITsEPOdmLk+xTPyJSTjVs3WhI=", 267 "owner": "nix-community", 268 "repo": "home-manager", 269 - "rev": "d5cdf55bd9f19a3debd55b6cb5d38f7831426265", 270 "type": "github" 271 }, 272 "original": { ··· 303 "nixpkgs-regression": "nixpkgs-regression" 304 }, 305 "locked": { 306 - "lastModified": 1744638458, 307 - "narHash": "sha256-zcBauFa+aPRdhZb3/dmDKqvmhwPlMwSmNKwEwlaDzmg=", 308 "owner": "nixos", 309 "repo": "nix", 310 - "rev": "b3aa07009d750ca2104e05ff5fe87f78419fef09", 311 "type": "github" 312 }, 313 "original": { ··· 360 }, 361 "nixpkgs": { 362 "locked": { 363 - "lastModified": 1743315132, 364 - "narHash": "sha256-6hl6L/tRnwubHcA4pfUUtk542wn2Om+D4UnDhlDW9BE=", 365 "owner": "NixOS", 366 "repo": "nixpkgs", 367 - "rev": "52faf482a3889b7619003c0daec593a1912fddc1", 368 "type": "github" 369 }, 370 "original": { ··· 456 }, 457 "nixpkgs_2": { 458 "locked": { 459 - "lastModified": 1744463964, 460 - "narHash": "sha256-LWqduOgLHCFxiTNYi3Uj5Lgz0SR+Xhw3kr/3Xd0GPTM=", 461 "owner": "nixos", 462 "repo": "nixpkgs", 463 - "rev": "2631b0b7abcea6e640ce31cd78ea58910d31e650", 464 "type": "github" 465 }, 466 "original": { ··· 472 }, 473 "nixpkgs_3": { 474 "locked": { 475 - "lastModified": 1744502386, 476 - "narHash": "sha256-QAd1L37eU7ktL2WeLLLTmI6P9moz9+a/ONO8qNBYJgM=", 477 "owner": "NixOS", 478 "repo": "nixpkgs", 479 - "rev": "f6db44a8daa59c40ae41ba6e5823ec77fe0d2124", 480 "type": "github" 481 }, 482 "original": { ··· 515 "wrapper-manager": "wrapper-manager" 516 }, 517 "locked": { 518 - "lastModified": 1744665121, 519 - "narHash": "sha256-HruRfx3Ow39bmd7mbFkP24JbOIyK/1N2xMTlS1Z3Qt4=", 520 "owner": "nobbz", 521 "repo": "nobbz-vim", 522 - "rev": "a6b85d5462150c3cb24d7cc8a50cccc5db95a335", 523 "type": "github" 524 }, 525 "original": { ··· 535 ] 536 }, 537 "locked": { 538 - "lastModified": 1743550720, 539 - "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=", 540 "owner": "hercules-ci", 541 "repo": "flake-parts", 542 - "rev": "c621e8422220273271f52058f618c94e405bb0f5", 543 "type": "github" 544 }, 545 "original": { ··· 556 "utils": "utils" 557 }, 558 "locked": { 559 - "lastModified": 1744677475, 560 - "narHash": "sha256-RY0eqKe6rlIlbQcbWTaRJjSGABC31HMkfb52OCXqQ88=", 561 "owner": "wamserma", 562 "repo": "flake-programs-sqlite", 563 - "rev": "d3a03bfdbb16419d33a3f1b6f8a3694285482d15", 564 "type": "github" 565 }, 566 "original": { ··· 611 "nixpkgs": "nixpkgs_3" 612 }, 613 "locked": { 614 - "lastModified": 1744669848, 615 - "narHash": "sha256-pXyanHLUzLNd3MX9vsWG+6Z2hTU8niyphWstYEP3/GU=", 616 "owner": "Mic92", 617 "repo": "sops-nix", 618 - "rev": "61154300d945f0b147b30d24ddcafa159148026a", 619 "type": "github" 620 }, 621 "original": { ··· 703 ] 704 }, 705 "locked": { 706 - "lastModified": 1744357296, 707 - "narHash": "sha256-82ByXqDDdVcDYO3yE6Ntj/pcNtJ3bBDzu7oVDp/OPWg=", 708 "owner": "viperml", 709 "repo": "wrapper-manager", 710 - "rev": "8ebdb81ed03aa26e4c797af9c3e05f467c1f29ca", 711 "type": "github" 712 }, 713 "original": {
··· 37 ] 38 }, 39 "locked": { 40 + "lastModified": 1749090069, 41 + "narHash": "sha256-uN3Mp+o7IfVT9H/OuwEtJ17NktCaF4t9Ond3TKt+BE4=", 42 "owner": "nix-community", 43 "repo": "emacs-overlay", 44 + "rev": "c17506666090e412a50b01c57944386ab81d2aa8", 45 "type": "github" 46 }, 47 "original": { ··· 262 ] 263 }, 264 "locked": { 265 + "lastModified": 1749062139, 266 + "narHash": "sha256-gGGLujmeWU+ZjFzfMvFMI0hp9xONsSbm88187wJr82Q=", 267 "owner": "nix-community", 268 "repo": "home-manager", 269 + "rev": "86b95fc1ed2b9b04a451a08ccf13d78fb421859c", 270 "type": "github" 271 }, 272 "original": { ··· 303 "nixpkgs-regression": "nixpkgs-regression" 304 }, 305 "locked": { 306 + "lastModified": 1749012568, 307 + "narHash": "sha256-7IltFTct/oe6pGkwB6f/1WhWA65hFnsBY6XaGjodf3k=", 308 "owner": "nixos", 309 "repo": "nix", 310 + "rev": "4751cbef6303d10479f3db1b13db69197d9c3446", 311 "type": "github" 312 }, 313 "original": { ··· 360 }, 361 "nixpkgs": { 362 "locked": { 363 + "lastModified": 1747179050, 364 + "narHash": "sha256-qhFMmDkeJX9KJwr5H32f1r7Prs7XbQWtO0h3V0a0rFY=", 365 "owner": "NixOS", 366 "repo": "nixpkgs", 367 + "rev": "adaa24fbf46737f3f1b5497bf64bae750f82942e", 368 "type": "github" 369 }, 370 "original": { ··· 456 }, 457 "nixpkgs_2": { 458 "locked": { 459 + "lastModified": 1748929857, 460 + "narHash": "sha256-lcZQ8RhsmhsK8u7LIFsJhsLh/pzR9yZ8yqpTzyGdj+Q=", 461 "owner": "nixos", 462 "repo": "nixpkgs", 463 + "rev": "c2a03962b8e24e669fb37b7df10e7c79531ff1a4", 464 "type": "github" 465 }, 466 "original": { ··· 472 }, 473 "nixpkgs_3": { 474 "locked": { 475 + "lastModified": 1744868846, 476 + "narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=", 477 "owner": "NixOS", 478 "repo": "nixpkgs", 479 + "rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c", 480 "type": "github" 481 }, 482 "original": { ··· 515 "wrapper-manager": "wrapper-manager" 516 }, 517 "locked": { 518 + "lastModified": 1748686149, 519 + "narHash": "sha256-RdLAPiha8lr1wQiL158p4DTFhLcWcjRv6ioCTd3athQ=", 520 "owner": "nobbz", 521 "repo": "nobbz-vim", 522 + "rev": "a22303075cac32d83edfd79ef79c0386a38b02ce", 523 "type": "github" 524 }, 525 "original": { ··· 535 ] 536 }, 537 "locked": { 538 + "lastModified": 1748821116, 539 + "narHash": "sha256-F82+gS044J1APL0n4hH50GYdPRv/5JWm34oCJYmVKdE=", 540 "owner": "hercules-ci", 541 "repo": "flake-parts", 542 + "rev": "49f0870db23e8c1ca0b5259734a02cd9e1e371a1", 543 "type": "github" 544 }, 545 "original": { ··· 556 "utils": "utils" 557 }, 558 "locked": { 559 + "lastModified": 1749055058, 560 + "narHash": "sha256-OgCTSX0WXPpEi/ukjbBRrElSo+TR2/pzCCcY5yfou58=", 561 "owner": "wamserma", 562 "repo": "flake-programs-sqlite", 563 + "rev": "78d23d728abddce902528922f93967f0630f1cfe", 564 "type": "github" 565 }, 566 "original": { ··· 611 "nixpkgs": "nixpkgs_3" 612 }, 613 "locked": { 614 + "lastModified": 1747603214, 615 + "narHash": "sha256-lAblXm0VwifYCJ/ILPXJwlz0qNY07DDYdLD+9H+Wc8o=", 616 "owner": "Mic92", 617 "repo": "sops-nix", 618 + "rev": "8d215e1c981be3aa37e47aeabd4e61bb069548fd", 619 "type": "github" 620 }, 621 "original": { ··· 703 ] 704 }, 705 "locked": { 706 + "lastModified": 1747562021, 707 + "narHash": "sha256-XfF+5zjoWbAcAiGNb++og6yDGJRwWYpADr9P6WuieQA=", 708 "owner": "viperml", 709 "repo": "wrapper-manager", 710 + "rev": "f2b0bec5140403cf24cae96f6764d97b5d59b0e2", 711 "type": "github" 712 }, 713 "original": {
+1 -1
home/configurations/nmelzer_at_phoebe.nix
··· 68 69 services.playerctld.enable = true; 70 71 - home.file."${config.gtk.gtk2.configLocation}".force = true; 72 73 programs.ssh.includes = [ 74 config.sops.secrets.ssh.path
··· 68 69 services.playerctld.enable = true; 70 71 + gtk.gtk2.force = true; 72 73 programs.ssh.includes = [ 74 config.sops.secrets.ssh.path
-2
home/modules/default.nix
··· 9 "programs/eza" = ./programs/eza; 10 "programs/ghostty" = ./programs/ghostty; 11 "programs/nixpkgs" = ./programs/nixpkgs; 12 - "programs/openshift" = ./programs/openshift; 13 "programs/p10k" = ./programs/p10k; 14 "programs/rbw" = ./programs/rbw; 15 "programs/wezterm" = ./programs/wezterm; 16 17 "services/insync" = ./services/insync; 18 - "services/restic" = ./services/restic; 19 "services/rustic" = ./services/rustic; 20 21 "misc/awesome" = ./misc/awesome;
··· 9 "programs/eza" = ./programs/eza; 10 "programs/ghostty" = ./programs/ghostty; 11 "programs/nixpkgs" = ./programs/nixpkgs; 12 "programs/p10k" = ./programs/p10k; 13 "programs/rbw" = ./programs/rbw; 14 "programs/wezterm" = ./programs/wezterm; 15 16 "services/insync" = ./services/insync; 17 "services/rustic" = ./services/rustic; 18 19 "misc/awesome" = ./misc/awesome;
+1 -1
home/modules/profiles/base/default.nix
··· 251 } 252 ]; 253 254 - initExtra = '' 255 bindkey "^[[1;5D" backward-word 256 bindkey "^[[1;5C" forward-word 257
··· 251 } 252 ]; 253 254 + initContent = '' 255 bindkey "^[[1;5D" backward-word 256 bindkey "^[[1;5C" forward-word 257
+12
home/modules/profiles/development/default.nix
··· 13 }; 14 15 config = lib.mkIf cfg.enable { 16 programs.gh.enable = true; 17 programs.git = { 18 enable = true;
··· 13 }; 14 15 config = lib.mkIf cfg.enable { 16 + programs.jujutsu = { 17 + enable = true; 18 + settings = { 19 + user = { 20 + name = config.programs.git.userName; 21 + email = config.programs.git.userEmail; 22 + }; 23 + 24 + ui.diff.tool = [config.programs.git.extraConfig.diff.external "$left" "$right"]; 25 + }; 26 + }; 27 + 28 programs.gh.enable = true; 29 programs.git = { 30 enable = true;
-23
home/modules/programs/openshift/default.nix
··· 1 - _: { 2 - pkgs, 3 - lib, 4 - config, 5 - ... 6 - }: let 7 - cfg = config.programs.openshift; 8 - in { 9 - options.programs.openshift = { 10 - enable = lib.mkEnableOption "Tools to manage openshift instances"; 11 - }; 12 - 13 - config = lib.mkIf cfg.enable { 14 - home.packages = [pkgs.sops pkgs.openshift (lib.setPrio 0 pkgs.kubectl) pkgs.kubernetes-helm]; 15 - 16 - programs.zsh.initExtra = '' 17 - # Enable autocomplete for oc, kubectl and helm 18 - eval "$(${pkgs.openshift}/bin/oc completion zsh)" 19 - eval "$(${pkgs.kubectl}/bin/kubectl completion zsh)" 20 - eval "$(${pkgs.kubernetes-helm}/bin/helm completion zsh)" 21 - ''; 22 - }; 23 - }
···
-85
home/modules/services/restic/default.nix
··· 1 - {self, ...}: { 2 - config, 3 - lib, 4 - pkgs, 5 - self, 6 - ... 7 - }: let 8 - cfg = config.services.restic; 9 - 10 - bin = "${cfg.package}/bin/restic"; 11 - excludes = builtins.concatStringsSep " " (builtins.map (e: "--exclude=${e}") cfg.exclude); 12 - xFlags = lib.optionalString cfg.oneFileSystem "-x"; 13 - compressFlag = "--compression ${cfg.compression}"; 14 - flags = "${xFlags} ${compressFlag} ${excludes}"; 15 - 16 - command = "${bin} --tag home -vv backup ${flags} %h"; 17 - in { 18 - options.services.restic = { 19 - enable = lib.mkEnableOption "Restic Backup Tool"; 20 - 21 - package = lib.mkOption { 22 - type = lib.types.package; 23 - default = pkgs.restic; 24 - description = "Restic derivation to use"; 25 - }; 26 - 27 - exclude = lib.mkOption { 28 - type = lib.types.listOf lib.types.str; 29 - default = []; 30 - description = "Corresponds to `--exclude`. Use `%h` instead of `~`"; 31 - }; 32 - 33 - oneFileSystem = lib.mkOption { 34 - type = lib.types.bool; 35 - default = false; 36 - description = "If true, exclude other file systems, don't cross filesystem boundaries and subvolumes"; 37 - }; 38 - 39 - repo = lib.mkOption { 40 - type = lib.types.str; 41 - description = "Location of the repository"; 42 - }; 43 - 44 - compression = lib.mkOption { 45 - type = lib.types.enum ["off" "auto" "max"]; 46 - description = "The compression mode to use"; 47 - default = "auto"; 48 - }; 49 - 50 - # TODO: Add options for inlcude, password file, etc 51 - }; 52 - 53 - config = lib.mkIf cfg.enable { 54 - home.packages = [cfg.package]; 55 - 56 - systemd.user.services.restic-backup = { 57 - Unit = { 58 - Description = "Restic Backup Tool"; 59 - StartLimitIntervalSec = "25m"; 60 - StartLimitBurst = "4"; 61 - }; 62 - 63 - Service = { 64 - Environment = [ 65 - "PATH=${lib.makeBinPath [pkgs.openssh]}" 66 - "RESTIC_PASSWORD_FILE=%h/.config/restic/password" 67 - "RESTIC_REPOSITORY=${cfg.repo}" 68 - ]; 69 - Type = "oneshot"; 70 - ExecStart = command; 71 - Restart = "on-failure"; 72 - RestartSec = "2m"; 73 - }; 74 - }; 75 - 76 - systemd.user.timers.restic-backup = { 77 - Unit.Description = "Restic periodic backup"; 78 - Timer = { 79 - Unit = "restic-backup.service"; 80 - OnCalendar = "hourly"; 81 - }; 82 - Install.WantedBy = ["timers.target"]; 83 - }; 84 - }; 85 - }
···
+3
nixos/configurations/mimas.nix
··· 19 20 services.tailscale.enable = true; 21 22 sops.age.sshKeyPaths = ["/etc/ssh/ssh_host_ed25519_key"]; 23 sops.defaultSopsFile = "${self}/secrets/mimas/default.yaml"; 24
··· 19 20 services.tailscale.enable = true; 21 22 + security.pam.services.i3lock.enable = true; 23 + security.pam.services.i3lock-color.enable = true; 24 + 25 sops.age.sshKeyPaths = ["/etc/ssh/ssh_host_ed25519_key"]; 26 sops.defaultSopsFile = "${self}/secrets/mimas/default.yaml"; 27