Compare commits

...

49 Commits

Author SHA1 Message Date
Christian Ott 6aaea6d416 update vscode 5 months ago
Christian Ott c579566ae1 add communardo vpn 5 months ago
Christian Ott 9046f3d02a nix updates 8 months ago
Christian Ott a377905297 changes 1 year ago
Christian Ott e8bde7a3bf NixOS update with necessary config changes 1 year ago
Christian Ott 73e71df821 format code 1 year ago
Christian Ott 44e64ef028 add some programs & aliases 1 year ago
Christian Ott b14e9bb8aa NixOS update 1 year ago
Christian Ott 40133957c4 NixOS update 1 year ago
Christian Ott 2a3ca89e60 add wallpaper and enable hypridle 1 year ago
Christian Ott 72b3c77574 experimets with fonts - font awesome still not working 1 year ago
Christian Ott 87c58b3eb4 add starship to terminal 1 year ago
Christian Ott 7c3a5a4312 NixOS update 1 year ago
Christian Ott 9dd273472f Temporary fix broken numpad on framework 16 1 year ago
Christian Ott 667fc59251 NixOS update 1 year ago
Christian Ott e8b3b461f4 NixOS update 2 years ago
Christian Ott f5d88a6c9c add signal 2 years ago
Christian Ott 2e9d54721c update nixos 2 years ago
Christian Ott 4fdbb8d3cf add grim/grimblast to make screenshots work 2 years ago
Christian Ott 9263b0c709 hypr: allow window manipulation with mouse 2 years ago
Christian Ott 4a0a95ea22 temporarly use xdpw instead xdph to get a working screensharing 2 years ago
Christian Ott 9eb5615307 try hyprland at old commit 2 years ago
Christian Ott da2c407497 move git config to homemanager and add git lfs 2 years ago
Christian Ott c083ba1f28 improve config for external 30" screen 2 years ago
Christian Ott 14a6db1451 fix disko hash 2 years ago
Christian Ott 9b2ee6b67f update system 2 years ago
Christian Ott c9ac46e1a3 hypr: add display config for 4k external portable screen 2 years ago
Christian Ott 6ba096b77b add hosts entry for nimo ddev development 2 years ago
Christian Ott d5d58d3054 fix version of disko 2 years ago
Christian Ott af01d9880d update system 2 years ago
Christian Ott 57fcd0549f current changes 2 years ago
Christian Ott fa0f99d8f2 set hyprland scaling to 1 2 years ago
Christian Ott f689a633ae shortcut for rofi 2 years ago
Christian Ott f9e22f4781 add dependencies 2 years ago
Christian Ott 50f70e6f0d enable bluetooth 2 years ago
Christian Ott 3ffbf3096e fix 1password system auth => needs to be in nixos 2 years ago
Christian Ott 792fde1201 add openvpn and dns config for mibex 2 years ago
Christian Ott 8de90abbfa add docker 2 years ago
Christian Ott 015da00d7d add network manager applet 2 years ago
Christian Ott bd593e329e use wayabar config and add alternative network manager 2 years ago
Christian Ott 57694a4207 use wayland fork of rofi 2 years ago
Christian Ott f61535d27b add power menu to waybar 2 years ago
Christian Ott 0d0db75c50 show hidden files in ranger 2 years ago
Christian Ott 2917702fb2 default configs for ranger and waybar 2 years ago
Christian Ott cf4d85d19a enable compose key 2 years ago
Christian Ott ca25ef4696 show dunst notifications on sound change 2 years ago
Christian Ott f6e569da7c fix dunst config syntax 2 years ago
Christian Ott 95a35f977a make sound modifier keys work by using pipewire 2 years ago
Christian Ott 9d5576549c add cascadia code nerd font to get working waybar icons 2 years ago
  1. BIN
      backgrounds/island_1.jpg
  2. BIN
      backgrounds/island_2.jpg
  3. BIN
      backgrounds/island_3.jpg
  4. 125
      configuration.nix
  5. 66
      disko.nix
  6. 185
      flake.lock
  7. 53
      flake.nix
  8. 12
      greeter.nix
  9. 21
      hardware-configuration.nix
  10. 130
      home.nix
  11. 189
      hyperland/default.nix
  12. 9
      modules/dunst.nix
  13. 72
      modules/ranger.nix
  14. 11
      modules/vscodium/default.nix
  15. 104
      modules/vscodium/vscodium.nix
  16. 679
      modules/waybar.nix

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

@ -2,16 +2,23 @@
# your system. Help is available in the configuration.nix(5) man page, on # your system. Help is available in the configuration.nix(5) man page, on
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`). # https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
{ config, lib, pkgs, ... }: {
inputs,
pkgs,
ronema,
...
}:
{ {
imports = imports = [
[ # Include the results of the hardware scan. # Include the results of the hardware scan.
./hardware-configuration.nix ./hardware-configuration.nix
"${builtins.fetchTarball { "${
url = "https://github.com/nix-community/disko/archive/master.tar.gz"; builtins.fetchTarball {
sha256 = "0bc1jrkv7mmr6iw3w452gn23fzvrq71p3klvj2bl4rc52mh8fb77"; url = "https://github.com/nix-community/disko/archive/refs/tags/v1.6.1.tar.gz";
}}/module.nix" sha256 = "1p9vsml07bm3riw703dv83ihlmgyc11qv882qa6bqzqdgn86y8z4";
}
}/module.nix"
./disko.nix ./disko.nix
]; ];
@ -21,10 +28,28 @@
boot.loader.efi.canTouchEfiVariables = true; boot.loader.efi.canTouchEfiVariables = true;
networking.hostName = "nix-fw16"; # Define your hostname. networking.hostName = "nix-fw16"; # Define your hostname.
networking.hosts = {
"127.0.0.1" = [
"hotel-nimo.ddev.local"
];
};
# Pick only one of the below networking options. # Pick only one of the below networking options.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
networking.networkmanager.plugins = [ pkgs.networkmanager-openvpn ];
networking.networkmanager.dns = "dnsmasq";
# address=/git.christianott.ch/git.christianott.ch/tux.social/woelkli.christianott.ch/office.christianott.ch/192.168.15.4
environment.etc."NetworkManager/dnsmasq.d/00-cave.conf".text = ''
server=/.mibex.ch/172.31.13.27
server=/.communardo.de/192.168.50.75
address=/mail.communardo.de/195.243.59.178
address=/git.christianott.ch/git.christianott.ch/tux.social/woelkli.christianott.ch/office.christianott.ch/192.168.15.4
server=/huus/192.168.15.2
server=192.168.15.2
server=192.168.50.1
server=1.1.1.1
'';
# Set your time zone. # Set your time zone.
time.timeZone = "Europe/Zurich"; time.timeZone = "Europe/Zurich";
@ -40,14 +65,30 @@
# useXkbConfig = true; # use xkb.options in tty. # useXkbConfig = true; # use xkb.options in tty.
# }; # };
# https://nixos.wiki/wiki/Fonts fonts with icons
fonts.packages = with pkgs; [
font-awesome
nerd-fonts.jetbrains-mono
nerd-fonts.caskaydia-cove
nerd-fonts.fira-code
];
fonts.fontconfig = {
defaultFonts = {
monospace = [ "CaskaydiaCove Nerd Font Mono" ];
sansSerif = [ "CascadiaCode Nerd Font" ];
serif = [ "CascadiaCode Nerd Font" ];
};
};
# Enable the X11 windowing system. # Enable the X11 windowing system.
services.xserver.enable = true; services.xserver.enable = true;
programs.hyprland.enable = true; programs.hyprland.enable = true;
programs.hyprland.portalPackage = pkgs.xdg-desktop-portal-wlr;
# Enable the GNOME Desktop Environment. # Enable the GNOME Desktop Environment.
services.xserver.displayManager.gdm.enable = false; services.displayManager.gdm.enable = false;
services.xserver.desktopManager.gnome.enable = true; services.desktopManager.gnome.enable = true;
services.fwupd.enable = true; services.fwupd.enable = true;
@ -66,6 +107,10 @@
# Enable non-root access to QMK firmware # Enable non-root access to QMK firmware
hardware.keyboard.qmk.enable = true; hardware.keyboard.qmk.enable = true;
hardware.bluetooth.enable = true;
hardware.bluetooth.powerOnBoot = true;
services.blueman.enable = true;
# Configure keymap in X11 # Configure keymap in X11
# services.xserver.xkb.layout = "us"; # services.xserver.xkb.layout = "us";
# services.xserver.xkb.options = "eurosign:e,caps:escape"; # services.xserver.xkb.options = "eurosign:e,caps:escape";
@ -74,8 +119,15 @@
# services.printing.enable = true; # services.printing.enable = true;
# Enable sound. # Enable sound.
sound.enable = true; # sound.enable = true;
hardware.pulseaudio.enable = true; services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
jack.enable = true;
pulse.enable = true;
};
services.pulseaudio.enable = false;
# Enable touchpad support (enabled default in most desktopManager). # Enable touchpad support (enabled default in most desktopManager).
services.libinput = { services.libinput = {
@ -86,17 +138,25 @@
# Define a user account. Don't forget to set a password with ‘passwd’. # Define a user account. Don't forget to set a password with ‘passwd’.
users.users.chrigi = { users.users.chrigi = {
isNormalUser = true; isNormalUser = true;
extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. extraGroups = [
"wheel"
"networkmanager"
"docker"
];
initialPassword = "password"; initialPassword = "password";
packages = with pkgs; [ packages = with pkgs; [
firefox firefox
tree tree
]; ];
}; };
virtualisation.docker = {
enable = true;
storageDriver = "btrfs";
};
xdg.portal = { xdg.portal = {
enable = true; enable = true;
extraPortals = [ pkgs.xdg-desktop-portal-hyprland ]; extraPortals = [ pkgs.xdg-desktop-portal-wlr ];
configPackages = [ pkgs.xdg-desktop-portal-hyprland ]; configPackages = [ pkgs.xdg-desktop-portal-wlr ];
}; };
environment.sessionVariables = { environment.sessionVariables = {
@ -111,16 +171,41 @@
# $ nix search wget # $ nix search wget
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
#vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. #vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
git
neofetch neofetch
wget wget
curl curl
btop btop
vscodium vscodium-insider
pciutils pciutils
usbutils usbutils
openvpn
dig
ronema.packages.x86_64-linux.default
networkmanager-openvpn
]; ];
# https://github.com/nix-community/home-manager/issues/3997
# could not get the workaround with overlay to work in hm
programs._1password = {
enable = true;
};
programs._1password-gui = {
enable = true;
polkitPolicyOwners = [ "chrigi" ];
};
security.polkit.enable = true;
services.gnome.gnome-keyring.enable = true;
security.pam.services.greetd.enableGnomeKeyring = true;
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 7d";
};
# Some programs need SUID wrappers, can be configured further or are # Some programs need SUID wrappers, can be configured further or are
# started in user sessions. # started in user sessions.
# programs.mtr.enable = true; # programs.mtr.enable = true;
@ -164,9 +249,11 @@
system.stateVersion = "23.11"; # Did you read the comment? system.stateVersion = "23.11"; # Did you read the comment?
nix = { nix = {
package = pkgs.nixFlakes; # package = pkgs.nix;
settings.experimental-features = ["nix-command" "flakes"]; settings.experimental-features = [
"nix-command"
"flakes"
];
}; };
} }

@ -30,9 +30,17 @@
bypassWorkqueues = true; bypassWorkqueues = true;
keyFile = "/tmp/yk/yk_mini.key"; keyFile = "/tmp/yk/yk_mini.key";
}; };
additionalKeyFiles = [ "/tmp/yk/yk_the_big_one.key" "/tmp/yk/yk_on_key.key" "/tmp/yk/yk_round.key" ]; additionalKeyFiles = [
"/tmp/yk/yk_the_big_one.key"
"/tmp/yk/yk_on_key.key"
"/tmp/yk/yk_round.key"
];
# https://github.com/sgillespie/nixos-yubikey-luks # https://github.com/sgillespie/nixos-yubikey-luks
extraFormatArgs = [ "--cipher=aes-xts-plain64" "--key-size=512" "--hash=sha512" ]; extraFormatArgs = [
"--cipher=aes-xts-plain64"
"--key-size=512"
"--hash=sha512"
];
initrdUnlock = false; # we have to add it manually because of the yubikeys initrdUnlock = false; # we have to add it manually because of the yubikeys
content = { content = {
type = "btrfs"; type = "btrfs";
@ -41,23 +49,48 @@
"/root" = { "/root" = {
mountpoint = "/"; mountpoint = "/";
# https://unix.stackexchange.com/questions/752741/what-is-the-mount-option-space-cache-v2 # https://unix.stackexchange.com/questions/752741/what-is-the-mount-option-space-cache-v2
mountOptions = [ "compress=zstd" "noatime" "space_cache=v2" "commit=120"]; mountOptions = [
"compress=zstd"
"noatime"
"space_cache=v2"
"commit=120"
];
}; };
"/home" = { "/home" = {
mountpoint = "/home"; mountpoint = "/home";
mountOptions = [ "compress=zstd" "noatime" "space_cache=v2" "commit=120"]; mountOptions = [
"compress=zstd"
"noatime"
"space_cache=v2"
"commit=120"
];
}; };
"/nix" = { "/nix" = {
mountpoint = "/nix"; mountpoint = "/nix";
mountOptions = [ "compress=zstd" "noatime" "space_cache=v2" "commit=120"]; mountOptions = [
"compress=zstd"
"noatime"
"space_cache=v2"
"commit=120"
];
}; };
"/var" = { "/var" = {
mountpoint = "/var"; mountpoint = "/var";
mountOptions = [ "compress=zstd" "noatime" "space_cache=v2" "commit=120"]; mountOptions = [
"compress=zstd"
"noatime"
"space_cache=v2"
"commit=120"
];
}; };
"/docker-btrfs" = { "/docker-btrfs" = {
mountpoint = "/var/lib/docker/btrfs"; mountpoint = "/var/lib/docker/btrfs";
mountOptions = [ "compress=zstd" "noatime" "space_cache=v2" "commit=120"]; mountOptions = [
"compress=zstd"
"noatime"
"space_cache=v2"
"commit=120"
];
}; };
}; };
}; };
@ -91,8 +124,16 @@
bypassWorkqueues = true; bypassWorkqueues = true;
keyFile = "/tmp/yk/yk_mini.key"; keyFile = "/tmp/yk/yk_mini.key";
}; };
additionalKeyFiles = [ "/tmp/yk/yk_the_big_one.key" "/tmp/yk/yk_on_key.key" "/tmp/yk/yk_round.key" ]; additionalKeyFiles = [
extraFormatArgs = [ "--cipher=aes-xts-plain64" "--key-size=512" "--hash=sha512" ]; "/tmp/yk/yk_the_big_one.key"
"/tmp/yk/yk_on_key.key"
"/tmp/yk/yk_round.key"
];
extraFormatArgs = [
"--cipher=aes-xts-plain64"
"--key-size=512"
"--hash=sha512"
];
initrdUnlock = false; # we have to add it manually because of the yubikeys initrdUnlock = false; # we have to add it manually because of the yubikeys
content = { content = {
type = "btrfs"; type = "btrfs";
@ -100,7 +141,12 @@
subvolumes = { subvolumes = {
"/backup" = { "/backup" = {
mountpoint = "/backup"; mountpoint = "/backup";
mountOptions = [ "compress=zstd" "noatime" "space_cache=v2" "commit=120"]; mountOptions = [
"compress=zstd"
"noatime"
"space_cache=v2"
"commit=120"
];
}; };
}; };
}; };

@ -23,11 +23,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1717097707, "lastModified": 1751824240,
"narHash": "sha256-HC5vJ3oYsjwsCaSbkIPv80e4ebJpNvFKQTBOGlHvjLs=", "narHash": "sha256-aDDC0CHTlL7QDKWWhdbEgVPK6KwWt+ca0QkmHYZxMzI=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "0eb314b4f0ba337e88123e0b1e57ef58346aafd9", "rev": "fd9e55f5fac45a26f6169310afca64d56b681935",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -36,6 +36,81 @@
"type": "github" "type": "github"
} }
}, },
"hyprland-protocols": {
"inputs": {
"nixpkgs": [
"xdph",
"nixpkgs"
],
"systems": [
"xdph",
"systems"
]
},
"locked": {
"lastModified": 1718746314,
"narHash": "sha256-HUklK5u86w2Yh9dOkk4FdsL8eehcOZ95jPhLixGDRQY=",
"owner": "hyprwm",
"repo": "hyprland-protocols",
"rev": "1b61f0093afff20ab44d88ad707aed8bf2215290",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-protocols",
"type": "github"
}
},
"hyprlang": {
"inputs": {
"hyprutils": "hyprutils",
"nixpkgs": [
"xdph",
"nixpkgs"
],
"systems": "systems"
},
"locked": {
"lastModified": 1717881852,
"narHash": "sha256-XeeVoKHQgfKuXoP6q90sUqKyl7EYy3ol2dVZGM+Jj94=",
"owner": "hyprwm",
"repo": "hyprlang",
"rev": "ec6938c66253429192274d612912649a0cfe4d28",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprlang",
"type": "github"
}
},
"hyprutils": {
"inputs": {
"nixpkgs": [
"xdph",
"hyprlang",
"nixpkgs"
],
"systems": [
"xdph",
"hyprlang",
"systems"
]
},
"locked": {
"lastModified": 1717881334,
"narHash": "sha256-a0inRgJhPL6v9v7RPM/rx1kbXdfe3xJA1c9z0ZkYnh4=",
"owner": "hyprwm",
"repo": "hyprutils",
"rev": "0693f9398ab693d89c9a0aa3b3d062dd61b7a60e",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprutils",
"type": "github"
}
},
"nix-colors": { "nix-colors": {
"inputs": { "inputs": {
"base16-schemes": "base16-schemes", "base16-schemes": "base16-schemes",
@ -57,11 +132,11 @@
}, },
"nixos-hardware": { "nixos-hardware": {
"locked": { "locked": {
"lastModified": 1714465198, "lastModified": 1751432711,
"narHash": "sha256-ySkEJvS0gPz2UhXm0H3P181T8fUxvDVcoUyGn0Kc5AI=", "narHash": "sha256-136MeWtckSHTN9Z2WRNRdZ8oRP3vyx3L8UxeBYE+J9w=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "68d680c1b7c0e67a9b2144d6776583ee83664ef4", "rev": "497ae1357f1ac97f1aea31a4cb74ad0d534ef41f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -73,11 +148,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1716948383, "lastModified": 1751637120,
"narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", "narHash": "sha256-xVNy/XopSfIG9c46nRmPaKfH1Gn/56vQ8++xWA8itO4=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "ad57eef4ef0659193044870c731987a6df5cf56b", "rev": "5c724ed1388e53cc231ed98330a60eb2f7be4be3",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -102,12 +177,102 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-small": {
"locked": {
"lastModified": 1751743520,
"narHash": "sha256-gk83D6+0KpugopnV6vrumpVHDrqESFjVr39O9u7NNy8=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "833775e5731dcd1fd3eb0b61fa7ed2a4fafb4e3e",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable-small",
"repo": "nixpkgs",
"type": "github"
}
},
"ronema": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1732525400,
"narHash": "sha256-q051SKAI9oSSkwG998w8J20EaKHV/loopSUTIsbft1M=",
"path": "/home/chrigi/private-dev/rofi-network-manager",
"type": "path"
},
"original": {
"path": "/home/chrigi/private-dev/rofi-network-manager",
"type": "path"
}
},
"root": { "root": {
"inputs": { "inputs": {
"home-manager": "home-manager", "home-manager": "home-manager",
"nix-colors": "nix-colors", "nix-colors": "nix-colors",
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs",
"nixpkgs-small": "nixpkgs-small",
"ronema": "ronema",
"xdph": "xdph"
}
},
"systems": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"xdph": {
"inputs": {
"hyprland-protocols": "hyprland-protocols",
"hyprlang": "hyprlang",
"nixpkgs": [
"nixpkgs"
],
"systems": "systems_2"
},
"locked": {
"lastModified": 1720194466,
"narHash": "sha256-Rizg9efi6ue95zOp0MeIV2ZedNo+5U9G2l6yirgBUnA=",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"rev": "b9b97e5ba23fe7bd5fa4df54696102e8aa863cf6",
"type": "github"
},
"original": {
"owner": "hyprwm",
"ref": "b9b97e5ba23fe7bd5fa4df54696102e8aa863cf6",
"repo": "xdg-desktop-portal-hyprland",
"type": "github"
} }
} }
}, },

@ -3,41 +3,80 @@
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs-small.url = "github:nixos/nixpkgs/nixos-unstable-small";
nixos-hardware.url = "github:NixOS/nixos-hardware/master"; nixos-hardware.url = "github:NixOS/nixos-hardware/master";
nix-colors.url = "github:misterio77/nix-colors"; nix-colors.url = "github:misterio77/nix-colors";
xdph = {
url = "github:hyprwm/xdg-desktop-portal-hyprland?ref=b9b97e5ba23fe7bd5fa4df54696102e8aa863cf6";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = { home-manager = {
url = github:nix-community/home-manager; url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
ronema = {
url = "/home/chrigi/private-dev/rofi-network-manager";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
}; };
outputs = { self, nixpkgs, nixos-hardware, home-manager, nix-colors, ... }@inputs: outputs =
{
self,
nixpkgs,
nixpkgs-small,
nixos-hardware,
home-manager,
nix-colors,
ronema,
xdph,
...
}@inputs:
let let
username = "chrigi"; username = "chrigi";
lib = nixpkgs.lib; lib = nixpkgs.lib;
system = "x86_64-linux"; system = "x86_64-linux";
nixpkgsDrvRootPath = nixpkgs + "/pkgs/applications/editors/vscode";
pkgs = import nixpkgs { pkgs = import nixpkgs {
inherit system; inherit system;
config.allowUnfree = true; config.allowUnfree = true;
overlays = [
(final: prev: {
vscodium-insider = pkgs.callPackage ./modules/vscodium/vscodium.nix { inherit nixpkgsDrvRootPath; };
})
];
}; };
in { pkgs-small = import nixpkgs-small {
inherit system;
config.allowUnfree = true;
};
in
{
nixosConfigurations.nix-fw16 = lib.nixosSystem { nixosConfigurations.nix-fw16 = lib.nixosSystem {
specialArgs = { specialArgs = {
inherit pkgs; inherit
inputs
pkgs
ronema
xdph
;
}; };
modules = [ modules = [
./configuration.nix ./configuration.nix
./greeter.nix ./greeter.nix
nixos-hardware.nixosModules.framework-16-7040-amd nixos-hardware.nixosModules.framework-16-7040-amd
home-manager.nixosModules.home-manager { home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.users.${username} = import ./home.nix; home-manager.users.${username} = import ./home.nix;
home-manager.extraSpecialArgs = {inherit username nix-colors; }; home-manager.extraSpecialArgs = {
inherit pkgs-small username nix-colors;
};
} }
]; ];
}; };
}; };
} }

@ -1,4 +1,9 @@
{ config, pkgs, lib, ... }: {
config,
pkgs,
lib,
...
}:
let let
tuigreet = "${pkgs.greetd.tuigreet}/bin/tuigreet"; tuigreet = "${pkgs.greetd.tuigreet}/bin/tuigreet";
@ -7,7 +12,7 @@ let
# https://github.com/bytemouse/config/blob/48d9be51a9666c9b62f4b8e84322b9d892ee0aea/modules/gnome.nix#L11 # https://github.com/bytemouse/config/blob/48d9be51a9666c9b62f4b8e84322b9d892ee0aea/modules/gnome.nix#L11
gnome-script = pkgs.writeShellScriptBin "gnome-script" '' gnome-script = pkgs.writeShellScriptBin "gnome-script" ''
export XDG_SESSION_TYPE=wayland export XDG_SESSION_TYPE=wayland
${pkgs.dbus}/bin/dbus-run-session ${pkgs.gnome.gnome-session}/bin/gnome-session ${pkgs.dbus}/bin/dbus-run-session ${pkgs.gnome-session}/bin/gnome-session
''; '';
gnome-desktop = pkgs.makeDesktopItem { gnome-desktop = pkgs.makeDesktopItem {
name = "gnome-desktop"; name = "gnome-desktop";
@ -16,7 +21,8 @@ let
terminal = true; terminal = true;
}; };
in { in
{
services.greetd = { services.greetd = {
enable = true; enable = true;

@ -1,18 +1,29 @@
# Do not modify this file! It was generated by ‘nixos-generate-config’ # Do not modify this file! It was generated by ‘nixos-generate-config’
# and may be overwritten by future invocations. Please make changes # and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead. # to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }: {
config,
lib,
pkgs,
modulesPath,
...
}:
{ {
disabledModules = ["system/boot/luksroot.nix"]; disabledModules = [ "system/boot/luksroot.nix" ];
imports = imports = [
[ (modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
./my-luksroot.nix ./my-luksroot.nix
]; ];
boot.initrd = { boot.initrd = {
kernelModules = ["vfat" "nls_cp437" "nls_iso8859-1" "usbhid"]; kernelModules = [
"vfat"
"nls_cp437"
"nls_iso8859-1"
"usbhid"
];
luks = { luks = {
yubikeySupport = true; yubikeySupport = true;

@ -1,9 +1,21 @@
{ config, pkgs, nix-colors, username, ... }: {
config,
pkgs,
pkgs-small,
nix-colors,
username,
...
}:
let
in
{ {
imports = [ imports = [
nix-colors.homeManagerModules.default nix-colors.homeManagerModules.default
./modules/dunst.nix ./modules/dunst.nix
./modules/waybar.nix
./modules/ranger.nix
./hyperland ./hyperland
]; ];
colorScheme = nix-colors.colorSchemes.gruvbox-material-dark-hard; colorScheme = nix-colors.colorSchemes.gruvbox-material-dark-hard;
@ -12,16 +24,75 @@
home.username = "${username}"; home.username = "${username}";
home.homeDirectory = "/home/${username}"; home.homeDirectory = "/home/${username}";
# Packages that should be installed to the user profile. # Packages that should be installed to the user profile.
home.packages = with pkgs; [ home.packages = with pkgs; [
kitty pkgs-small.kitty
eza eza
git
git-lfs
obsidian obsidian
jq jq
_1password direnv
_1password-gui
skypeforlinux kdePackages.okular
zip
ant
tmux
nixd # Nix language server for vscode
nixfmt-rfc-style
signal-desktop
teams-for-linux
slack
jetbrains-toolbox
nextcloud-client
pkgs-small.presenterm
font-awesome
nerd-fonts.jetbrains-mono
nerd-fonts.caskaydia-cove
nerd-fonts.fira-code
(pkgs.appimageTools.wrapType2 {
name = "atlassify";
pname = "atlassify";
version = "1.17.0";
src = fetchurl {
url = "https://github.com/setchy/atlassify/releases/download/v1.17.0/Atlassify-1.17.0.AppImage";
hash = "sha256-mfcxrd9axnmQMofth1M5ov2a4ppFE0ga0Gxjwbx2v9o=";
};
extraPkgs =
pkgs:
(appimageTools.defaultFhsEnvArgs.multiPkgs pkgs)
++ [
libsecret
];
})
(pkgs.stdenv.mkDerivation {
pname = "flowkeeper";
version = "0.9.1";
src = pkgs.fetchurl {
url = "https://github.com/flowkeeper-org/fk-desktop/releases/download/v0.9.1/Flowkeeper";
sha256 = "sha256-HCEG7LSM7h2Yz6BbvQ0KdmfYnKZOG+TZxMvE5o8gYiA=";
};
dontUnpack = true;
installPhase = ''
install -Dm755 $src $out/bin/flowkeeper
'';
meta = {
description = "Flowkeeper time tracker";
platforms = pkgs.lib.platforms.linux;
};
})
]; ];
programs.ssh = { programs.ssh = {
@ -32,6 +103,53 @@
''; '';
}; };
programs.git = {
enable = true;
lfs.enable = true;
};
programs.bash = {
enable = true;
historyIgnore = [
"l"
"ls"
"ll"
"cd"
"exit"
];
historyControl = [ "erasedups" ];
shellAliases = {
grep = "grep --color=auto";
".." = "cd ..";
"cdm" = "cd ~/mibex-plugins/monorepo";
};
initExtra = ''
# Custom colored bash prompt
PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
'';
profileExtra = ''
# Include user's private bin if present
if [ -d "$HOME/.local/bin" ] ; then
PATH="$HOME/.local/bin:$PATH"
fi
'';
};
programs.atuin = {
enable = true;
settings = {
auto_sync = true;
sync_frequency = "5m";
sync_address = "https://atuin.christianott.ch";
search_mode = "fuzzy";
};
};
programs.starship = {
enable = true;
enableBashIntegration = true;
};
# This value determines the home Manager release that your # This value determines the home Manager release that your
# configuration is compatible with. This helps avoid breakage # configuration is compatible with. This helps avoid breakage
# when a new home Manager release introduces backwards # when a new home Manager release introduces backwards

@ -1,27 +1,76 @@
{ config, pkgs, username, ... }: {
config,
pkgs,
username,
...
}:
let
volumeChange = pkgs.writeShellScript "volume-change" ''
# FROM: https://github.com/jsimonrichard/nix-config/blob/master/modules/my-config/desktop/hyprland/home-manager/desktop/hyprland/keybinds.nix
# Arbitrary but unique message tag
msgTag="dunst-sound"
# Change the volume using alsa(might differ if you use pulseaudio)
wpctl $@ > /dev/null
# Query wpctl for the current volume and whether or not the speaker is muted
volume="$(wpctl get-volume $2 | awk '{print $2 * 100}')"
mute="$(wpctl get-volume $2 | awk '{print $3}')"
if [[ $volume == 0 || "$mute" == "[MUTED]" ]]; then
# Show the sound muted notification
dunstify -a "volumeChange" -u low -i audio-volume-muted -h string:x-dunst-stack-tag:$msgTag "Volume muted"
else
# Show the volume notification
dunstify -a "volumeChange" -u low -i audio-volume-high -h string:x-dunst-stack-tag:$msgTag \
-h int:value:"$volume" "Volume: $volume%"
fi
'';
in
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
dunst dunst
waybar waybar
swww swww
rofi rofi-wayland
brightnessctl
networkmanagerapplet
grim
grimblast
swappy
slurp
wl-clipboard
hyprpaper
# (pkgs.waybar.overrideAttrs (oldAttrs: { # (pkgs.waybar.overrideAttrs (oldAttrs: {
# mesonFlags = oldAttrs.mesonFlags ++ [ "-Dexperimental=true" ]; # mesonFlags = oldAttrs.mesonFlags ++ [ "-Dexperimental=true" ];
# })) # }))
]; ];
services.hyprpaper = {
enable = true;
settings = {
ipc = false;
splash = false;
splash_offset = 5;
splash_color = "rgb(ebdbb8)";
preload = [ "$HOME/.nixos-config/backgrounds/island_1.jpg" ];
wallpaper = [ ",$HOME/.nixos-config/backgrounds/island_1.jpg" ];
};
};
programs.hyprlock = { programs.hyprlock = {
enable = true; enable = true;
settings = { settings = {
background = { background = {
monitor = ""; monitor = "";
# path = screenshot # path = screenshot
path = "$HOME/.nixos-config/backgrounds/island_2.jpg";
color = "rgba(152, 179, 166, 0.9)"; color = "rgba(152, 179, 166, 0.9)";
blur_passes = 1; blur_passes = 1;
blur_size = 7; blur_size = 7;
noise = 0.0117; noise = 1.17e-2;
contrast = 0.8916; contrast = 0.8916;
brightness = 0.8172; brightness = 0.8172;
vibrancy = 0.1696; vibrancy = 0.1696;
@ -87,13 +136,80 @@
}; };
}; };
services.hypridle = {
enable = true;
settings = {
general = {
before_sleep_cmd = "loginctl lock-session";
lock_cmd = "${pkgs.procps}/bin/pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock";
# unlock_cmd = "loginctl unlock-session";
after_sleep_cmd = "hyprctl dispatch dpms on && notify-send \"Back from idle.\" \"Welcome back!\"";
};
listener = [
{
timeout = 5;
on-timeout = "pidof hyprlock && hyprctl dispatch dpms off";
on-resume = "hyprctl dispatch dpms on";
}
{
timeout = 150; # 2.5min.
on-timeout = "light -O && light -S 10"; # set monitor backlight to minimum, avoid 0 on OLED monitor.
on-resume = "light -I"; # monitor backlight restore.
}
{
timeout = 300;
on-timeout = "playerctl pause";
}
{
timeout = 270;
on-timeout = "notify-send \"Idle\" \"You're idle... locking in 30s.\"";
}
{
timeout = 300; # 5min
on-timeout = "loginctl lock-session"; # lock screen when timeout has passed
}
{
timeout = 330; # 5.5min
on-timeout = "hyprctl dispatch dpms off"; # screen off when timeout has passed
on-resume = "hyprctl dispatch dpms on"; # screen on when activity is detected after timeout has fired.
}
{
timeout = 1800; # 30min
on-timeout = "systemctl suspend"; # suspend pc
}
];
};
};
wayland.windowManager.hyprland.enable = true; wayland.windowManager.hyprland.enable = true;
wayland.windowManager.hyprland.settings = { wayland.windowManager.hyprland.settings = {
monitor = [
"eDP-1,2560x1600@60.00Hz,0x0,1"
"DP-3,preferred,-3840x-560,1"
"DP-2,preferred,auto,1.5"
];
"$mod" = "SUPER"; "$mod" = "SUPER";
input = {
kb_options = "compose:rctrl,numpad:mac"; # workaround for split numpad https://github.com/hyprwm/Hyprland/issues/6886
numlock_by_default = true;
};
exec-once = [ exec-once = [
"dunst" "dunst"
"waybar" "waybar"
"${pkgs.networkmanagerapplet}/bin/nm-applet --sm-disable --indicator"
"blueman-applet"
"${pkgs.libsForQt5.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1"
"systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
"systemctl --user start hyprpaper.service" # they are enabled, but don't start because they try to start before WAYLAND_DISPLAY is set
];
bindm = [
"$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow"
]; ];
bind = bind =
@ -102,24 +218,77 @@
"$mod, k, exec, kitty" "$mod, k, exec, kitty"
", Print, exec, grimblast copy area" ", Print, exec, grimblast copy area"
"$mod, l, exec, hyprlock" # Add a keybinding to lock the screen "$mod, l, exec, hyprlock" # Add a keybinding to lock the screen
"$mod, C, exec, codium" "$mod, C, exec, code"
"$mod, P, exec, sleep 2; grim -g \"$(slurp)\" - | swappy -f -"
"$mod, E, exec, hyprctl dispatch exit" "$mod, E, exec, hyprctl dispatch exit"
"$mod, r, exec, rofi -show run"
"$mod, code:51, exec, 1password" # super + \
"$mod, W, togglefloating,"
",XF86MonBrightnessDown, exec, brightnessctl s 5%-"
",XF86MonBrightnessUp, exec, brightnessctl s +5%"
] ]
++ ( ++ (
# workspaces # workspaces
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10} # binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
builtins.concatLists (builtins.genList ( builtins.concatLists (
x: let builtins.genList (
ws = let x:
let
ws =
let
c = (x + 1) / 10; c = (x + 1) / 10;
in in
builtins.toString (x + 1 - (c * 10)); builtins.toString (x + 1 - (c * 10));
in [ in
[
"$mod, ${ws}, workspace, ${toString (x + 1)}" "$mod, ${ws}, workspace, ${toString (x + 1)}"
"$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}" "$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}"
] ]
) 10
) )
10)
); );
windowrulev2 = [
# https://jbmorley.co.uk/posts/2024-02-13-1password-and-hyprland/
"float, title:(1Password)"
"size 70% 70%, title:(1Password)"
"center, title:(1Password)"
"float,class:(.blueman-manager-wrapped)"
"size 25% 25%,class:(.blueman-manager-wrapped)"
"float,class:(org.kde.polkit-kde-authentication-agent-1)"
"opacity 0.80 0.70,class:^(org.kde.polkit-kde-authentication-agent-1)$"
"bordercolor rgba(ed8796FF), class:org.kde.polkit-kde-authentication-agent-1"
"dimaround, class:org.kde.polkit-kde-authentication-agent-1"
"stayfocused, class:org.kde.polkit-kde-authentication-agent-1"
# nextcloud
"float,class:(com.nextcloud.desktopclient.nextcloud)"
"size 400 800,class:(com.nextcloud.desktopclient.nextcloud)"
"move 100%-412 44,class:(com.nextcloud.desktopclient.nextcloud)"
# to try if it has sideeffects
"noinitialfocus, initialClass:com.nextcloud.desktopclient.nextcloud"
"noinitialfocus, initialClass:atlassify"
];
# Bind flags
# l -> locked, will also work when an input inhibitor (e.g. a lockscreen) is active.
# r -> release, will trigger on release of a key.
# e -> repeat, will repeat when held.
# n -> non-consuming, key/mouse events will be passed to the active window in addition to triggering the dispatcher.
# m -> mouse, see below
# t -> transparent, cannot be shadowed by other binds.
# i -> ignore mods, will ignore modifiers.
binde = [
", XF86AudioRaiseVolume, exec, ${volumeChange} set-volume @DEFAULT_AUDIO_SINK@ 5%+ --limit 1.3"
"CTRL, XF86AudioRaiseVolume, exec, ${volumeChange} set-volume @DEFAULT_AUDIO_SOURCE@ 5%+ --limit 1"
];
bindle = [
", XF86AudioLowerVolume, exec, ${volumeChange} set-volume @DEFAULT_AUDIO_SINK@ 5%-"
"CTRL, XF86AudioLowerVolume, exec, ${volumeChange} set-volume @DEFAULT_AUDIO_SOURCE@ 5%-"
];
bindl = [
", XF86AudioMute, exec, ${volumeChange} set-mute @DEFAULT_AUDIO_SINK@ toggle"
];
}; };
} }

@ -2,7 +2,8 @@
inputs, inputs,
config, config,
... ...
}:{ }:
{
services.dunst = { services.dunst = {
enable = true; enable = true;
settings = { settings = {
@ -34,7 +35,7 @@
markup = "full"; markup = "full";
origin = "top-right"; origin = "top-right";
offset = "10x10"; offset = "10x10";
format = "<b>%s</b>''\n%b"; format = "<b>%s</b>\\n%b";
alignment = "left"; alignment = "left";
show_age_threshold = 60; show_age_threshold = 60;
word_wrap = true; word_wrap = true;
@ -54,7 +55,7 @@
title = "Dunst"; title = "Dunst";
class = "Dunst"; class = "Dunst";
corner_radius = 10; corner_radius = 10;
icon_corner_radius= 5; icon_corner_radius = 5;
notification_limit = 5; notification_limit = 5;
mouse_left_click = "close_current"; mouse_left_click = "close_current";
mouse_middle_click = "do_action"; mouse_middle_click = "do_action";
@ -89,7 +90,7 @@
appname = "network"; appname = "network";
new_icon = "network"; new_icon = "network";
summary = "*"; summary = "*";
format = "<span size='x-large' weight='bold'>%s</span>''\n<span font_desc='Cooper Hewitt,Iosevka Nerd Font 12'>%b</span>"; format = "<span size='x-large' weight='bold'>%s</span>\\n<span font_desc='Cooper Hewitt,Iosevka Nerd Font 12'>%b</span>";
}; };
NetworkManager_Applet = { NetworkManager_Applet = {
appname = "NetworkManager Applet"; appname = "NetworkManager Applet";

@ -0,0 +1,72 @@
{ pkgs, ... }:
{
# stolen from: https://github.com/leoperegrino/.files/blob/d996b31a0b1843f05d0f27123196bfa6d0980caa/home-manager/modules/ranger.nix
programs.ranger = {
enable = true;
extraPackages = [
pkgs.ueberzugpp
];
extraConfig = "default_linemode devicons";
plugins = [
{
name = "devicons";
src = builtins.fetchGit {
url = "https://github.com/alexanderjeurissen/ranger_devicons.git";
rev = "a8d626485ca83719e1d8d5e32289cd96a097c861";
};
}
];
settings = {
preview_images_method = "ueberzug";
show_hidden = true;
use_preview_script = true;
preview_images = true;
preview_files = true;
open_all_images = true;
draw_borders = true;
hidden_filter = ''^\.|\.(bak|swp)$|^lost\+found$|^__pycache__$'';
nested_ranger_warning = true;
colorscheme = "jungle";
};
# mappings = {
# "gu" = "cd ~/.local/share";
# "gs" = "cd ~/.local/state";
# "gf" = "cd ~/.files";
# "gV" = "cd ~/.files/nvim/lua/user/";
# "gc" = "cd ~/.config";
# "gC" = "cd ~/.cache";
# "gb" = "cd ~/bin";
# "gD" = "cd ~/desktop";
# "gd" = "cd ~/documents";
# "gm" = "cd ~/music";
# "gp" = "cd ~/pictures";
# "gv" = "cd ~/videos";
# "gU" = "cd /usr/share/";
# "gr" = "cd /";
# "gt" = "cd /tmp";
# "g/r" = "shell sudo ranger .";
# "ev" = ''shell "''${EDITOR}" -- %s'';
# "eV" = ''console shell "''${EDITOR}" --%space'';
# "et" = ''shell "''${EDITOR}" -p -- %s'';
# "eT" = ''console shell "''${EDITOR}" -p -- %s%space'';
# "es" = ''shell "''${EDITOR}" -O -- %s'';
# "eS" = ''console shell "''${EDITOR}" -O -- %s%space'';
# "EV" = ''shell sudo "''${EDITOR}" -- %s'';
# "V" = ''shell setsid -f alacritty -e zsh -ic "''${EDITOR} -- %s"'';
# "B" = ''shell setsid -f alacritty -e zsh -ic "''${PAGER} -- %s"'';
# "<c-o>" = "console touch%space";
# "CC" = "get_cumulative_size";
# "md" = "console mkdir%space";
# "cW" = "bulkrename";
# "i" = ''shell "''${PAGER}" -- %f'';
# "v" = "mark_files all=True toggle=True";
# "n" = "tab_new";
# "b" = ''shell setsid -f "''${TERM}"'';
# "f" = "console scout -ftse%space";
# "<c-j>" = "scroll_preview 1";
# "<c-k>" = "scroll_preview -1";
# };
};
}

@ -0,0 +1,11 @@
{ inputs, pkgs, ... }:
let
nixpkgsDrvRootPath = inputs.nixpkgs + "/pkgs/applications/editors/vscode";
in
{
nixpkgs.overlays = [
{
vscodium = pkgs.callPackage ./vscodium-insiders.nix { inherit nixpkgsDrvRootPath; };
}
];
}

@ -0,0 +1,104 @@
{
lib,
stdenv,
callPackage,
nixpkgsDrvRootPath,
fetchurl,
nixosTests,
commandLineArgs ? "",
sourceExecutableName ? "codium-insiders",
useVSCodeRipgrep ? stdenv.hostPlatform.isDarwin,
}:
let
inherit (stdenv.hostPlatform) system;
throwSystem = throw "Unsupported system: ${system}";
plat =
{
x86_64-linux = "linux-x64";
x86_64-darwin = "darwin-x64";
aarch64-linux = "linux-arm64";
aarch64-darwin = "darwin-arm64";
armv7l-linux = "linux-armhf";
}
.${system} or throwSystem;
archive_fmt = if stdenv.hostPlatform.isDarwin then "zip" else "tar.gz";
hash =
{
x86_64-linux = "sha256-LpLGu8COJ7lk6QoAdmTNG4CMP0aMDNg43A+50Fm1tP4=";
x86_64-darwin = "sha256-d+8vt5grnLwD/cIIGgb2ogpgZrZLZs+2bqfBrRzLfJw=";
aarch64-linux = "sha256-D93Eh5TPRgd9OxJ4pWsOryS5mOz2amQOHOnO+K99hAg=";
aarch64-darwin = "sha256-xKBWAb23jUi8pI7mZpHOP2eF3PZFh0MWj+BM+alKF18=";
armv7l-linux = "sha256-EqJNi/qMM08voA/Ltle3/28zbgIz/Ae42IE5oXLxcKU=";
}
.${system} or throwSystem;
sourceRoot = lib.optionalString (!stdenv.hostPlatform.isDarwin) ".";
in
callPackage "${toString nixpkgsDrvRootPath}/generic.nix" rec {
inherit
sourceRoot
commandLineArgs
useVSCodeRipgrep
sourceExecutableName
;
# Please backport all compatible updates to the stable release.
# This is important for the extension ecosystem.
version = "1.103.05263-insider";
pname = "vscodium";
executableName = "codium-insiders";
longName = "VSCodium";
shortName = "vscodium";
src = fetchurl {
url = "https://github.com/VSCodium/vscodium-insiders/releases/download/${version}/VSCodium-${plat}-${version}.${archive_fmt}";
inherit hash;
};
tests = nixosTests.vscodium;
updateScript = ./update-vscodium.sh;
# Editing the `codium` binary (and shell scripts) within the app bundle causes the bundle's signature
# to be invalidated, which prevents launching starting with macOS Ventura, because VSCodium is notarized.
# See https://eclecticlight.co/2022/06/17/app-security-changes-coming-in-ventura/ for more information.
dontFixup = stdenv.hostPlatform.isDarwin;
meta = {
description = ''
Open source source code editor developed by Microsoft for Windows,
Linux and macOS (VS Code without MS branding/telemetry/licensing)
'';
longDescription = ''
Open source source code editor developed by Microsoft for Windows,
Linux and macOS. It includes support for debugging, embedded Git
control, syntax highlighting, intelligent code completion, snippets,
and code refactoring. It is also customizable, so users can change the
editor's theme, keyboard shortcuts, and preferences
'';
homepage = "https://github.com/VSCodium/vscodium";
downloadPage = "https://github.com/VSCodium/vscodium/releases";
license = lib.licenses.mit;
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
maintainers = with lib.maintainers; [
synthetica
bobby285271
ludovicopiero
];
mainProgram = "codium";
platforms = [
"x86_64-linux"
"x86_64-darwin"
"aarch64-linux"
"aarch64-darwin"
"armv7l-linux"
];
# requires libc.so.6 and other glibc specifics
broken = stdenv.hostPlatform.isLinux && !stdenv.hostPlatform.isGnu;
};
}

@ -0,0 +1,679 @@
{
config,
pkgs,
...
}:
{
programs.waybar = {
enable = true;
package = pkgs.waybar;
settings = {
mainBar = {
height = 18;
layer = "top";
modules-left = [
"custom/launcher"
"cpu"
"memory"
# "custom/weather"
"hyprland/workspaces"
];
modules-center = [
# "mpris"
"hyprland/window"
];
modules-right = [
"network"
"pulseaudio"
"backlight"
"battery"
"clock"
"tray"
"group/group-power"
# "hyprland/language"
# "custom/wallpaper"
# "custom/power-menu"
];
"hyprland/workspaces" = {
format = "{name}";
all-outputs = true;
on-click = "activate";
format-icons = {
active = " 󱎴";
default = "󰍹";
};
persistent-workspaces = {
"1" = [ ];
"2" = [ ];
"3" = [ ];
"4" = [ ];
"5" = [ ];
"6" = [ ];
"7" = [ ];
"8" = [ ];
"9" = [ ];
};
};
"hyprland/language" = {
format = "{short}";
};
"hyprland/window" = {
max-length = 200;
separate-outputs = true;
};
"tray" = {
spacing = 10;
};
"clock" = {
format = "{:%H:%M}";
format-alt = "{:%b %d %Y}";
tooltip-format = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
};
"cpu" = {
interval = 10;
format = " {}%";
max-length = 10;
on-click = "";
};
"memory" = {
interval = 30;
format = " {}%";
format-alt = " {used:0.1f}GB";
max-length = 10;
};
"temperature" = {
interval = 10;
format = " {temperatureC}°C";
max-length = 10;
};
"backlight" = {
# device = "intel_backlight";
format = "{icon}";
tooltip = true;
format-alt = "<small>{percent}%</small>";
format-icons = [
"󱩎"
"󱩏"
"󱩐"
"󱩑"
"󱩒"
"󱩓"
"󱩔"
"󱩕"
"󱩖"
"󰛨"
];
# on-scroll-up = "brightnessctl set 1%+";
# on-scroll-down = "brightnessctl set 1%-";
# smooth-scrolling-threshold = "2400";
tooltip-format = "Brightness {percent}%";
};
"network" = {
format-wifi = "<small>{essid}</small> {icon}";
min-length = 10;
fixed-width = 10;
format-ethernet = "󰈀";
format-disconnected = "󰤭";
tooltip-format = "{essid}";
interval = 1;
on-click = "ronema";
format-icons = [
"󰤯"
"󰤟"
"󰤢"
"󰤥"
"󰤨"
];
};
"bluetooth" = {
format = "{icon}";
format-alt = "bluetooth: {status}";
interval = 30;
format-icons = {
enabled = "";
disabled = "󰂲";
};
tooltip-format = "{status}";
};
"pulseaudio" = {
format = "{volume}% {icon} {format_source}";
format-muted = "󰖁";
format-source = "{volume}% ";
format-source-muted = "";
format-icons = {
headphone = "";
default = [
""
""
"󰕾"
];
};
# on-click = "pamixer -t";
# on-scroll-up = "pamixer -i 1";
# on-scroll-down = "pamixer -d 1";
# on-click-right = "exec pavucontrol";
# tooltip-format = "Volume {volume}%";
};
"battery" = {
# bat = "BAT0";
# adapter = "ADP0";
interval = 60;
states = {
warning = 20;
critical = 15;
};
max-length = 20;
format = "{icon}";
format-warning = "{icon}";
format-critical = "{icon}";
format-charging = "<span font-family='Font Awesome 6 Free'></span>";
format-plugged = "󰚥";
format-notcharging = "󰚥";
format-full = "󰂄";
format-alt = "<small>{capacity}%</small> ";
format-icons = [
"󱊡"
"󱊢"
"󱊣"
];
};
# "custom/weather" = {
# exec = "nix-shell ~/.config/waybar/scripts/weather.py";
# restart-interval = 300;
# return-type = "json";
# };
# "mpris" = {
# format = "{player_icon} {title}";
# format-paused = " {status_icon} <i>{title}</i>";
# max-length = 80;
# player-icons = {
# default = "▶";
# mpv = "🎵";
# };
# status-icons = {
# paused = "⏸";
# };
# };
# "custom/spotify" = {
# exec = "nix-shell ~/.config/waybar/scripts/mediaplayer.py --player youtube-music";
# format = " {}";
# return-type = "json";
# on-click = "playerctl play-pause";
# on-double-click-right = "playerctl next";
# on-scroll-down = "playerctl previous";
# };
# "custom/power-menu" = {
# format = "{percentage}Hz";
# on-click = "~/.config/hypr/scripts/screenHz.sh";
# return-type = "json";
# exec = "cat ~/.config/hypr/scripts/hz.json";
# interval = 1;
# tooltip = false;
# };
"custom/launcher" = {
format = "󱄅";
on-click = "rofi -show drun &";
};
"group/group-power" = {
orientation = "inherit";
drawer = {
transition-duration = 500;
children-class = "not-suspend";
transition-left-to-right = false;
};
modules = [
"custom/suspend"
"custom/power"
"custom/quit"
"custom/lock"
"custom/reboot"
];
};
"custom/suspend" = {
format = "󰒲";
tooltip = false;
on-click = "systemctl suspend";
};
"custom/quit" = {
format = "󰗼";
tooltip = false;
on-click = "hyprctl dispatch exit";
};
"custom/lock" = {
format = "󰍁";
tooltip = false;
on-click = "hyprlock";
};
"custom/reboot" = {
format = "󰜉";
tooltip = false;
on-click = "reboot";
};
"custom/power" = {
format = "";
tooltip = false;
on-click = "shutdown now";
};
# "custom/wallpaper" = {
# format = "󰸉";
# on-click = "bash ~/.config/waybar/scripts/changewallpaper.sh";
# };
};
};
style = ''
* {
/* `otf-font-awesome` is required to be installed for icons */
font-family: CaskaydiaCove NFM, JetBrainsMono Nerd Font, Iosevka Nerd Font;
font-size: 14px;
border: none;
border-radius: 0;
min-height: 0;
}
window#waybar {
background-color: rgba(26, 27, 38, 0.5);
color: #ffffff;
transition-property: background-color;
transition-duration: 0.5s;
}
window#waybar.hidden {
opacity: 0.1;
}
#window {
color: #64727d;
}
#clock,
#temperature,
#mpris,
#cpu,
#memory,
#custom-media,
#tray,
#mode,
#workspaces,
#idle_inhibitor,
#custom-launcher,
#custom-spotify,
#custom-weather,
#custom-suspend,
#group-power
#custom-power,
#custom-lock,
#custom-quit,
#custom-reboot,
#group-power.drawer
#custom-weather.severe,
#custom-weather.sunnyDay,
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.default {
color: #e5e5e5;
border-radius: 6px;
padding: 2px 10px;
background-color: #252733;
border-radius: 8px;
font-size: 16px;
margin-left: 4px;
margin-right: 4px;
margin-top: 8.5px;
margin-bottom: 8.5px;
}
#temperature{
color: #7a95c9;
}
#cpu {
color: #fb958b;
}
#memory {
color: #a1c999;
}
#workspaces button {
color: #7a95c9;
box-shadow: inset 0 -3px transparent;
padding-right: 3px;
padding-left: 4px;
margin-left: 0.1em;
margin-right: 0em;
transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.68);
}
#workspaces button.active {
color: #ecd3a0;
padding-left: 1px;
padding-right: 5px;
font-family: Iosevka Nerd Font;
font-weight: bold;
font-size: 12px;
margin-left: 0em;
margin-right: 0em;
transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.68);
}
/* If workspaces is the leftmost module, omit left margin */
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
/* If workspaces is the rightmost module, omit right margin */
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
#custom-launcher {
margin-left: 12px;
padding-right: 18px;
padding-left: 14px;
font-size: 22px;
color: #7a95c9;
margin-top: 8.5px;
margin-bottom: 8.5px;
}
#bluetooth,
#backlight,
#battery,
#pulseaudio,
#network {
background-color: #252733;
padding: 0em 2em;
font-size: 14px;
padding-left: 7.5px;
padding-right: 7.5px;
padding-top: 3px;
padding-bottom: 3px;
margin-top: 7px;
margin-bottom: 7px;
font-size: 20px;
}
#pulseaudio {
color: #81A1C1;
padding-left: 9px;
font-size: 16px;
}
#pulseaudio.muted {
color: #fb958b;
padding-left: 9px;
font-size: 16px;
}
#backlight {
color: #ecd3a0;
padding-right: 5px;
padding-left: 8px;
font-size: 21.2px;
}
#network {
padding-left: 0.2em;
color: #5E81AC;
border-radius: 8px 0px 0px 8px;
padding-left: 14px;
padding-right: 14px;
font-size: 20px;
}
#network.disconnected {
color: #fb958b;
}
#bluetooth {
padding-left: 0.2em;
color: #5E81AC;
border-radius: 8px 0px 0px 8px;
padding-left: 14px;
padding-right: 14px;
font-size: 20px;
}
#bluetooth.disconnected {
color: #fb958b;
}
#battery {
color: #8fbcbb;
border-radius: 0px 8px 8px 0px;
padding-right: 12px;
padding-left: 12px;
font-size: 22px;
}
#battery.critical,
#battery.warning,
#battery.full,
#battery.plugged {
color: #8fbcbb;
padding-left: 12px;
padding-right: 12px;
font-size: 22px;
}
#battery.charging {
font-size: 18px;
padding-right: 12px;
padding-left: 12px;
}
#battery.full,
#battery.plugged {
font-size: 22.5px;
padding-right: 12px;
}
@keyframes blink {
to {
background-color: rgba(30, 34, 42, 0.5);
color: #abb2bf;
}
}
#battery.warning {
color: #ecd3a0;
}
#battery.critical:not(.charging) {
color: #fb958b;
}
#custom-lock {
color: #ecd3a0;
padding: 0 15px 0 15px;
margin-left: 7px;
margin-top: 7px;
margin-bottom: 7px;
}
#clock {
color: #8a909e;
font-family: Iosevka Nerd Font;
font-weight: bold;
margin-top: 7px;
margin-bottom: 7px;
}
#language {
color: #8a909e;
font-family: Iosevka Nerd Font;
font-weight: bold;
border-radius : 8px 0 0 8px;
margin-top: 7px;
margin-bottom: 7px;
}
#custom-power-menu {
color: #8a909e;
margin-right: 12px;
border-radius: 8px;
padding: 0 6px 0 6.8px;
border-radius: 0 8px 8px 0;
margin-top: 7px;
margin-bottom: 7px;
}
#custom-wallpaper {
color: #8a909e;
padding-right: 7;
padding-left: 7;
}
#custom-wallpaper,
#language,
#custom-power-menu {
background-color: #252733;
padding: 0em 2em;
font-size: 17px;
padding-left: 7.5px;
padding-right: 7.5px;
padding-top: 3px;
padding-bottom: 3px;
margin-top: 7px;
margin-bottom: 7px;
}
tooltip {
font-family: Iosevka Nerd Font;
border-radius: 15px;
padding: 15px;
background-color: #1f232b;
}
tooltip label {
font-family: Iosevka Nerd Font;
padding: 5px;
}
label:focus {
background-color: #1f232b;
}
#tray {
margin-right: 8px;
margin-top: 7px;
margin-bottom: 7px;
font-size: 30px;
}
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
background-color: #eb4d4b;
}
#idle_inhibitor {
background-color: #242933;
}
#idle_inhibitor.activated {
background-color: #ecf0f1;
color: #2d3436;
}
#mpris,
#custom-spotify {
color: #abb2bf;
}
#custom-weather {
font-family: Iosevka Nerd Font;
font-size: 19px;
color: #8a909e;
}
#custom-weather.severe {
color: #eb937d;
}
#custom-weather.sunnyDay {
color: #c2ca76;
}
#custom-weather.clearNight {
color: #cad3f5;
}
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight {
color: #c2ddda;
}
#custom-weather.rainyDay,
#custom-weather.rainyNight {
color: #5aaca5;
}
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight {
color: #d6e7e5;
}
#custom-weather.default {
color: #dbd9d8;
}
@define-color macchiato-red #ab4c3e;
@define-color macchiato-blue #8aadf4;
@define-color macchiato-yellow #eed49f;
@define-color macchiato-mauve #c6a0f6;
#group-power {
margin-bottom: 0px;
}
#group-power .text-button {
font-weight: normal;
}
#group-power .drawer .text-button {
padding-bottom: 8.5px;
}
#custom-suspend { color: @macchiato-red; padding-bottom: 6px; }
#custom-power { color: @macchiato-red; }
#custom-reboot { color: @macchiato-yellow; }
#custom-lock { color: @macchiato-blue; }
#custom-quit { color: @macchiato-mauve; }
'';
};
}
Loading…
Cancel
Save

Powered by TurnKey Linux.