diff --git a/flake.nix b/flake.nix index fc65af0..d6da92e 100644 --- a/flake.nix +++ b/flake.nix @@ -1,144 +1,65 @@ # This is the main flake containing all the nix related stuff { - description = "Main system configuration management - Jonas Hahn"; + description = "Main nixos system configuration management von Jonas Hahn "; inputs = { - # The main nix inputs nixpkgs.url = "nixpkgs/nixos-25.05"; nixpkgs-unstable.url = "nixpkgs/nixos-unstable"; - nur = { - url = "github:nix-community/NUR"; - inputs.nixpkgs.follows = "nixpkgs"; + sops-nix = { + url = "github:Mic92/sops-nix"; + sops-nix.inputs.nixpkgs.follows = "nixpkgs"; }; - sops-nix.url = "github:Mic92/sops-nix"; - # optional, not necessary for the module - sops-nix.inputs.nixpkgs.follows = "nixpkgs"; - - # Other utility stuff may be moved to a seperate flake in the future - # Love this system of just rolling to a certain commit! - xremap-flake.url = "github:xremap/nix-flake?rev=8001f37b1ffe86e76b62f36afadee2f4acf90e70"; home-manager = { url = "github:nix-community/home-manager/release-25.05"; inputs.nixpkgs.follows = "nixpkgs"; }; - stylix.url = "github:danth/stylix/release-25.05"; - - #TODO: Add the mailserver to here - - # Testing - #nix-snapd.url = "github:nix-community/nix-snapd"; - #nix-snapd.inputs.nixpkgs.follows = "nixpkgs"; - #hyprland.url = "github:hyprwm/Hyprland"; - # hyprland-plugins = {, - # url = "github:hyprwm/hyprland-plugins"; - # #inputs.hyprland.follows = "hyprland"; - # }; + xremap-flake.url = "github:xremap/nix-flake?rev=8001f37b1ffe86e76b62f36afadee2f4acf90e70"; }; - outputs = { self, nixpkgs, sops-nix, nixpkgs-unstable, nur, home-manager, stylix, ... }@inputs: + outputs = { self, nixpkgs, sops-nix, nixpkgs-unstable, home-manager, ... }@inputs: let system = "x86_64-linux"; - # Unserstand this overlay method or do another one overlay-unstable = final: prev: { unstable = nixpkgs-unstable.legacyPackages.${prev.system}; }; - overlay-nur = final: prev: { - nur = nur.legacyPackages.${prev.system}; - }; helperModules = [ - ({ config, pkgs, ... }: { nixpkgs.overlays = [ overlay-unstable overlay-nur ]; }) + ({ config, pkgs, ... }: { nixpkgs.overlays = [ overlay-unstable ]; }) home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - # messed up firefox - #home-manager.backupFileExtension = "backup"; home-manager.extraSpecialArgs = { inherit inputs; }; home-manager.users.jonas = import ./nixos/users/jonas/home.nix; - home-manager.users.root = import ./nixos/users/root/home.nix; } ]; - - in - { - # New thinkpad | main workstation - nixosConfigurations."thinix" = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - specialArgs = { inherit inputs; }; - modules = [ - # Use overlay magic with pkgs.unstable. - ./nixos/hosts/thinkpadt470s/configuration.nix - - #nix-snapd.nixosModules.default - #{ - # services.snap.enable = true; - #} - ] ++ helperModules; - }; - - # Acer laptop | second workstation - nixosConfigurations."nixyos" = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - specialArgs = { inherit inputs; }; - modules = [ - ./nixos/hosts/asus-vivo/configuration.nix - ] ++ helperModules; - }; - - nixosConfigurations."minoxy" = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - specialArgs = { inherit inputs; }; - modules = [ - ./nixos/hosts/minoxy/configuration.nix - ] ++ helperModules; - }; - - # Cloudserver minimal without all the (bloat) stuff - nixosConfigurations."stranox" = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - specialArgs = { inherit inputs; }; - modules = [ - - ({ config, pkgs, ... }: { nixpkgs.overlays = [ overlay-unstable overlay-nur ]; }) - ./nixos/hosts/stranox/configuration.nix - ]; - }; - - # Other system configurations + in { nixosConfigurations = { - # Testing server old computer - "misox" = nixpkgs.lib.nixosSystem { + "thinix" = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs; }; modules = [ - ./nixos/hosts/misox_msi/configuration.nix - ] ++ helperModules; + # Use overlay magic with pkgs.unstable. + ./nixos/hosts/thinkpadt470s/configuration.nix + ] ++ helperModules; }; - # Old Asus laptop - "asuox" = nixpkgs.lib.nixosSystem { + "nixyos" = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs; }; modules = [ - ./nixos/hosts/acer-katze/configuration.nix + ./nixos/hosts/asus-vivo/configuration.nix ] ++ helperModules; }; - "gullfoss" = nixpkgs.lib.nixosSystem { + "minoxy" = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs; }; modules = [ - ./nixos/hosts/gullfoss/configuration.nix + ./nixos/hosts/minoxy/configuration.nix ] ++ helperModules; }; - "fruitypi" = nixpkgs.lib.nixosSystem { - specialArgs = { inherit inputs; }; - modules = [ - ./nixos/hosts/rpi3/configuration.nix - ]; - }; }; }; } diff --git a/users/jonas/home_lite.nix b/user/home.nix similarity index 72% rename from users/jonas/home_lite.nix rename to user/home.nix index 12f9485..1eada9e 100644 --- a/users/jonas/home_lite.nix +++ b/user/home.nix @@ -1,43 +1,27 @@ -# Only config stuff you cannot config with dotfilesho -# Or stuff that does not interfere with the dotfiles - -{ config, pkgs, inputs, ... }: +{ pkgs, ... }: { imports = [ - # Load all the to be installed packages ./packages.nix - # inputs.xremap-flake.homeManagerModules.default - # inputs.stylix.homeManagerModules.stylix ]; + services.gnome-keyring.enable = true; - # This is very build intense -# wayland.windowManager.hyprland = { -# enable = true; -# plugins = [ -# inputs.hyprland-plugins.packages.${pkgs.system}.hyprexpo -# ]; -# }; - - - # change the defaults because I can! xdg.mimeApps = { enable = true; defaultApplications = { - # Set for web-related content "text/html" = "firefox.desktop"; "x-scheme-handler/http" = "firefox.desktop"; "x-scheme-handler/https" = "firefox.desktop"; "x-scheme-handler/about" = "firefox.desktop"; "x-scheme-handler/unknown" = "firefox.desktop"; "application/pdf" = "sioyek.desktop"; + "application/rnote" = "rnote.desktop"; "video/mp4" = "mpv.desktop"; "image/*" = "fehcustom.desktop"; }; }; - # custom feh xdg.desktopEntries.fehcustom = { name = "FehCustom"; terminal = false; @@ -51,11 +35,9 @@ EDITOR = "nvim"; HTTP_HOME = "duckduckgo.com"; MANPAGER="nvim +Man!"; - }; shellAliases = { - testt = "echo 'test'"; - flk = "sudo nixos-rebuild switch --flake '~/configuration/nixos#'"; + fla = "sudo nixos-rebuild switch --flake '~/nixos#'"; }; pointerCursor = { gtk.enable = true; @@ -65,10 +47,6 @@ }; }; - # stylix.enable = true; - # stylix.image = ./backg.jpg; - - # Theming gtk gtk = { enable = true; iconTheme = { @@ -81,7 +59,6 @@ }; }; - # Qt6 Configuration Tool (qt6ct) configuration qt = { enable = true; platformTheme.name = "qtct"; @@ -102,7 +79,6 @@ ''; }; - # starship - an customizable prompt for any shell programs.starship = { enable = true; settings = { diff --git a/users/jonas/packages.nix b/user/packages.nix similarity index 56% rename from users/jonas/packages.nix rename to user/packages.nix index cbf7acd..78e76cb 100644 --- a/users/jonas/packages.nix +++ b/user/packages.nix @@ -2,16 +2,12 @@ { home.packages = with pkgs; [ - (catppuccin-kvantum.override { - accent = "rosewater"; - variant = "frappe"; - }) weechat just + gcr iamb wiki-tui - # some helpers and new stuff to try vscode mise direnv @@ -19,7 +15,6 @@ visidata vuls - # add scanner simple-scan obsidian rclone @@ -28,8 +23,10 @@ broot gron xh - #jujutsu # this is currently insecure - pkgs.unstable.spotify-player + + #jujutsu + + unstable.spotify-player pipewire mesa @@ -42,7 +39,6 @@ kdePackages.dolphin git-lfs - # Privacy stuff tor torsocks w3m @@ -79,6 +75,7 @@ watson slides + kdePackages.falkon epiphany imagemagick @@ -113,7 +110,7 @@ lazygit nodejs ripgrep - pkgs.signal-desktop + signal-desktop unison trash-cli starship @@ -135,7 +132,7 @@ stow brightnessctl anki - pkgs.unstable.typst + unstable.typst dnsmasq davfs2 mediainfo @@ -151,8 +148,8 @@ xournalpp rnote libinput - libGL - libglvnd + libGL + libglvnd emacs cargo hyprshot @@ -164,12 +161,12 @@ keepassxc kitty wlsunset - pkgs.unstable.yazi + unstable.yazi neovim htop alpine #tree - #pkgs.qt5.full + #qt5.full wget tmux @@ -178,19 +175,19 @@ unzip p7zip - jq # A lightweight and flexible command-line JSON processor - yq-go # yaml processor https://github.com/mikefarah/yq + jq + yq-go - mtr # A network diagnostic tool + mtr iperf3 - dnsutils # `dig` + `nslookup` - ldns # replacement of `dig`, it provide the command `drill` - aria2 # A lightweight multi-protocol & multi-source command-line download utility - socat # replacement of openbsd-netcat - nmap # A utility for network discovery and security auditing - ipcalc # it is a calculator for the IPv4/v6 addresses + dnsutils + ldns + aria2 + socat + nmap + ipcalc - # misc + # Misc cowsay file which @@ -200,28 +197,25 @@ zstd gnupg - # nix related - # it provides the command `nom` works just like `nix` - # with more details log output nix-output-monitor - # productivity - hugo # static site generator - glow # markdown previewer in terminal + # Productivity + hugo + glow - iotop # io monitoring - iftop # network monitoring + iotop + iftop - # system call monitoring - strace # system call monitoring - ltrace # library call monitoring - lsof # list open files + # System call monitoring + strace + ltrace + lsof - # system tools + # System tools sysstat - lm_sensors # for `sensors` command - pciutils # lspci - usbutils # lsusb + lm_sensors + pciutils + usbutils ]; } diff --git a/user/users.nix b/user/users.nix new file mode 100644 index 0000000..7801690 --- /dev/null +++ b/user/users.nix @@ -0,0 +1,20 @@ +{ pkgs, ... }: + +{ + users.defaultUserShell = pkgs.zsh; + users.users = { + jonas = { + isNormalUser = true; + extraGroups = [ + "docker" + "input" + "scanner" + "lp" + "davfs2" + "wheel" + "audio" + "networkmanager" + ]; + }; + }; +} diff --git a/users/admin/home.nix b/users/admin/home.nix deleted file mode 100644 index 61208b3..0000000 --- a/users/admin/home.nix +++ /dev/null @@ -1,23 +0,0 @@ -# Only config stuff you cannot config with dotfiles -# Or stuff that does not interfere with the dotfiles - -{ config, pkgs, inputs, ... }: - -{ - imports = [ - # Load all the to be installed packages - # inputs.xremap-flake.homeManagerModules.default - ]; - - home = { - username = "admin"; - homeDirectory = "/home/admin"; - sessionVariables = { - EDITOR = "nvim"; - }; - }; - - # Let Home Manager install and manage itself. - programs.home-manager.enable = true; - home.stateVersion = "24.11"; -} diff --git a/users/guest/home.nix b/users/guest/home.nix deleted file mode 100644 index 170e6fc..0000000 --- a/users/guest/home.nix +++ /dev/null @@ -1,25 +0,0 @@ -# Only config stuff you cannot config with dotfiles -# Or stuff that does not interfere with the dotfiles - -{ config, pkgs, inputs, ... }: - -{ - imports = [ - # Load all the to be installed packages - # inputs.xremap-flake.homeManagerModules.default - ]; - - - home = { - username = "guest"; - homeDirectory = "/home/guest"; - sessionVariables = { - EDITOR = "nvim"; - STATUS_USER = "guest"; - }; - }; - - # Let Home Manager install and manage itself. - programs.home-manager.enable = true; - home.stateVersion = "24.11"; -} diff --git a/users/horst/home.nix b/users/horst/home.nix deleted file mode 100644 index c781f4e..0000000 --- a/users/horst/home.nix +++ /dev/null @@ -1,24 +0,0 @@ -# Only config stuff you cannot config with dotfiles -# Or stuff that does not interfere with the dotfiles - -{ config, pkgs, inputs, ... }: - -{ - imports = [ - # Load all the to be installed packages - # inputs.xremap-flake.homeManagerModules.default - ]; - - - home = { - username = "horst"; - homeDirectory = "/home/horst"; - sessionVariables = { - EDITOR = "nvim"; - }; - }; - - # Let Home Manager install and manage itself. - programs.home-manager.enable = true; - home.stateVersion = "24.11"; -} diff --git a/users/jonas/backg.jpg b/users/jonas/backg.jpg deleted file mode 100644 index 05d45f0..0000000 Binary files a/users/jonas/backg.jpg and /dev/null differ diff --git a/users/jonas/home.nix b/users/jonas/home.nix deleted file mode 100644 index 897fd62..0000000 --- a/users/jonas/home.nix +++ /dev/null @@ -1,137 +0,0 @@ -# Only config stuff you cannot config with dotfilesho -# Or stuff that does not interfere with the dotfiles - -{ config, pkgs, inputs, ... }: - -{ - imports = [ - # Load all the to be installed packages - ./packages.nix - # inputs.xremap-flake.homeManagerModules.default - # inputs.stylix.homeManagerModules.stylix - ]; - - - # This is very build intense - # wayland.windowManager.hyprland = { - # enable = true; - # plugins = [ - # inputs.hyprland-plugins.packages.${pkgs.system}.hyprexpo - # ]; - # }; - services.gnome-keyring.enable = true; - home.packages = [ pkgs.gcr ]; # Provides org.gnome.keyring.SystemPrompter - - - # change the defaults because I can! - xdg.mimeApps = { - enable = true; - defaultApplications = { - # Set for web-related content - "text/html" = "firefox.desktop"; - "x-scheme-handler/http" = "firefox.desktop"; - "x-scheme-handler/https" = "firefox.desktop"; - "x-scheme-handler/about" = "firefox.desktop"; - "x-scheme-handler/unknown" = "firefox.desktop"; - "application/pdf" = "sioyek.desktop"; - "application/rnote" = "rnote.desktop"; - "video/mp4" = "mpv.desktop"; - "image/*" = "fehcustom.desktop"; - }; - }; - - # custom feh - xdg.desktopEntries.fehcustom = { - name = "FehCustom"; - terminal = false; - exec = "${pkgs.feh}/bin/feh -d --keep-zoom-vp --draw-exif --start-at %u"; - }; - - # xdg.desktopEntries.flowblade = { - # name = "Flowblade"; - # terminal = false; - # exec = "${pkgs.flowblade}/bin/flowblade"; - # }; - - home = { - username = "jonas"; - homeDirectory = "/home/jonas"; - sessionVariables = { - EDITOR = "nvim"; - HTTP_HOME = "duckduckgo.com"; - MANPAGER="nvim +Man!"; - - }; - shellAliases = { - testt = "echo 'test'"; - flk = "sudo nixos-rebuild switch --flake '~/configuration/nixos#'"; - }; - pointerCursor = { - gtk.enable = true; - name = "catppuccin-frappe-rosewater-cursors"; - package = pkgs.catppuccin-cursors.frappeRosewater; - #hyprcursor.enable = true; - #hyprcursor.size = 16; - size = 18; - }; - }; - - # stylix.enable = true; - # stylix.image = ./backg.jpg; - - # Theming gtk - gtk = { - enable = true; - iconTheme = { - package = pkgs.papirus-icon-theme; - name = "Papirus-Dark"; - }; - theme = { - name = "Adwaita-dark"; - package = pkgs.gnome-themes-extra; - }; - }; - - # Qt6 Configuration Tool (qt6ct) configuration - qt = { - enable = true; - platformTheme.name = "qtct"; - style.name = "Kvantum"; - }; - xdg.configFile."Kvantum/kvantum.kvconfig".source = (pkgs.formats.ini { }).generate "kvantum.kvconfig" { - General.theme = "Catppuccin-Frappe-Rosewater"; - }; - xdg.configFile."qt6ct/qt6ct.conf".source = pkgs.writeTextFile { - name = "qt6ct.conf"; - text = '' - [Appearance] - color_scheme_path=${pkgs.qt6ct}/share/qt6ct/colors/airy.conf - custom_palette=false - icon_theme=Papirus-Dark - standard_dialogs=default - style=kvantum - ''; - }; - - # starship - an customizable prompt for any shell - programs.starship = { - enable = true; - settings = { - add_newline = false; - aws.disabled = true; - gcloud.disabled = true; - line_break.disabled = true; - - sudo = { - disabled = false; - symbol = "SUDO "; - style = "bold red"; - }; - - }; - }; - - # Let Home Manager install and manage itself. - programs.home-manager.enable = true; - home.stateVersion = "24.11"; -} diff --git a/users/root/home.nix b/users/root/home.nix deleted file mode 100644 index 30b3c0c..0000000 --- a/users/root/home.nix +++ /dev/null @@ -1,86 +0,0 @@ -# Only config stuff you cannot config with dotfiles -# Or stuff that does not interfere with the dotfiles - -# Changed my mind -# Just do whats fun - -{ config, pkgs, inputs, ... }: - -{ - imports = [ - # Load all the to be installed packages - # ./packages.nix - # inputs.xremap-flake.homeManagerModules.default - # inputs.stylix.homeManagerModules.stylix - ]; - - home = { - username = "root"; - sessionVariables = { - EDITOR = "nvim"; - HTTP_HOME = "duckduckgo.com"; - MANPAGER="nvim +Man!"; - - }; - shellAliases = { - testting = "echo 'test'"; - }; - }; - - home.packages = with pkgs; [ - acpi - zsh - zoxide - btop - yazi - unzip - feh - ]; - - programs.zsh = { - enable = true; - initContent = '' - # Load Starship prompt - eval "$(starship init zsh)" - ''; - }; - - programs.bash = { - enable = true; - bashrcExtra = '' - # Interactive shell check - [[ $- != *i* ]] && return - - # Load Starship prompt - if command -v starship >/dev/null 2>&1; then - eval "$(starship init bash)" - fi - - # Add any other bash aliases or functions here - alias ll='ls -l' - alias la='ls -A' - ''; - profileExtra = '' - # Source the bashrc - if [ -f ~/.bashrc ]; then - . ~/.bashrc - fi - ''; - }; - - # starship - an customizable prompt for any shell - programs.starship = { - enable = true; - settings = { - add_newline = false; - aws.disabled = true; - gcloud.disabled = true; - line_break.disabled = true; - - }; - }; - - # Let Home Manager install and manage itself. - programs.home-manager.enable = true; - home.stateVersion = "24.11"; -} diff --git a/users/theo/home.nix b/users/theo/home.nix deleted file mode 100644 index 3cc63c1..0000000 --- a/users/theo/home.nix +++ /dev/null @@ -1,24 +0,0 @@ -# Only config stuff you cannot config with dotfiles -# Or stuff that does not interfere with the dotfiles - -{ config, pkgs, inputs, ... }: - -{ - imports = [ - # Load all the to be installed packages - # inputs.xremap-flake.homeManagerModules.default - ]; - - - home = { - username = "theo"; - homeDirectory = "/home/theo"; - sessionVariables = { - EDITOR = "nvim"; - }; - }; - - # Let Home Manager install and manage itself. - programs.home-manager.enable = true; - home.stateVersion = "24.11"; -} diff --git a/users/users.nix b/users/users.nix deleted file mode 100644 index c25e65f..0000000 --- a/users/users.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ config, lib, pkgs, ... }: - -{ - # Define a user account. Don't forget to set a password with ‘passwd’. - users.defaultUserShell = pkgs.zsh; - - # Define groups - users.groups.dummy = {}; - - users.users = { - jonas = { - isNormalUser = true; - extraGroups = [ "docker" "input" "scanner" "lp" "davfs2" "wheel" "audio" "networkmanager" ]; - }; - theo = { - isNormalUser = true; - }; - horst = { - isNormalUser = true; - extraGroups = [ "wheel" "networkmanager" ]; - }; - gui = { - isNormalUser = true; - }; - shared = { - isNormalUser = true; - }; - dummy = { - # Testing what this does - isNormalUser = false; - isSystemUser = true; - - # Set this to be safe - group = "dummy"; - }; - }; -}