From fc7b529ffdaf32b074669cee1d794765b01a4781 Mon Sep 17 00:00:00 2001 From: alisceon Date: Thu, 14 Aug 2025 12:27:04 +0200 Subject: [PATCH] unlinkified --- flake.nix | 34 ++++- home/alisceon.nix | 211 -------------------------- home/alisceon/base.nix | 106 +++++++++++++ home/alisceon/server.nix | 8 + home/alisceon/workstation.nix | 95 ++++++++++++ hosts/{common.nix => common/base.nix} | 74 +-------- hosts/common/server.nix | 16 ++ hosts/common/workstation.nix | 79 ++++++++++ hosts/tesla-nixos/configuration.nix | 119 --------------- 9 files changed, 333 insertions(+), 409 deletions(-) delete mode 100644 home/alisceon.nix create mode 100644 home/alisceon/base.nix create mode 100644 home/alisceon/server.nix create mode 100644 home/alisceon/workstation.nix rename hosts/{common.nix => common/base.nix} (65%) create mode 100644 hosts/common/server.nix create mode 100644 hosts/common/workstation.nix diff --git a/flake.nix b/flake.nix index a0a272c..f2c9b68 100644 --- a/flake.nix +++ b/flake.nix @@ -23,7 +23,7 @@ config.allowUnfree = true; }; sharedModules = [ - ./hosts/common.nix + ./hosts/common/base.nix { nixpkgs.config.allowUnfree = true; } @@ -34,32 +34,52 @@ home-manager.extraSpecialArgs = { inherit (config.networking) hostName; }; # end extraSpecialArgs - home-manager.users.alisceon = import ./home/alisceon.nix; home-manager.backupFileExtension = "backup"; }) # end home manager - ]; + ]; # end sharedModules in { nixosConfigurations = { electra = nixpkgs.lib.nixosSystem { inherit system; modules = sharedModules ++ [ + ./hosts/common/workstation.nix ./hosts/electra/configuration.nix + home-manager.nixosModules.home-manager + ({ config, ...}: { + home-manager.users.alisceon.imports = [ + ./home/alisceon/base.nix + ./home/alisceon/workstation.nix + ]; + }) # end home-manager ]; # end modules }; # end electra tower = nixpkgs.lib.nixosSystem { inherit system; modules = sharedModules ++ [ + ./hosts/common/workstation.nix ./hosts/tower/configuration.nix + home-manager.nixosModules.home-manager + ({ config, ...}: { + home-manager.users.alisceon.imports = [ + ./home/alisceon/base.nix + ./home/alisceon/workstation.nix + ]; + }) # end home-manager ]; # end modules }; # end tower tesla-nixos = nixpkgs.lib.nixosSystem { inherit system; - modules = [ + modules = sharedModules ++ [ + ./hosts/common/server.nix ./hosts/tesla-nixos/configuration.nix - { - nixpkgs.config.allowUnfree = true; - } + home-manager.nixosModules.home-manager + ({ config, ...}: { + home-manager.users.alisceon.imports = [ + ./home/alisceon/base.nix + ./home/alisceon/workstation.nix + ]; + }) # end home-manager ]; # end modules }; # end tesla-nixos }; # end nixos conf diff --git a/home/alisceon.nix b/home/alisceon.nix deleted file mode 100644 index cd2b2cb..0000000 --- a/home/alisceon.nix +++ /dev/null @@ -1,211 +0,0 @@ -{ pkgs, config, hostName, lib, ... }: { - home.username = "alisceon"; - home.homeDirectory = "/home/alisceon"; - home.stateVersion = "24.05"; - manual.manpages.enable = true; - - programs = { - fish = { - enable = false; - # Disable greeting - interactiveShellInit = '' - set fish_greeting - ''; - preferAbbrs = true; - shellAbbrs = { - ls = "exa"; - ll = "exa -lah"; - grep = "rg"; - cat = "bat -p"; - tsla-fan = "ipmitool -H 10.30.0.3 -U ADMIN -P ADMIN raw 0x30 0x70 0x66 0x01 0x0"; - - # NixOS commands - nixoss = "sudo nixos-rebuild switch --flake .#${hostName}"; - nixos-main = "git checkout main && git pull && sudo nixos-rebuild switch --flake .#${hostName}"; - nixossr = "sudo nixos-rebuild switch --flake .#${hostName} && reboot"; - nixost = "sudo nixos-rebuild build-vm --flake .#${hostName}"; - - # Development commands - devt = "devenv test"; - - devtas = "devenv tasks list"; - devtar = "devenv tasks run"; - devs = "devenv shell"; - devu = "devenv up -d"; - devi = "nix flake init -t templates#"; - - pypod = "podman run --rm -it --network host -v '.:/run' -w '/run' python /run/"; - - # Tower commands - weboot = "nix shell nixpkgs#efibootmgr -c sudo efibootmgr -n 0000 && reboot"; - - # Misc commands - nix-shell = "nix shell"; - }; - }; # end fish - nushell = { - enable = true; - configFile.source = ./conf/config.nu; - shellAliases = { - tsla-fan = "ipmitool -H 10.30.0.3 -U ADMIN -P ADMIN raw 0x30 0x70 0x66 0x01 0x0"; - - # NixOS commands - nixoss = "sudo nixos-rebuild switch --flake .#${hostName}"; - nixos-main = "git checkout main ; git pull ; sudo nixos-rebuild switch --flake #${hostName}"; - nixossr = "sudo nixos-rebuild switch --flake .#${hostName} ; reboot"; - nixost = "sudo nixos-rebuild build-vm --flake .#${hostName}"; - - # Development commands - devt = "devenv test"; - - devtas = "devenv tasks list"; - devtar = "devenv tasks run"; - devs = "devenv shell"; - devu = "devenv up -d"; - devi = "nix flake init -t templates#"; - - pypod = "podman run --rm -it --network host -v '.:/run' -w '/run' python /run/"; - - # Tower commands - weboot = "nix shell nixpkgs#efibootmgr -c sudo efibootmgr -n 0000 ; reboot"; - }; - }; - git = { - enable = true; - userName = "alisceon"; - userEmail = "alisceon@protonmail.com"; - extraConfig = { - push = { autoSetupRemote = true; }; - init.defaultBranch = "main"; - }; - }; # end git - vscode.enable = true; - firefox = { - enable = true; - nativeMessagingHosts = [ - pkgs.gnome-browser-connector - pkgs.firefoxpwa - ]; - }; # end firefox - bat.enable = true; - ssh = { - enable = true; - matchBlocks = { - "alisceon.com" = { - hostname = "alisceon.com"; - user = "opc"; - }; - "miscbox" = { - hostname = "10.1.0.11"; - proxyJump = "alisceon.com"; - user = "opc"; - }; - "blogbox" = { - hostname = "10.1.0.10"; - proxyJump = "alisceon.com"; - user = "ubuntu"; - }; - "filurbox" = { - hostname = "oci.malice.zone"; - user = "opc"; - }; - "dnspi" = { - hostname = "10.40.0.2"; - user = "pi"; - }; - "tsla-exporter-bridge" = { - hostname = "alma02.lab.the.malice.zone"; - user = "root"; - }; - "tsla-runner-boi" = { - hostname = "alma03.lab.the.malice.zone"; - user = "root"; - }; - "tsla-nixos" = { - hostname = "tesla-nixos.lab.the.malice.zone"; - }; - }; - }; # end ssh - direnv = { - enable = true; - silent = true; - }; # end direnv - }; # end programs - - # obsidian special case - programs.obsidian.enable = true; - # overide broken config - xdg.configFile."obsidian/obsidian.json".source = lib.mkForce ./conf/obsidian.json; - - # nixpkgs config - xdg.configFile."nixpkgs/config.nix".source = ./conf/config.nix; - - home.packages = with pkgs; [ - signal-desktop - discord - eza - fd - ripgrep - ]; - - xdg = { - enable = true; - userDirs.enable = true; - mime.enable = true; - }; - - services.syncthing = { - enable = true; - }; - dconf.enable = true; - dconf.settings = { - "org/gnome/desktop/background" = { - color-shading-type = "solid"; - picture-options = "zoom"; - primary-color = "#000000000000"; - secondary-color = "#000000000000"; - picture-uri = "file:///home/alisceon/Pictures/system/bg.png"; - picture-uri-dark = "file:///home/alisceon/Pictures/system/bg.png"; - }; - "org/gnome/mutter" = { - auto-maximize = true; - }; - "org/gnome/desktop/interface" = { - accent-color = "red"; - color-scheme = "prefer-dark"; - }; - "org/gnome/shell" = { - disable-user-extensions = false; - enabled-extensions = [ pkgs.gnomeExtensions.ddterm.extensionUuid ]; - favorite-apps = [ - "org.gnome.Nautilus.desktop" - "firefox.desktop" - "code.desktop" - "obsidian.desktop" - "discord.desktop" - "signal.desktop" - ]; - }; - "org/gnome/shell/keybindings" = { - show-screenshot-ui = [ "s" ]; - }; - "org/gnome/settings-daemon/plugins/media-keys" = { - custom-keybindings = [ - "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/" - ]; - }; - "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = { - name = "GNOME Console"; - command = "kgx"; - binding = "Return"; - }; - "com/github/amezin/ddterm" = { - ddterm-toggle-hotkey = [ "Return" ]; - window-monitor = "focus"; - hide-when-focus-lost = true; - hide-window-on-esc = true; - tab-policy = "never"; - panel-icon-type = "none"; - }; - }; # end dconf.settings -} # end file diff --git a/home/alisceon/base.nix b/home/alisceon/base.nix new file mode 100644 index 0000000..ed2154e --- /dev/null +++ b/home/alisceon/base.nix @@ -0,0 +1,106 @@ +{ pkgs, config, hostName, lib, ... }: { + home.username = "alisceon"; + home.homeDirectory = "/home/alisceon"; + home.stateVersion = "24.05"; + manual.manpages.enable = true; + + globalShellAbbrs = { + tsla-fan = "ipmitool -H 10.30.0.3 -U ADMIN -P ADMIN raw 0x30 0x70 0x66 0x01 0x0"; + # NixOS commands + nixoss = "sudo nixos-rebuild switch --flake .#${hostName}"; + nixos-main = "git checkout main ; git pull ; sudo nixos-rebuild switch --flake .#${hostName}"; + nixossr = "sudo nixos-rebuild boot --flake .#${hostName} ; reboot"; + nixost = "sudo nixos-rebuild dry-build --flake .#${hostName}"; + + # Development commands + devt = "devenv test"; + + devtas = "devenv tasks list"; + devtar = "devenv tasks run"; + devs = "devenv shell"; + devu = "devenv up -d"; + devi = "nix flake init -t templates#"; + + pypod = "podman run --rm -it --network host -v '.:/run' -w '/run' python /run/"; + + # Tower commands + weboot = "nix shell nixpkgs#efibootmgr -c sudo efibootmgr -n 0000 ; reboot"; + }; # end globalShellAbbrs + + programs = { + fish = { + enable = false; + # Disable greeting + interactiveShellInit = '' + set fish_greeting + ''; + preferAbbrs = true; + shellAbbrs = globalShellAbbrs // { + ls = "exa"; + ll = "exa -lah"; + grep = "rg"; + cat = "bat -p"; + }; + }; # end fish + nushell = { + enable = true; + configFile.source = ../conf/config.nu; + shellAliases = globalShellAbbrs //{ + }; + }; + git = { + enable = true; + userName = "alisceon"; + userEmail = "alisceon@protonmail.com"; + extraConfig = { + push = { autoSetupRemote = true; }; + init.defaultBranch = "main"; + }; + }; # end git + ssh = { + enable = true; + matchBlocks = { + "alisceon.com" = { + hostname = "alisceon.com"; + user = "opc"; + }; + "miscbox" = { + hostname = "10.1.0.11"; + proxyJump = "alisceon.com"; + user = "opc"; + }; + "blogbox" = { + hostname = "10.1.0.10"; + proxyJump = "alisceon.com"; + user = "ubuntu"; + }; + "filurbox" = { + hostname = "oci.malice.zone"; + user = "opc"; + }; + "dnspi" = { + hostname = "10.40.0.2"; + user = "pi"; + }; + "tsla-exporter-bridge" = { + hostname = "alma02.lab.the.malice.zone"; + user = "root"; + }; + "tsla-runner-boi" = { + hostname = "alma03.lab.the.malice.zone"; + user = "root"; + }; + "tsla-nixos" = { + hostname = "tesla-nixos.lab.the.malice.zone"; + }; + }; + }; # end ssh + direnv = { + enable = true; + silent = true; + }; # end direnv + }; # end programs + + # nixpkgs config + xdg.configFile."nixpkgs/config.nix".source = ../conf/config.nix; +} # end file diff --git a/home/alisceon/server.nix b/home/alisceon/server.nix new file mode 100644 index 0000000..8d90fc8 --- /dev/null +++ b/home/alisceon/server.nix @@ -0,0 +1,8 @@ +{ pkgs, config, hostName, lib, ... }: { + home.username = "alisceon"; + home.homeDirectory = "/home/alisceon"; + home.stateVersion = "24.05"; + manual.manpages.enable = true; + + programs = { +} # end file diff --git a/home/alisceon/workstation.nix b/home/alisceon/workstation.nix new file mode 100644 index 0000000..873f690 --- /dev/null +++ b/home/alisceon/workstation.nix @@ -0,0 +1,95 @@ +{ pkgs, config, hostName, lib, ... }: { + home.username = "alisceon"; + home.homeDirectory = "/home/alisceon"; + home.stateVersion = "24.05"; + manual.manpages.enable = true; + + programs = { + vscode.enable = true; + firefox = { + enable = true; + nativeMessagingHosts = [ + pkgs.gnome-browser-connector + pkgs.firefoxpwa + ]; + }; # end firefox + direnv = { + enable = true; + silent = true; + }; # end direnv + }; # end programs + + # obsidian special case + programs.obsidian.enable = true; + # overide broken config + xdg.configFile."obsidian/obsidian.json".source = lib.mkForce ../conf/obsidian.json; + + # nixpkgs config + xdg.configFile."nixpkgs/config.nix".source = ../conf/config.nix; + + home.packages = with pkgs; [ + signal-desktop + discord + ]; + + xdg = { + enable = true; + userDirs.enable = true; + mime.enable = true; + }; + + services.syncthing = { + enable = true; + }; + dconf.enable = true; + dconf.settings = { + "org/gnome/desktop/background" = { + color-shading-type = "solid"; + picture-options = "zoom"; + primary-color = "#000000000000"; + secondary-color = "#000000000000"; + picture-uri = "file:///home/alisceon/Pictures/system/bg.png"; + picture-uri-dark = "file:///home/alisceon/Pictures/system/bg.png"; + }; + "org/gnome/mutter" = { + auto-maximize = true; + }; + "org/gnome/desktop/interface" = { + accent-color = "red"; + color-scheme = "prefer-dark"; + }; + "org/gnome/shell" = { + disable-user-extensions = false; + enabled-extensions = [ pkgs.gnomeExtensions.ddterm.extensionUuid ]; + favorite-apps = [ + "org.gnome.Nautilus.desktop" + "firefox.desktop" + "code.desktop" + "obsidian.desktop" + "discord.desktop" + "signal.desktop" + ]; + }; + "org/gnome/shell/keybindings" = { + show-screenshot-ui = [ "s" ]; + }; + "org/gnome/settings-daemon/plugins/media-keys" = { + custom-keybindings = [ + "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/" + ]; + }; + "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = { + name = "GNOME Console"; + command = "kgx"; + binding = "Return"; + }; + "com/github/amezin/ddterm" = { + ddterm-toggle-hotkey = [ "Return" ]; + window-monitor = "focus"; + hide-when-focus-lost = true; + hide-window-on-esc = true; + tab-policy = "never"; + panel-icon-type = "none"; + }; + }; # end dconf.settings +} # end file diff --git a/hosts/common.nix b/hosts/common/base.nix similarity index 65% rename from hosts/common.nix rename to hosts/common/base.nix index 6a48d54..4dc324b 100644 --- a/hosts/common.nix +++ b/hosts/common/base.nix @@ -66,37 +66,6 @@ }; security.sudo.wheelNeedsPassword = false; - services = { - printing.enable = true; - pulseaudio.enable = false; - pipewire = { - enable = true; - alsa.enable = true; - pulse.enable = true; - jack.enable = true; - }; - xserver.xkb.layout = "se"; - displayManager = { - gdm.enable = true; - gdm.wayland = true; - }; - desktopManager.gnome.enable = true; - gnome = { - gnome-keyring.enable = true; - gnome-initial-setup.enable = false; - }; - }; # end services - - services.fwupd.enable = true; - programs = { - dconf.enable = true; - fish.enable = true; - steam = { - enable = true; - remotePlay.openFirewall = true; - }; - }; # end programs - environment = { systemPackages = with pkgs; [ # CLI tools @@ -117,55 +86,16 @@ fish powershell - # Chat - discord - signal-desktop - - # Browser - firefox - firefoxpwa - - # Development - vscode - devenv - direnv - # Virtualization - podman - - # GNOME tweaks and extensions - gnome-tweaks - dconf-editor - gnomeExtensions.ddterm - - # Other - syncthing - steam - krita - edk2-uefi-shell - obsidian - gparted + podman ]; # end systemPackages - gnome.excludePackages = with pkgs; [ - evolution - geary - gnome-contacts - gnome-music - gnome-user-docs - gnome-tour - gnome-weather - gnome-maps - gnome-calendar - gnome-initial-setup - gnome-clocks - ]; # end gnome.excludePackages shells = with pkgs; [ bash nushell fish powershell - ]; + ]; }; # end environment virtualisation.podman = { diff --git a/hosts/common/server.nix b/hosts/common/server.nix new file mode 100644 index 0000000..a82bfd2 --- /dev/null +++ b/hosts/common/server.nix @@ -0,0 +1,16 @@ +{ config, pkgs, ... }: + +{ + services = { + openssh.enable = true; + }; # end services + + services.fwupd.enable = true; + + environment = { + systemPackages = with pkgs; [ + devenv + direnv + ]; # end systemPackages + }; # end environment +} # end file diff --git a/hosts/common/workstation.nix b/hosts/common/workstation.nix new file mode 100644 index 0000000..0a259ab --- /dev/null +++ b/hosts/common/workstation.nix @@ -0,0 +1,79 @@ +{ config, pkgs, ... }: + +{ + security.sudo.wheelNeedsPassword = false; + + services = { + printing.enable = true; + pulseaudio.enable = false; + pipewire = { + enable = true; + alsa.enable = true; + pulse.enable = true; + jack.enable = true; + }; + xserver.xkb.layout = "se"; + displayManager = { + gdm.enable = true; + gdm.wayland = true; + }; + desktopManager.gnome.enable = true; + gnome = { + gnome-keyring.enable = true; + gnome-initial-setup.enable = false; + }; + }; # end services + + services.fwupd.enable = true; + programs = { + dconf.enable = true; + steam = { + enable = true; + remotePlay.openFirewall = true; + }; + }; # end programs + + environment = { + systemPackages = with pkgs; [ + # Chat + discord + signal-desktop + + # Browser + firefox + firefoxpwa + + # Development + vscode + devenv + direnv + + # GNOME tweaks and extensions + gnome-tweaks + dconf-editor + gnomeExtensions.ddterm + + # Other + syncthing + steam + krita + edk2-uefi-shell + obsidian + gparted + ]; # end systemPackages + + gnome.excludePackages = with pkgs; [ + evolution + geary + gnome-contacts + gnome-music + gnome-user-docs + gnome-tour + gnome-weather + gnome-maps + gnome-calendar + gnome-initial-setup + gnome-clocks + ]; # end gnome.excludePackages + }; # end environment +} #end file diff --git a/hosts/tesla-nixos/configuration.nix b/hosts/tesla-nixos/configuration.nix index 1392126..14c0e0a 100644 --- a/hosts/tesla-nixos/configuration.nix +++ b/hosts/tesla-nixos/configuration.nix @@ -10,123 +10,4 @@ enable = true; }; # end loader.systemd-boot }; # end boot - system.stateVersion = "24.05"; - system.autoUpgrade = { - enable = true; - persistent = true; - flake = "/home/alisceon/nixos_config"; - flags = [ - "--update-input" - "nixpkgs" - "-L" - ]; - dates = "daily"; - }; # end system.autoUpgrade - - nix = { - settings = { - experimental-features = [ "nix-command" "flakes" ]; - auto-optimise-store = true; - trusted-users = [ "root" "alisceon" ]; - }; # end settings - gc = { - automatic = true; - persistent = true; - dates = "daily"; - options = "--delete-older-than 7d"; - }; # end gc - registry = { - templates.to = { - type = "git"; - url = "git+ssh://git@git.malice.zone/alisceon/devenv_templates.git"; - }; # end templates.to - nixpkgs.to = { - type = "github"; - owner = "NixOS"; - repo = "nixpkgs"; - ref = "nixos-unstable"; - }; # end nixpkgs.to - nixpkgs-stable.to = { - type = "github"; - owner = "NixOS"; - repo = "nixpkgs"; - ref = "nixos-25.05"; - }; # end nixpkgs.to - }; #end registry - }; #end nix - - console.keyMap = "sv-latin1"; - networking.networkmanager.enable = true; - time.timeZone = "Europe/Stockholm"; - i18n.defaultLocale = "en_US.UTF-8"; - i18n.extraLocaleSettings = { - LC_ADDRESS = "sv_SE.UTF-8"; - LC_IDENTIFICATION = "sv_SE.UTF-8"; - LC_MEASUREMENT = "sv_SE.UTF-8"; - LC_MONETARY = "sv_SE.UTF-8"; - LC_NAME = "sv_SE.UTF-8"; - LC_NUMERIC = "sv_SE.UTF-8"; - LC_PAPER = "sv_SE.UTF-8"; - LC_TELEPHONE = "sv_SE.UTF-8"; - LC_TIME = "sv_SE.UTF-8"; - }; - security.sudo.wheelNeedsPassword = false; - - services = { - openssh.enable = true; - }; # end services - - services.fwupd.enable = true; - programs = { - dconf.enable = true; - fish.enable = true; - }; # end programs - - environment = { - systemPackages = with pkgs; [ - # CLI tools - git - wget - curl - btop # system monitor - ripgrep # grep replacement - bat # cat replacement - fd # find replacement - eza # ls replacement - nh # nix helper - jq # JSON processor - - # Shells - bash - nushell - fish - powershell - - devenv - direnv - - # Virtualization - podman - - ]; # end systemPackages - - shells = with pkgs; [ - bash - nushell - fish - powershell - ]; - }; # end environment - - virtualisation.podman = { - enable = true; - dockerCompat = true; - defaultNetwork.settings.dns_enabled = true; - }; # end virtualisation - - users.users.alisceon = { - isNormalUser = true; - extraGroups = [ "wheel" "networkmanager" "podman" ]; - shell = pkgs.nushell; - }; # end users } # end file