feat: rewrite to more nixy flakes
This commit is contained in:
@@ -1,2 +1 @@
|
|||||||
.env.nix
|
.env.nix
|
||||||
hardware-configuration.nix
|
|
||||||
|
|||||||
+90
-77
@@ -1,91 +1,104 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib ? pkgs.lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
let
|
||||||
concat = strings: builtins.concatStringsSep " " strings;
|
concat = strings: builtins.concatStringsSep " " strings;
|
||||||
wacom.src =
|
|
||||||
|
displays =
|
||||||
let
|
let
|
||||||
xsetwacom = "${pkgs.xf86_input_wacom}/bin/xsetwacom";
|
primary = "DP-2";
|
||||||
awk = lib.getExe pkgs.gawk;
|
secondary = "HDMI-0";
|
||||||
|
|
||||||
in
|
in
|
||||||
''
|
{
|
||||||
#!/bin/sh
|
inherit primary secondary;
|
||||||
|
xrandr = concat [
|
||||||
# Wait for X socket
|
"--output ${primary}"
|
||||||
for i in $(seq 30); do
|
"--mode 1920x1080"
|
||||||
[ -S /tmp/.X11-unix/X0 ] && break
|
"--pos 0x0"
|
||||||
sleep 0.5
|
"--rate 144"
|
||||||
done
|
"--primary"
|
||||||
|
""
|
||||||
# Just to be sure that the displays are ready...
|
"--output ${secondary}"
|
||||||
sleep 5
|
"--mode 1920x1080"
|
||||||
|
"--pos 1920x0"
|
||||||
export DISPLAY=:0
|
"--rate 144"
|
||||||
export XAUTHORITY="$HOME/.Xauthority"
|
];
|
||||||
|
};
|
||||||
for i in $(seq 10); do
|
|
||||||
if ${xsetwacom} list devices | grep -q Wacom; then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
|
|
||||||
stylus=$(${xsetwacom} list devices | ${awk} -F' \t' '/stylus/{print $1}')
|
|
||||||
|
|
||||||
if [ -z "$${stylus}" ]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
${xsetwacom} set "$stylus" MapToOutput HEAD-0
|
|
||||||
'';
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
services.xserver.videoDrivers = [ "nvidia" ];
|
inherit displays;
|
||||||
services.xserver.wacom.enable = true;
|
|
||||||
|
|
||||||
hardware.nvidia = {
|
nixosModule =
|
||||||
modesetting.enable = true;
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
lib ? pkgs.lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
wacom.src =
|
||||||
|
let
|
||||||
|
xsetwacom = "${pkgs.xf86_input_wacom}/bin/xsetwacom";
|
||||||
|
awk = lib.getExe pkgs.gawk;
|
||||||
|
in
|
||||||
|
''
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
open = true;
|
# Wait for X socket
|
||||||
|
for i in $(seq 30); do
|
||||||
|
[ -S /tmp/.X11-unix/X0 ] && break
|
||||||
|
sleep 0.5
|
||||||
|
done
|
||||||
|
|
||||||
nvidiaSettings = true;
|
# Just to be sure that the displays are ready...
|
||||||
|
sleep 5
|
||||||
|
|
||||||
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
export DISPLAY=:0
|
||||||
};
|
export XAUTHORITY="$HOME/.Xauthority"
|
||||||
|
|
||||||
home-manager.users.anton.xsession.profileExtra = concat [
|
for i in $(seq 10); do
|
||||||
"${lib.getExe pkgs.xrandr}"
|
if ${xsetwacom} list devices | grep -q Wacom; then
|
||||||
"${concat [
|
break
|
||||||
"--output DP-2"
|
fi
|
||||||
"--mode 1920x1080"
|
sleep 1
|
||||||
"--pos 0x0"
|
done
|
||||||
"--rate 144"
|
|
||||||
"--primary"
|
|
||||||
]}"
|
|
||||||
"${concat [
|
|
||||||
"--output HDMI-0"
|
|
||||||
"--mode 1920x1080"
|
|
||||||
"--pos 1920x0"
|
|
||||||
"--rate 144"
|
|
||||||
]}"
|
|
||||||
];
|
|
||||||
|
|
||||||
systemd.user.services.wacom = {
|
stylus=$(${xsetwacom} list devices | ${awk} -F' \t' '/stylus/{print $1}')
|
||||||
enable = true;
|
|
||||||
description = "Configure my Wacom (One) tablet";
|
if [ -z "$${stylus}" ]; then
|
||||||
wantedBy = [ "default.target" ];
|
exit 0
|
||||||
after = [ "graphical-session.target" ];
|
fi
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
${xsetwacom} set "$stylus" MapToOutput HEAD-0
|
||||||
ExecStart = pkgs.writeShellScript "wacom.sh" wacom.src;
|
'';
|
||||||
|
|
||||||
|
in
|
||||||
|
{
|
||||||
|
|
||||||
|
services.xserver.videoDrivers = [ "nvidia" ];
|
||||||
|
services.xserver.wacom.enable = true;
|
||||||
|
|
||||||
|
hardware.nvidia = {
|
||||||
|
modesetting.enable = true;
|
||||||
|
|
||||||
|
open = true;
|
||||||
|
|
||||||
|
nvidiaSettings = true;
|
||||||
|
|
||||||
|
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user.services.wacom = {
|
||||||
|
enable = true;
|
||||||
|
description = "Configure my Wacom (One) tablet";
|
||||||
|
wantedBy = [ "default.target" ];
|
||||||
|
after = [ "graphical-session.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
ExecStart = pkgs.writeShellScript "wacom.sh" wacom.src;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.udev.extraRules = ''
|
||||||
|
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="056a", TAG+="systemd", ENV{SYSTEMD_USER_WANTS}+="wacom.service"
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
services.udev.extraRules = ''
|
|
||||||
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="056a", TAG+="systemd", ENV{SYSTEMD_USER_WANTS}+="wacom.service"
|
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
|
|||||||
+55
-88
@@ -2,31 +2,20 @@
|
|||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
|
hostname,
|
||||||
|
env,
|
||||||
...
|
...
|
||||||
|
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
|
||||||
stateVersion = "25.05";
|
|
||||||
env = import ./.env.nix { inherit pkgs; };
|
|
||||||
|
|
||||||
mpkgs = import ./pkgs/default.nix {
|
|
||||||
config = {
|
|
||||||
system.stateVersion = stateVersion;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [ ./hardware-configuration.nix ] ++ lib.optional (env ? nixosModule) env.nixosModule;
|
||||||
# Include the results of the hardware scan.
|
|
||||||
./hardware-configuration.nix
|
|
||||||
(import (./. + "/${env.hostname}.nix"))
|
|
||||||
mpkgs.home-manager.module
|
|
||||||
];
|
|
||||||
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
nix.settings.experimental-features = [
|
||||||
nixpkgs.overlays = [
|
"nix-command"
|
||||||
(import "${fetchTarball "https://github.com/nix-community/fenix/archive/main.tar.gz"}/overlay.nix")
|
"flakes"
|
||||||
];
|
];
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
chromium
|
chromium
|
||||||
@@ -43,17 +32,10 @@ in
|
|||||||
fzf
|
fzf
|
||||||
ripgrep
|
ripgrep
|
||||||
|
|
||||||
(fenix.stable.withComponents [
|
# perhaps set up lsps through dev shells someday?
|
||||||
"rustc"
|
|
||||||
"cargo"
|
|
||||||
"clippy"
|
|
||||||
"rust-src"
|
|
||||||
"rustfmt"
|
|
||||||
"rust-analyzer"
|
|
||||||
])
|
|
||||||
nodejs_latest
|
nodejs_latest
|
||||||
prettierd
|
|
||||||
typescript-language-server
|
typescript-language-server
|
||||||
|
prettierd
|
||||||
pnpm
|
pnpm
|
||||||
nixd
|
nixd
|
||||||
nixfmt
|
nixfmt
|
||||||
@@ -70,8 +52,8 @@ in
|
|||||||
jetbrains-mono
|
jetbrains-mono
|
||||||
nerd-fonts.symbols-only
|
nerd-fonts.symbols-only
|
||||||
inter
|
inter
|
||||||
times-newer-roman
|
nimbus-roman
|
||||||
(mpkgs.font.monaco)
|
monaco
|
||||||
];
|
];
|
||||||
|
|
||||||
fonts.fontconfig = {
|
fonts.fontconfig = {
|
||||||
@@ -87,7 +69,7 @@ in
|
|||||||
"Inter"
|
"Inter"
|
||||||
"Noto Sans"
|
"Noto Sans"
|
||||||
];
|
];
|
||||||
serif = [ "Times Newer Roman" ];
|
serif = [ "Nimbus Roman" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -97,16 +79,13 @@ in
|
|||||||
|
|
||||||
windowManager.i3 = {
|
windowManager.i3 = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
extraPackages = with pkgs; [
|
extraPackages = with pkgs; [
|
||||||
rofi
|
rofi
|
||||||
i3status
|
i3status
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
displayManager.startx.enable = true;
|
displayManager.startx.enable = true;
|
||||||
|
|
||||||
# Configure keymap in X11
|
|
||||||
xkb = {
|
xkb = {
|
||||||
layout = "us";
|
layout = "us";
|
||||||
variant = "";
|
variant = "";
|
||||||
@@ -118,16 +97,14 @@ in
|
|||||||
greetd = {
|
greetd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
restart = false;
|
restart = false;
|
||||||
settings = {
|
settings.default_session = {
|
||||||
default_session = {
|
command = lib.concatStringsSep " " [
|
||||||
command = lib.concatStringsSep " " [
|
"${lib.getExe pkgs.tuigreet}"
|
||||||
"${lib.getExe pkgs.tuigreet}"
|
"--remember"
|
||||||
"--remember"
|
"--asterisks"
|
||||||
"--asterisks"
|
"--time"
|
||||||
"--time"
|
];
|
||||||
];
|
user = "greeter";
|
||||||
user = "greeter";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -136,10 +113,10 @@ in
|
|||||||
|
|
||||||
programs.fish.enable = true;
|
programs.fish.enable = true;
|
||||||
programs.bash.interactiveShellInit = ''
|
programs.bash.interactiveShellInit = ''
|
||||||
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] then
|
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] then
|
||||||
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
|
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
|
||||||
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
|
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# 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’.
|
||||||
@@ -153,14 +130,6 @@ in
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager = {
|
|
||||||
useUserPackages = true;
|
|
||||||
useGlobalPkgs = true;
|
|
||||||
sharedModules = [ ] ++ (mpkgs.home-manager.sharedModules);
|
|
||||||
users.anton = import ./home.nix;
|
|
||||||
};
|
|
||||||
|
|
||||||
# programs.home-manager.enable = true;
|
|
||||||
programs.dconf.enable = true;
|
programs.dconf.enable = true;
|
||||||
qt = {
|
qt = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -168,26 +137,25 @@ in
|
|||||||
style = "adwaita-dark";
|
style = "adwaita-dark";
|
||||||
};
|
};
|
||||||
|
|
||||||
hardware.graphics = {
|
hardware = {
|
||||||
enable = true;
|
graphics = {
|
||||||
extraPackages = with pkgs; [
|
enable = true;
|
||||||
intel-media-driver
|
extraPackages = with pkgs.unstable; [
|
||||||
intel-vaapi-driver
|
intel-media-driver
|
||||||
libvdpau-va-gl
|
intel-vaapi-driver
|
||||||
mesa
|
libvdpau-va-gl
|
||||||
];
|
(pkgs.mesa)
|
||||||
};
|
];
|
||||||
|
};
|
||||||
|
bluetooth = {
|
||||||
|
enable = true;
|
||||||
|
powerOnBoot = true;
|
||||||
|
|
||||||
hardware.bluetooth = {
|
settings.General = {
|
||||||
enable = true;
|
|
||||||
powerOnBoot = true;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
General = {
|
|
||||||
Experimental = true;
|
Experimental = true;
|
||||||
FastConnectable = true;
|
FastConnectable = true;
|
||||||
};
|
};
|
||||||
Policy.AutoEnable = true;
|
settings.Policy.AutoEnable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -198,26 +166,27 @@ in
|
|||||||
|
|
||||||
services.gnome.gnome-keyring.enable = true;
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
|
||||||
# Bootloader.
|
boot = {
|
||||||
boot.loader.systemd-boot = {
|
loader.systemd-boot = {
|
||||||
enable = true;
|
enable = true;
|
||||||
configurationLimit = 10;
|
configurationLimit = 10;
|
||||||
|
};
|
||||||
|
loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
kernelParams = [ "console=tty1" ];
|
||||||
|
kernelPackages = pkgs.unstable.linuxPackages_latest;
|
||||||
};
|
};
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
|
||||||
|
|
||||||
boot.kernelParams = [ "console=tty1" ];
|
networking = {
|
||||||
|
hostName = hostname;
|
||||||
|
|
||||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
firewall.enable = false;
|
||||||
|
networkmanager.enable = true;
|
||||||
networking.hostName = env.hostname;
|
};
|
||||||
networking.firewall.enable = false;
|
|
||||||
|
|
||||||
networking.networkmanager.enable = true;
|
|
||||||
|
|
||||||
time.timeZone = "Europe/Stockholm";
|
time.timeZone = "Europe/Stockholm";
|
||||||
|
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
|
||||||
i18n.extraLocaleSettings = {
|
i18n.extraLocaleSettings = {
|
||||||
LC_ADDRESS = "sv_SE.UTF-8";
|
LC_ADDRESS = "sv_SE.UTF-8";
|
||||||
LC_IDENTIFICATION = "sv_SE.UTF-8";
|
LC_IDENTIFICATION = "sv_SE.UTF-8";
|
||||||
@@ -230,13 +199,11 @@ in
|
|||||||
LC_TIME = "sv_SE.UTF-8";
|
LC_TIME = "sv_SE.UTF-8";
|
||||||
};
|
};
|
||||||
|
|
||||||
nix.settings.extra-experimental-features = [ "nix-command" ];
|
|
||||||
|
|
||||||
# This value determines the NixOS release from which the default
|
# This value determines the NixOS release from which the default
|
||||||
# settings for stateful data, like file locations and database versions
|
# settings for stateful data, like file locations and database versions
|
||||||
# on your system were taken. It‘s perfectly fine and recommended to leave
|
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||||||
# this value at the release version of the first install of this system.
|
# this value at the release version of the first install of this system.
|
||||||
# Before changing this value read the documentation for this option
|
# Before changing this value read the documentation for this option
|
||||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||||
system.stateVersion = stateVersion; # Did you read the comment?
|
system.stateVersion = "25.05"; # Did you read the comment?
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+118
@@ -0,0 +1,118 @@
|
|||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"home-manager": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772985280,
|
||||||
|
"narHash": "sha256-FdrNykOoY9VStevU4zjSUdvsL9SzJTcXt4omdEDZDLk=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "8f736f007139d7f70752657dff6a401a585d6cbc",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"ref": "release-25.11",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772822230,
|
||||||
|
"narHash": "sha256-yf3iYLGbGVlIthlQIk5/4/EQDZNNEmuqKZkQssMljuw=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "71caefce12ba78d84fe618cf61644dce01cf3a96",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-25.11",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-unstable": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772963539,
|
||||||
|
"narHash": "sha256-9jVDGZnvCckTGdYT53d/EfznygLskyLQXYwJLKMPsZs=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "9dcb002ca1690658be4a04645215baea8b95f31d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772963539,
|
||||||
|
"narHash": "sha256-9jVDGZnvCckTGdYT53d/EfznygLskyLQXYwJLKMPsZs=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "9dcb002ca1690658be4a04645215baea8b95f31d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"overlay": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"path": "./pkgs",
|
||||||
|
"type": "path"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"path": "./pkgs",
|
||||||
|
"type": "path"
|
||||||
|
},
|
||||||
|
"parent": []
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"home-manager": "home-manager",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
|
"overlay": "overlay",
|
||||||
|
"sops-nix": "sops-nix"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sops-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1773096132,
|
||||||
|
"narHash": "sha256-M3zEnq9OElB7zqc+mjgPlByPm1O5t2fbUrH3t/Hm5Ag=",
|
||||||
|
"owner": "Mic92",
|
||||||
|
"repo": "sops-nix",
|
||||||
|
"rev": "d1ff3b1034d5bab5d7d8086a7803c5a5968cd784",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Mic92",
|
||||||
|
"repo": "sops-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
description = "System configuration";
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
|
||||||
|
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
|
|
||||||
|
home-manager.url = "github:nix-community/home-manager/release-25.11";
|
||||||
|
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
|
sops-nix.url = "github:Mic92/sops-nix";
|
||||||
|
sops-nix.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
|
overlay.url = "path:./pkgs";
|
||||||
|
};
|
||||||
|
outputs =
|
||||||
|
{
|
||||||
|
self,
|
||||||
|
nixpkgs,
|
||||||
|
nixpkgs-unstable,
|
||||||
|
home-manager,
|
||||||
|
sops-nix,
|
||||||
|
overlay,
|
||||||
|
}@inputs:
|
||||||
|
let
|
||||||
|
systems = [
|
||||||
|
"aarch64-linux"
|
||||||
|
"i686-linux"
|
||||||
|
"x86_64-linux"
|
||||||
|
"aarch64-darwin"
|
||||||
|
"x86_64-darwin"
|
||||||
|
|
||||||
|
];
|
||||||
|
forAllSystems = nixpkgs.lib.genAttrs systems;
|
||||||
|
hostname = "blueplum";
|
||||||
|
env = import ./${hostname}.nix;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.nixfmt);
|
||||||
|
|
||||||
|
nixosConfigurations.blueplum = nixpkgs.lib.nixosSystem {
|
||||||
|
specialArgs = { inherit inputs hostname env; };
|
||||||
|
modules = [
|
||||||
|
{
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
overlay.overlays.default
|
||||||
|
(final: prev: {
|
||||||
|
unstable = import nixpkgs-unstable {
|
||||||
|
inherit (final) config;
|
||||||
|
inherit (final.stdenv.hostPlatform) system;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
||||||
|
./configuration.nix
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager = {
|
||||||
|
useGlobalPkgs = true;
|
||||||
|
useUserPackages = true;
|
||||||
|
users.anton = import ./home.nix;
|
||||||
|
sharedModules = import ./modules;
|
||||||
|
extraSpecialArgs = { inherit hostname env; };
|
||||||
|
};
|
||||||
|
}
|
||||||
|
sops-nix.nixosModules.sops
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "sd_mod" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/disk/by-uuid/2a269992-8aaa-4600-99b7-9020e8cd8cfc";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/D622-8FDF";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [ "fmask=0077" "dmask=0077" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/home/anton/mnt/sda" =
|
||||||
|
{ device = "/dev/disk/by-uuid/735e9ebf-71f7-49ce-a2d7-5e62a8820f2a";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [ ];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.eno1.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
||||||
@@ -1,19 +1,21 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
lib ? pkgs.lib,
|
lib,
|
||||||
|
env,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
mpkgs = import ./pkgs/default.nix { };
|
# env = import ./.env.nix { inherit pkgs; };
|
||||||
inherit (mpkgs.config) neovim fish;
|
|
||||||
|
|
||||||
env = import ./.env.nix { inherit pkgs; };
|
|
||||||
|
|
||||||
home = /home/anton;
|
home = /home/anton;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [ ];
|
imports = [
|
||||||
|
./home/vesktop.nix
|
||||||
|
./home/kitty.nix
|
||||||
|
./home/i3.nix
|
||||||
|
]
|
||||||
|
++ lib.optional (env ? homeManager) env.homeManager;
|
||||||
|
|
||||||
home.username = lib.mkDefault "anton";
|
home.username = lib.mkDefault "anton";
|
||||||
home.homeDirectory = lib.mkDefault home;
|
home.homeDirectory = lib.mkDefault home;
|
||||||
@@ -27,7 +29,6 @@ in
|
|||||||
vscode
|
vscode
|
||||||
godotPackages_4_5.godot
|
godotPackages_4_5.godot
|
||||||
|
|
||||||
neovim
|
|
||||||
btop
|
btop
|
||||||
xclip
|
xclip
|
||||||
tree
|
tree
|
||||||
@@ -36,9 +37,6 @@ in
|
|||||||
hyperfine
|
hyperfine
|
||||||
bat
|
bat
|
||||||
|
|
||||||
typst
|
|
||||||
tinymist
|
|
||||||
|
|
||||||
# required by spotify
|
# required by spotify
|
||||||
ffmpeg_4
|
ffmpeg_4
|
||||||
];
|
];
|
||||||
@@ -51,36 +49,42 @@ in
|
|||||||
package = pkgs.posy-cursors;
|
package = pkgs.posy-cursors;
|
||||||
};
|
};
|
||||||
|
|
||||||
xsession = {
|
|
||||||
enable = true;
|
|
||||||
windowManager.i3 = import ./home/i3.nix { inherit pkgs; };
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.btop.enable = true;
|
programs.btop.enable = true;
|
||||||
programs.fastfetch.enable = true;
|
programs.fastfetch.enable = true;
|
||||||
|
|
||||||
programs.kitty = import ./home/kitty.nix { inherit pkgs; };
|
programs.direnv = {
|
||||||
|
|
||||||
programs.fish = {
|
|
||||||
enable = true;
|
enable = true;
|
||||||
shellInit = ''
|
nix-direnv.enable = true;
|
||||||
set fish_function_path $fish_function_path ${fish}/functions
|
|
||||||
'';
|
|
||||||
interactiveShellInit = ''
|
|
||||||
source ${fish}/config.fish
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
programs.fish =
|
||||||
|
let
|
||||||
|
config = pkgs.configs.fish;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
shellInit = ''
|
||||||
|
set fish_function_path $fish_function_path ${config}/functions
|
||||||
|
'';
|
||||||
|
interactiveShellInit = ''
|
||||||
|
source ${config}/config.fish
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
# Fix Fish command not found issues
|
# Fix Fish command not found issues
|
||||||
programs.command-not-found.enable = false;
|
programs.command-not-found.enable = false;
|
||||||
|
|
||||||
programs.neovim = {
|
programs.neovim = {
|
||||||
enable = true;
|
enable = true;
|
||||||
defaultEditor = true;
|
defaultEditor = true;
|
||||||
extraConfig = ''
|
extraConfig =
|
||||||
set runtimepath+=${neovim}
|
let
|
||||||
source ${neovim}/init.lua
|
config = pkgs.configs.neovim;
|
||||||
'';
|
in
|
||||||
|
''
|
||||||
|
set runtimepath+=${config}
|
||||||
|
source ${config}/init.lua
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.rofi = {
|
programs.rofi = {
|
||||||
@@ -92,14 +96,14 @@ in
|
|||||||
programs.git = {
|
programs.git = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
signing =
|
# signing =
|
||||||
if (env.git or { }) ? signingKey then
|
# if (env.git or { }) ? signingKey then
|
||||||
{
|
# {
|
||||||
key = env.git.signingKey;
|
# key = env.git.signingKey;
|
||||||
signByDefault = true;
|
# signByDefault = true;
|
||||||
}
|
# }
|
||||||
else
|
# else
|
||||||
{ signByDefault = false; };
|
# { signByDefault = false; };
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
user.name = "Anton";
|
user.name = "Anton";
|
||||||
@@ -135,12 +139,12 @@ in
|
|||||||
|
|
||||||
programs.tetrio-desktop = {
|
programs.tetrio-desktop = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = mpkgs.tetrio.desktop;
|
package = pkgs.tetrio.desktop;
|
||||||
|
|
||||||
plus = {
|
plus = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = mpkgs.tetrio.plus;
|
package = pkgs.tetrio.plus;
|
||||||
skin.package = mpkgs.tetrio.skins.simple-connected;
|
skin.package = pkgs.tetrio.skins.simple-connected;
|
||||||
};
|
};
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
@@ -193,7 +197,7 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.vesktop = import ./home/vesktop.nix;
|
# programs.vesktop = pkgs.callPackage { };
|
||||||
|
|
||||||
services.gpg-agent = {
|
services.gpg-agent = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -217,5 +221,5 @@ in
|
|||||||
NIXPKGS_ALLOW_UNFREE = 1;
|
NIXPKGS_ALLOW_UNFREE = 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
home.stateVersion = mpkgs.system.stateVersion;
|
home.stateVersion = "25.11";
|
||||||
}
|
}
|
||||||
|
|||||||
+87
-92
@@ -1,106 +1,101 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
lib ? pkgs.lib,
|
lib,
|
||||||
|
env,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
mod = "Mod4";
|
mod = "Mod4";
|
||||||
|
displays = if env ? displays then env.displays else null;
|
||||||
wallpaper = pkgs.callPackage ../pkgs/wallpaper/default.nix { };
|
|
||||||
|
|
||||||
env = import /etc/nixos/.env.nix { inherit pkgs; };
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
enable = true;
|
xsession.windowManager.i3 = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
modifier = mod;
|
modifier = mod;
|
||||||
|
|
||||||
fonts = {
|
fonts = {
|
||||||
names = [ "Monaco" ];
|
names = [ "Monaco" ];
|
||||||
size = 8.0;
|
size = 8.0;
|
||||||
};
|
};
|
||||||
|
|
||||||
keybindings = lib.mkOptionDefault {
|
keybindings = lib.mkOptionDefault {
|
||||||
"${mod}+q" = "kill";
|
"${mod}+q" = "kill";
|
||||||
"${mod}+n" = "exec \"${
|
"${mod}+n" = "exec \"${
|
||||||
lib.concatStringsSep " " [
|
lib.concatStringsSep " " [
|
||||||
"${lib.getExe pkgs.rofi}"
|
"${lib.getExe pkgs.rofi}"
|
||||||
"-show combi"
|
"-show combi"
|
||||||
"-modes combi"
|
"-modes combi"
|
||||||
"-combi-modes drun,run"
|
"-combi-modes drun,run"
|
||||||
"-combi-display-format {text}"
|
"-combi-display-format {text}"
|
||||||
]
|
|
||||||
}\"";
|
|
||||||
"${mod}+Return" = "exec ${lib.getExe pkgs.kitty}";
|
|
||||||
|
|
||||||
"${mod}+Left" = "focus left";
|
|
||||||
"${mod}+Right" = "focus right";
|
|
||||||
"${mod}+Up" = "focus up";
|
|
||||||
"${mod}+Down" = "focus down";
|
|
||||||
|
|
||||||
"${mod}+Shift+Left" = "move left";
|
|
||||||
"${mod}+Shift+Right" = "move right";
|
|
||||||
"${mod}+Shift+Up" = "move up";
|
|
||||||
"${mod}+Shift+Down" = "move down";
|
|
||||||
|
|
||||||
"${mod}+Ctrl+Left" = "move workspace to output left";
|
|
||||||
"${mod}+Ctrl+Right" = "move workspace to output right";
|
|
||||||
|
|
||||||
"Print" = "exec ${lib.getExe pkgs.flameshot} gui";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
extraConfig =
|
|
||||||
let
|
|
||||||
background = lib.concatStringsSep " " [
|
|
||||||
"exec --no-startup-id"
|
|
||||||
(lib.concatStringsSep " " [
|
|
||||||
(lib.getExe pkgs.xwinwrap)
|
|
||||||
"-g 3820x1080"
|
|
||||||
"-s"
|
|
||||||
"-b"
|
|
||||||
"-ni"
|
|
||||||
"-sp"
|
|
||||||
"-ov"
|
|
||||||
"-nf"
|
|
||||||
])
|
|
||||||
"--"
|
|
||||||
(lib.concatStringsSep " " [
|
|
||||||
(lib.getExe pkgs.mpv)
|
|
||||||
"${wallpaper}/wallpaper.mov"
|
|
||||||
"-wid WID"
|
|
||||||
"--loop"
|
|
||||||
"--no-audio"
|
|
||||||
"--no-osc"
|
|
||||||
"--no-input-default-bindings"
|
|
||||||
"--no-input-cursor"
|
|
||||||
"--gpu-api=vulkan"
|
|
||||||
"--vo=gpu-next"
|
|
||||||
"--framedrop=vo"
|
|
||||||
"--profile=low-latency"
|
|
||||||
"--hwdec=auto"
|
|
||||||
])
|
|
||||||
];
|
|
||||||
displays =
|
|
||||||
if (env ? displays) then
|
|
||||||
lib.concatStringsSep "\n" [
|
|
||||||
"workspace 1 output ${env.displays.primary}"
|
|
||||||
(if (env.displays ? secondary) then "workspace 2 output ${env.displays.secondary}" else "")
|
|
||||||
"exec i3-msg focus output ${env.displays.primary}"
|
|
||||||
(
|
|
||||||
if (env.displays ? xrandr) then
|
|
||||||
"exec \"${lib.getExe pkgs.xrandr} ${env.displays.xrandr}\""
|
|
||||||
else
|
|
||||||
""
|
|
||||||
)
|
|
||||||
]
|
]
|
||||||
else
|
}\"";
|
||||||
"";
|
"${mod}+Return" = "exec ${lib.getExe pkgs.kitty}";
|
||||||
in
|
|
||||||
lib.concatStringsSep "\n" [
|
"${mod}+Left" = "focus left";
|
||||||
background
|
"${mod}+Right" = "focus right";
|
||||||
displays
|
"${mod}+Up" = "focus up";
|
||||||
];
|
"${mod}+Down" = "focus down";
|
||||||
|
|
||||||
|
"${mod}+Shift+Left" = "move left";
|
||||||
|
"${mod}+Shift+Right" = "move right";
|
||||||
|
"${mod}+Shift+Up" = "move up";
|
||||||
|
"${mod}+Shift+Down" = "move down";
|
||||||
|
|
||||||
|
"${mod}+Ctrl+Left" = "move workspace to output left";
|
||||||
|
"${mod}+Ctrl+Right" = "move workspace to output right";
|
||||||
|
|
||||||
|
"Print" = "exec ${lib.getExe pkgs.flameshot} gui";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig =
|
||||||
|
let
|
||||||
|
background = lib.concatStringsSep " " [
|
||||||
|
"exec --no-startup-id"
|
||||||
|
(lib.concatStringsSep " " [
|
||||||
|
(lib.getExe pkgs.xwinwrap)
|
||||||
|
"-g 3820x1080"
|
||||||
|
"-s"
|
||||||
|
"-b"
|
||||||
|
"-ni"
|
||||||
|
"-sp"
|
||||||
|
"-ov"
|
||||||
|
"-nf"
|
||||||
|
])
|
||||||
|
"--"
|
||||||
|
(lib.concatStringsSep " " [
|
||||||
|
(lib.getExe pkgs.mpv)
|
||||||
|
"${pkgs.wallpaper}/wallpaper.mov"
|
||||||
|
"-wid WID"
|
||||||
|
"--loop"
|
||||||
|
"--no-audio"
|
||||||
|
"--no-osc"
|
||||||
|
"--no-input-default-bindings"
|
||||||
|
"--no-input-cursor"
|
||||||
|
"--gpu-api=vulkan"
|
||||||
|
"--vo=gpu-next"
|
||||||
|
"--framedrop=vo"
|
||||||
|
"--profile=low-latency"
|
||||||
|
"--hwdec=auto"
|
||||||
|
])
|
||||||
|
];
|
||||||
|
displayConf =
|
||||||
|
if displays != null then
|
||||||
|
lib.concatStringsSep "\n" [
|
||||||
|
"workspace 1 output ${displays.primary}"
|
||||||
|
(if (displays ? secondary) then "workspace 2 output ${displays.secondary}" else "")
|
||||||
|
"exec i3-msg focus output ${displays.primary}"
|
||||||
|
(if (displays ? xrandr) then "exec \"${lib.getExe pkgs.xrandr} ${displays.xrandr}\"" else "")
|
||||||
|
]
|
||||||
|
else
|
||||||
|
"";
|
||||||
|
in
|
||||||
|
lib.concatStringsSep "\n" [
|
||||||
|
background
|
||||||
|
displayConf
|
||||||
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
+56
-46
@@ -1,49 +1,59 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
enable = true;
|
pkgs,
|
||||||
font = {
|
lib,
|
||||||
package = pkgs.jetbrains-mono;
|
...
|
||||||
name = "JetBrains Mono";
|
}:
|
||||||
size = 13;
|
|
||||||
|
let
|
||||||
|
makeTheme =
|
||||||
|
attrs: builtins.concatStringsSep "\n" (lib.mapAttrsToList (k: v: "${k} ${toString v}") attrs);
|
||||||
|
in
|
||||||
|
{
|
||||||
|
programs.kitty = {
|
||||||
|
enable = true;
|
||||||
|
font = {
|
||||||
|
package = pkgs.jetbrains-mono;
|
||||||
|
name = "JetBrains Mono";
|
||||||
|
size = 13;
|
||||||
|
};
|
||||||
|
extraConfig = makeTheme {
|
||||||
|
foreground = "#f2f4f8";
|
||||||
|
background = "#161616";
|
||||||
|
selection_foreground = "#f2f4f8";
|
||||||
|
selection_background = "#2a2a2a";
|
||||||
|
|
||||||
|
cursor = "#f2f4f8";
|
||||||
|
cursor_text_color = "#161616";
|
||||||
|
|
||||||
|
url_color = "#25be6a";
|
||||||
|
|
||||||
|
active_border_color = "#78a9ff";
|
||||||
|
inactive_border_color = "#535353";
|
||||||
|
bell_border_color = "#3ddbd9";
|
||||||
|
|
||||||
|
active_tab_foreground = "#0c0c0c";
|
||||||
|
active_tab_background = "#78a9ff";
|
||||||
|
inactive_tab_foreground = "#6e6f70";
|
||||||
|
inactive_tab_background = "#2a2a2a";
|
||||||
|
|
||||||
|
color0 = "#282828";
|
||||||
|
color8 = "#484848";
|
||||||
|
color1 = "#ee5396";
|
||||||
|
color9 = "#f16da6";
|
||||||
|
color2 = "#25be6a";
|
||||||
|
color10 = "#46c880";
|
||||||
|
color3 = "#ebcb8b";
|
||||||
|
color11 = "#f0d399";
|
||||||
|
color4 = "#78a9ff";
|
||||||
|
color12 = "#8cb6ff";
|
||||||
|
color5 = "#be95ff";
|
||||||
|
color13 = "#c8a5ff";
|
||||||
|
color6 = "#33b1ff";
|
||||||
|
color14 = "#52bdff";
|
||||||
|
color7 = "#dfdfe0";
|
||||||
|
color15 = "#e4e4e5";
|
||||||
|
color16 = "#3ddbd9";
|
||||||
|
color17 = "#ff7eb6";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
extraConfig = ''
|
|
||||||
foreground #f2f4f8
|
|
||||||
background #161616
|
|
||||||
selection_foreground #f2f4f8
|
|
||||||
selection_background #2a2a2a
|
|
||||||
|
|
||||||
cursor #f2f4f8
|
|
||||||
cursor_text_color #161616
|
|
||||||
|
|
||||||
url_color #25be6a
|
|
||||||
|
|
||||||
active_border_color #78a9ff
|
|
||||||
inactive_border_color #535353
|
|
||||||
bell_border_color #3ddbd9
|
|
||||||
|
|
||||||
active_tab_foreground #0c0c0c
|
|
||||||
active_tab_background #78a9ff
|
|
||||||
inactive_tab_foreground #6e6f70
|
|
||||||
inactive_tab_background #2a2a2a
|
|
||||||
|
|
||||||
color0 #282828
|
|
||||||
color8 #484848
|
|
||||||
color1 #ee5396
|
|
||||||
color9 #f16da6
|
|
||||||
color2 #25be6a
|
|
||||||
color10 #46c880
|
|
||||||
color3 #ebcb8b
|
|
||||||
color11 #f0d399
|
|
||||||
color4 #78a9ff
|
|
||||||
color12 #8cb6ff
|
|
||||||
color5 #be95ff
|
|
||||||
color13 #c8a5ff
|
|
||||||
color6 #33b1ff
|
|
||||||
color14 #52bdff
|
|
||||||
color7 #dfdfe0
|
|
||||||
color15 #e4e4e5
|
|
||||||
color16 #3ddbd9
|
|
||||||
color17 #ff7eb6
|
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
|
|||||||
+17
-2
@@ -1,6 +1,21 @@
|
|||||||
{ lib, ... }:
|
{
|
||||||
|
pkgs,
|
||||||
|
configs ? pkgs.configs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
{
|
{
|
||||||
enable = true;
|
programs.neovim = {
|
||||||
|
enable = true;
|
||||||
|
defaultEditor = true;
|
||||||
|
extraConfig =
|
||||||
|
let
|
||||||
|
config = configs.neovim;
|
||||||
|
in
|
||||||
|
''
|
||||||
|
set runtimepath+=${config}
|
||||||
|
source ${config}/init.lua
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
|
programs.vesktop = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
discordBranch = "stable";
|
discordBranch = "stable";
|
||||||
@@ -313,4 +316,5 @@
|
|||||||
WebContextMenus.enabled = true;
|
WebContextMenus.enabled = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
[
|
||||||
|
./tetrio
|
||||||
|
./initialFile.nix
|
||||||
|
]
|
||||||
@@ -0,0 +1,172 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib ? pkgs.lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (lib) mkOption types;
|
||||||
|
|
||||||
|
cfg = lib.filterAttrs (n: f: f.enable) config.home.initialFile;
|
||||||
|
home = config.home.homeDirectory;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
home.initialFile = mkOption {
|
||||||
|
type = types.attrsOf (
|
||||||
|
types.submodule (
|
||||||
|
{ name, config, ... }:
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
};
|
||||||
|
target = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
apply =
|
||||||
|
path:
|
||||||
|
let
|
||||||
|
absPath = if lib.hasPrefix "/" path then path else "${home}/${path}";
|
||||||
|
in
|
||||||
|
lib.removePrefix (home + "/") absPath;
|
||||||
|
description = "Path to target file relative to home directory";
|
||||||
|
default = "/homeless-shelter/home";
|
||||||
|
};
|
||||||
|
text = mkOption {
|
||||||
|
type = types.nullOr types.lines;
|
||||||
|
description = "Text of the file, otherwise copies .source file.";
|
||||||
|
default = null;
|
||||||
|
};
|
||||||
|
source = mkOption {
|
||||||
|
type = types.path;
|
||||||
|
description = "Path of file whose source to copy";
|
||||||
|
};
|
||||||
|
mode = mkOption {
|
||||||
|
type = types.nullOr types.str;
|
||||||
|
description = "File mode to apply to target file (sourced from .source / .text if not specified)";
|
||||||
|
default = null;
|
||||||
|
};
|
||||||
|
dir_mode = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
description = "File mode to apply to directories";
|
||||||
|
default = "0755";
|
||||||
|
};
|
||||||
|
recursive = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
description = "Whether or not to recursively copy .source as a directory instead of as a file";
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
force = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
description = "Whether to unconditionally replace the target file, even if it already exists.";
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = {
|
||||||
|
target = lib.mkDefault name;
|
||||||
|
source = lib.mkIf (config.text != null) (
|
||||||
|
lib.mkDefault (
|
||||||
|
pkgs.writeTextFile {
|
||||||
|
inherit (config) text;
|
||||||
|
name = lib.hm.strings.storeFileName name;
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
description = "Attribute set of files to write into the user home (if they don't already exist).";
|
||||||
|
default = { };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
assertions = [
|
||||||
|
(
|
||||||
|
let
|
||||||
|
dups = lib.attrNames (
|
||||||
|
lib.filterAttrs (n: v: v > 1) (
|
||||||
|
lib.foldAttrs (acc: v: acc + v) 0 (lib.mapAttrsToList (n: v: { ${v.target} = 1; }) cfg)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
dupsStr = lib.concatStringsSep ", " dups;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
assertion = dups == [ ];
|
||||||
|
message = ''
|
||||||
|
Conflicting managed target files: ${dupsStr}
|
||||||
|
|
||||||
|
This may happen, for example, if you have a configuration similar to
|
||||||
|
|
||||||
|
home.initialFile = {
|
||||||
|
conflict1 = { source = ./foo.nix; target = "baz"; };
|
||||||
|
conflict2 = { source = ./bar.nix; target = "baz"; };
|
||||||
|
}'';
|
||||||
|
}
|
||||||
|
)
|
||||||
|
];
|
||||||
|
|
||||||
|
home.activation.copyInitialFiles = lib.hm.dag.entryAfter [ "writeBoundary" ] (
|
||||||
|
let
|
||||||
|
homeArg = lib.escapeShellArg home;
|
||||||
|
in
|
||||||
|
''
|
||||||
|
function copyFile() {
|
||||||
|
local source="$1"
|
||||||
|
local targetRel="$2"
|
||||||
|
local mode="$3"
|
||||||
|
local dirMode="$4"
|
||||||
|
local recursive="$5"
|
||||||
|
local force="$6"
|
||||||
|
|
||||||
|
local target="${homeArg}/$targetRel"
|
||||||
|
|
||||||
|
if [[ -e "$target" && "$force" != "true" ]]; then
|
||||||
|
verboseEcho "Skipping existing $target"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
run mkdir -p "$(dirname "$target")"
|
||||||
|
|
||||||
|
if [[ -d "$source" ]]; then
|
||||||
|
if [[ "$recursive" != "true" ]]; then
|
||||||
|
errorEcho "Source '$source' is a directory but recursive=false"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
run rm -rf "$target"
|
||||||
|
run cp -r "$source" "$target"
|
||||||
|
else
|
||||||
|
if [[ -e "$target" && "$force" == "true" ]]; then
|
||||||
|
run rm -f "$target"
|
||||||
|
fi
|
||||||
|
run cp "$source" "$target"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n "$mode" ]]; then
|
||||||
|
if [[ -d "$target" && "$recursive" == "true" ]]; then
|
||||||
|
run chmod "$dirMode" "$target"
|
||||||
|
find "$target" -type f -exec chmod "$mode" {} +
|
||||||
|
else
|
||||||
|
run chmod "$mode" "$target"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
''
|
||||||
|
+ lib.concatMapStrings (
|
||||||
|
v:
|
||||||
|
let
|
||||||
|
src = lib.escapeShellArg (toString v.source);
|
||||||
|
tgt = lib.escapeShellArg v.target;
|
||||||
|
mode = if v.mode == null then "''" else lib.escapeShellArg v.mode;
|
||||||
|
in
|
||||||
|
''
|
||||||
|
copyFile ${src} ${tgt} ${mode} ${lib.escapeShellArg v.dir_mode} ${lib.trivial.boolToString v.recursive} ${lib.trivial.boolToString v.force}
|
||||||
|
''
|
||||||
|
) (lib.attrValues cfg)
|
||||||
|
);
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
stdenv,
|
||||||
|
lib,
|
||||||
|
leveldb-cli,
|
||||||
|
value,
|
||||||
|
origin ? "https://tetr.io",
|
||||||
|
key ? "userConfig",
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
src = ./.;
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
pname = "tetrio-leveldb";
|
||||||
|
version = "1";
|
||||||
|
|
||||||
|
inherit src;
|
||||||
|
|
||||||
|
nativeBuildInputs = [ leveldb-cli ];
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
runHook preBuild
|
||||||
|
|
||||||
|
${lib.getExe leveldb-cli} \
|
||||||
|
$out \
|
||||||
|
${lib.escapeShellArg origin} \
|
||||||
|
${lib.escapeShellArg key} \
|
||||||
|
${lib.escapeShellArg (builtins.toJSON value)}
|
||||||
|
|
||||||
|
runHook postBuild
|
||||||
|
'';
|
||||||
|
}
|
||||||
+11
-35
@@ -1,32 +1,22 @@
|
|||||||
{
|
final: prev:
|
||||||
pkgs ? import <nixpkgs> { config.allowUnfree = true; },
|
|
||||||
config ? (import <nixpkgs/nixos> { }).config,
|
|
||||||
fetchzip ? pkgs.fetchzip,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
let
|
||||||
system = {
|
fetchzip = prev.fetchzip;
|
||||||
stateVersion = config.system.stateVersion;
|
use = path: prev.callPackage (import path) { pkgs = prev; };
|
||||||
};
|
|
||||||
use = path: pkgs.callPackage (import path) { inherit pkgs; };
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
inherit system;
|
wallpaper = use ./wallpaper;
|
||||||
|
tetrio.desktop = use ./tetrio;
|
||||||
wallpaper = use ./wallpaper/default.nix;
|
|
||||||
tetrio.desktop = use ./tetrio/default.nix;
|
|
||||||
tetrio.plus =
|
tetrio.plus =
|
||||||
let
|
let
|
||||||
repo = {
|
repo = {
|
||||||
owner = "UniQMG";
|
owner = "UniQMG";
|
||||||
name = "tetrio-plus";
|
name = "tetrio-plus";
|
||||||
job = "11675178434";
|
job = "11675178434";
|
||||||
hash = "sha256-j3ACcnT64eMQtWYDGOE2oGXpnN5EUqk+lyV6ARBEtU8=";
|
|
||||||
};
|
};
|
||||||
src = fetchzip {
|
src = fetchzip {
|
||||||
url = "https://gitlab.com/${repo.owner}/${repo.name}/-/jobs/${repo.job}/artifacts/raw/app.asar.zip";
|
url = "https://gitlab.com/${repo.owner}/${repo.name}/-/jobs/${repo.job}/artifacts/raw/app.asar.zip";
|
||||||
hash = repo.hash;
|
hash = "sha256-j3ACcnT64eMQtWYDGOE2oGXpnN5EUqk+lyV6ARBEtU8=";
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
"${src}/app.asar";
|
"${src}/app.asar";
|
||||||
@@ -34,25 +24,11 @@ in
|
|||||||
simple-connected = use ./tetrio/skins/simple-connected.nix;
|
simple-connected = use ./tetrio/skins/simple-connected.nix;
|
||||||
};
|
};
|
||||||
|
|
||||||
leveldb-cli = use ./leveldb/default.nix;
|
leveldb-cli = use ./leveldb;
|
||||||
|
|
||||||
config.neovim = use ./neovim/default.nix;
|
configs.neovim = use ./neovim;
|
||||||
config.fish = use ./fish/default.nix;
|
configs.fish = use ./fish;
|
||||||
|
|
||||||
font.monaco = use ./monaco-font/default.nix;
|
nimbus-roman = use ./nimbus;
|
||||||
|
monaco = use ./monaco-font;
|
||||||
home-manager = {
|
|
||||||
module =
|
|
||||||
let
|
|
||||||
home-manager = fetchzip {
|
|
||||||
url = "https://github.com/nix-community/home-manager/archive/master.tar.gz";
|
|
||||||
hash = "sha256-UZjPc/d5XRxvjDbk4veAO4XFdvx6BUum2l40V688Xq8=";
|
|
||||||
};
|
|
||||||
in
|
|
||||||
import "${home-manager}/nixos";
|
|
||||||
sharedModules = [
|
|
||||||
./home-manager/initialFile.nix
|
|
||||||
./tetrio/module.nix
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,180 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
stdenv,
|
|
||||||
fetchFromGitHub,
|
|
||||||
makeWrapper,
|
|
||||||
makeDesktopItem,
|
|
||||||
nodejs,
|
|
||||||
electron_39,
|
|
||||||
element-web,
|
|
||||||
sqlcipher,
|
|
||||||
callPackage,
|
|
||||||
typescript,
|
|
||||||
# command line arguments which are always set
|
|
||||||
commandLineArgs ? "",
|
|
||||||
yarnConfigHook,
|
|
||||||
yarnBuildHook,
|
|
||||||
fetchYarnDeps,
|
|
||||||
asar,
|
|
||||||
copyDesktopItems,
|
|
||||||
darwin,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
pinData = import ./element-desktop-pin.nix;
|
|
||||||
inherit (pinData.hashes) desktopSrcHash desktopYarnHash;
|
|
||||||
executableName = "element-desktop";
|
|
||||||
electron = electron_39;
|
|
||||||
seshat = callPackage ./seshat { };
|
|
||||||
in
|
|
||||||
stdenv.mkDerivation (
|
|
||||||
finalAttrs:
|
|
||||||
removeAttrs pinData [ "hashes" ]
|
|
||||||
// {
|
|
||||||
pname = "element-desktop";
|
|
||||||
name = "${finalAttrs.pname}-${finalAttrs.version}";
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "element-hq";
|
|
||||||
repo = "element-desktop";
|
|
||||||
rev = "v${finalAttrs.version}";
|
|
||||||
hash = desktopSrcHash;
|
|
||||||
};
|
|
||||||
|
|
||||||
offlineCache = fetchYarnDeps {
|
|
||||||
yarnLock = finalAttrs.src + "/yarn.lock";
|
|
||||||
hash = desktopYarnHash;
|
|
||||||
};
|
|
||||||
|
|
||||||
env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
|
|
||||||
|
|
||||||
nativeBuildInputs = [
|
|
||||||
asar
|
|
||||||
copyDesktopItems
|
|
||||||
nodejs
|
|
||||||
makeWrapper
|
|
||||||
typescript
|
|
||||||
yarnConfigHook
|
|
||||||
yarnBuildHook
|
|
||||||
]
|
|
||||||
++ lib.optionals stdenv.hostPlatform.isDarwin [ darwin.autoSignDarwinBinariesHook ];
|
|
||||||
|
|
||||||
inherit seshat;
|
|
||||||
|
|
||||||
# Only affects unused scripts in $out/share/element/electron/scripts. Also
|
|
||||||
# breaks because there are some `node`-scripts with a `npx`-shebang and
|
|
||||||
# this shouldn't be in the closure just for unused scripts.
|
|
||||||
dontPatchShebangs = true;
|
|
||||||
|
|
||||||
postPatch = ''
|
|
||||||
cp -r ${electron.dist} electron-dist
|
|
||||||
chmod -R u+w electron-dist
|
|
||||||
|
|
||||||
substituteInPlace package.json \
|
|
||||||
--replace-fail \
|
|
||||||
' electron-builder",' \
|
|
||||||
' electron-builder --dir -c.electronDist=electron-dist -c.electronVersion=${electron.version} -c.mac.identity=null",'
|
|
||||||
|
|
||||||
# `@electron/fuses` tries to run `codesign` and fails. Disable and use autoSignDarwinBinariesHook instead
|
|
||||||
substituteInPlace ./electron-builder.ts \
|
|
||||||
--replace-fail "resetAdHocDarwinSignature:" "// resetAdHocDarwinSignature:"
|
|
||||||
|
|
||||||
# Need to disable asar integrity check to copy in native seshat files, see postBuild phase
|
|
||||||
substituteInPlace ./electron-builder.ts \
|
|
||||||
--replace-fail "enableEmbeddedAsarIntegrityValidation: true" "enableEmbeddedAsarIntegrityValidation: false"
|
|
||||||
'';
|
|
||||||
|
|
||||||
preBuild = ''
|
|
||||||
# Apply upstream patch
|
|
||||||
# Can be removed if upstream removes patches/@types+auto-launch+5.0.5.patch introduced in
|
|
||||||
# https://github.com/element-hq/element-desktop/commit/5e882f8e08d58bf9663c8e3ab33885bf7b3709de
|
|
||||||
node ./node_modules/patch-package/index.js
|
|
||||||
'';
|
|
||||||
|
|
||||||
postBuild = ''
|
|
||||||
# relative path to app.asar differs on Linux and MacOS
|
|
||||||
packed=$(find ./dist -name app.asar)
|
|
||||||
asar extract "$packed" tmp-app
|
|
||||||
|
|
||||||
# linking here leads to Error: tmp-app/node_modules/matrix-seshat: file ... links out of the package
|
|
||||||
cp -r $seshat tmp-app/node_modules/matrix-seshat
|
|
||||||
|
|
||||||
asar pack tmp-app "$packed"
|
|
||||||
'';
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
runHook preInstall
|
|
||||||
''
|
|
||||||
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
|
|
||||||
mkdir -p "$out/Applications" "$out/bin"
|
|
||||||
mv dist/mac*/Element.app "$out/Applications"
|
|
||||||
|
|
||||||
ln -s '${element-web}' "$out/Applications/Element.app/Contents/Resources/webapp"
|
|
||||||
|
|
||||||
wrapProgram "$out/Applications/Element.app/Contents/MacOS/Element" \
|
|
||||||
--add-flags ${lib.escapeShellArg commandLineArgs}
|
|
||||||
|
|
||||||
makeWrapper "$out/Applications/Element.app/Contents/MacOS/Element" "$out/bin/${executableName}"
|
|
||||||
''
|
|
||||||
+ lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
|
|
||||||
mkdir -p "$out/bin" "$out/share"
|
|
||||||
|
|
||||||
cp -a dist/*-unpacked/resources $out/share/element
|
|
||||||
|
|
||||||
ln -s '${element-web}' "$out/share/element/webapp"
|
|
||||||
|
|
||||||
# icon, used in makeDesktopItem
|
|
||||||
mkdir -p "$out/share/icons/hicolor/512x512/apps"
|
|
||||||
ln -s "$out/share/element/build/icon.png" "$out/share/icons/hicolor/512x512/apps/element.png"
|
|
||||||
|
|
||||||
# executable wrapper
|
|
||||||
# LD_PRELOAD workaround for sqlcipher not found: https://github.com/matrix-org/seshat/issues/102
|
|
||||||
makeWrapper '${lib.getExe electron}' "$out/bin/${executableName}" \
|
|
||||||
--set LD_PRELOAD ${sqlcipher}/lib/libsqlcipher.so \
|
|
||||||
--add-flags "$out/share/element/app.asar" \
|
|
||||||
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \
|
|
||||||
--add-flags ${lib.escapeShellArg commandLineArgs}
|
|
||||||
''
|
|
||||||
+ ''
|
|
||||||
runHook postInstall
|
|
||||||
'';
|
|
||||||
|
|
||||||
# The desktop item properties should be kept in sync with data from upstream:
|
|
||||||
# https://github.com/element-hq/element-desktop/blob/develop/package.json
|
|
||||||
desktopItems = [
|
|
||||||
(makeDesktopItem {
|
|
||||||
name = "element-desktop";
|
|
||||||
exec = "${executableName} %u";
|
|
||||||
icon = "element";
|
|
||||||
desktopName = "Element";
|
|
||||||
genericName = "Matrix Client";
|
|
||||||
comment = finalAttrs.meta.description;
|
|
||||||
categories = [
|
|
||||||
"Network"
|
|
||||||
"InstantMessaging"
|
|
||||||
"Chat"
|
|
||||||
];
|
|
||||||
startupWMClass = "Element";
|
|
||||||
mimeTypes = [
|
|
||||||
"x-scheme-handler/element"
|
|
||||||
"x-scheme-handler/io.element.desktop"
|
|
||||||
];
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
passthru = {
|
|
||||||
# run with: nix-shell ./maintainers/scripts/update.nix --argstr package element-desktop
|
|
||||||
updateScript = ./update.sh;
|
|
||||||
};
|
|
||||||
|
|
||||||
meta = {
|
|
||||||
description = "Feature-rich client for Matrix.org";
|
|
||||||
homepage = "https://element.io/";
|
|
||||||
changelog = "https://github.com/element-hq/element-desktop/blob/v${finalAttrs.version}/CHANGELOG.md";
|
|
||||||
license = lib.licenses.agpl3Plus;
|
|
||||||
teams = [ lib.teams.matrix ];
|
|
||||||
inherit (electron.meta) platforms;
|
|
||||||
mainProgram = "element-desktop";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
)
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"version" = "1.12.10";
|
|
||||||
"hashes" = {
|
|
||||||
"desktopSrcHash" = "sha256-2LQBT3+2JTR3XHO3DynOp8cw2m2SB/mGH01e3SFD/IM=";
|
|
||||||
"desktopYarnHash" = "sha256-QIzuVKmUS4tqXAzhpfLZOp51kLbfC1M2nrff8e+sdg4=";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
stdenv,
|
|
||||||
rustPlatform,
|
|
||||||
fetchFromGitHub,
|
|
||||||
sqlcipher,
|
|
||||||
nodejs,
|
|
||||||
python3,
|
|
||||||
yarn,
|
|
||||||
fixup-yarn-lock,
|
|
||||||
fetchYarnDeps,
|
|
||||||
removeReferencesTo,
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
pinData = lib.importJSON ./pin.json;
|
|
||||||
|
|
||||||
in
|
|
||||||
rustPlatform.buildRustPackage rec {
|
|
||||||
pname = "seshat-node";
|
|
||||||
inherit (pinData) version cargoHash;
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "matrix-org";
|
|
||||||
repo = "seshat";
|
|
||||||
rev = version;
|
|
||||||
hash = pinData.srcHash;
|
|
||||||
};
|
|
||||||
|
|
||||||
sourceRoot = "${src.name}/seshat-node/native";
|
|
||||||
|
|
||||||
nativeBuildInputs = [
|
|
||||||
nodejs
|
|
||||||
python3
|
|
||||||
yarn
|
|
||||||
fixup-yarn-lock
|
|
||||||
];
|
|
||||||
buildInputs = [ sqlcipher ];
|
|
||||||
|
|
||||||
npm_config_nodedir = nodejs;
|
|
||||||
|
|
||||||
yarnOfflineCache = fetchYarnDeps {
|
|
||||||
yarnLock = src + "/seshat-node/yarn.lock";
|
|
||||||
sha256 = pinData.yarnHash;
|
|
||||||
};
|
|
||||||
|
|
||||||
buildPhase = ''
|
|
||||||
runHook preBuild
|
|
||||||
cd ..
|
|
||||||
chmod u+w . ./yarn.lock
|
|
||||||
export HOME=$PWD/tmp
|
|
||||||
mkdir -p $HOME
|
|
||||||
yarn config --offline set yarn-offline-mirror $yarnOfflineCache
|
|
||||||
fixup-yarn-lock yarn.lock
|
|
||||||
yarn install --offline --frozen-lockfile --ignore-platform --ignore-scripts --no-progress --non-interactive
|
|
||||||
patchShebangs node_modules/
|
|
||||||
node_modules/.bin/neon build --release -- --target ${stdenv.hostPlatform.rust.rustcTarget} -Z unstable-options --out-dir target/release
|
|
||||||
runHook postBuild
|
|
||||||
'';
|
|
||||||
|
|
||||||
doCheck = false;
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
runHook preInstall
|
|
||||||
shopt -s extglob
|
|
||||||
rm -rf native/!(index.node)
|
|
||||||
rm -rf node_modules $HOME
|
|
||||||
cp -r . $out
|
|
||||||
${removeReferencesTo}/bin/remove-references-to -t ${stdenv.cc.cc} $out/native/index.node
|
|
||||||
runHook postInstall
|
|
||||||
'';
|
|
||||||
|
|
||||||
disallowedReferences = [ stdenv.cc.cc ];
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"version": "2.3.3",
|
|
||||||
"srcHash": "sha256-HmKHWFoO8TQ9S/RcJnJ3h85/2uSkqGrgLnX82hkux4Q=",
|
|
||||||
"yarnHash": "1cbkv8ap7f8vxl5brzqb86d2dyxg555sz67cldrp0vgnk8sq6ibp",
|
|
||||||
"cargoHash": "sha256-klrFk0gpqQu/9MzLEYMNqEBETZMXtZJX67Sm5ZqyHfE=="
|
|
||||||
}
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
#!/usr/bin/env nix-shell
|
|
||||||
#!nix-shell -I nixpkgs=../../../../../../ -i bash -p wget prefetch-yarn-deps yarn nix-prefetch nix-prefetch-github
|
|
||||||
|
|
||||||
if [ "$#" -gt 1 ] || [[ "$1" == -* ]]; then
|
|
||||||
echo "Regenerates packaging data for the seshat package."
|
|
||||||
echo "Usage: $0 [git release tag]"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
version="$1"
|
|
||||||
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
if [ -z "$version" ]; then
|
|
||||||
version="$(wget -O- "https://api.github.com/repos/matrix-org/seshat/tags" | jq -r '.[] | .name' | sort --version-sort | tail -1)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
SRC="https://raw.githubusercontent.com/matrix-org/seshat/$version"
|
|
||||||
|
|
||||||
tmpdir=$(mktemp -d)
|
|
||||||
trap 'rm -rf "$tmpdir"' EXIT
|
|
||||||
|
|
||||||
pushd $tmpdir
|
|
||||||
wget "$SRC/seshat-node/yarn.lock"
|
|
||||||
yarn_hash=$(prefetch-yarn-deps yarn.lock)
|
|
||||||
popd
|
|
||||||
|
|
||||||
src_hash=$(nix-prefetch-github matrix-org seshat --rev ${version} | jq -r .hash)
|
|
||||||
|
|
||||||
cat > pin.json << EOF
|
|
||||||
{
|
|
||||||
"version": "$version",
|
|
||||||
"srcHash": "$src_hash",
|
|
||||||
"yarnHash": "$yarn_hash",
|
|
||||||
"cargoHash": "0000000000000000000000000000000000000000000000000000"
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cargo_hash=$(nix-prefetch "{ sha256 }: (import ../../../../../.. {}).element-desktop.seshat.cargoDeps")
|
|
||||||
|
|
||||||
cat > pin.json << EOF
|
|
||||||
{
|
|
||||||
"version": "$version",
|
|
||||||
"srcHash": "$src_hash",
|
|
||||||
"yarnHash": "$yarn_hash",
|
|
||||||
"cargoHash": "$cargo_hash"
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
@@ -1,10 +1,6 @@
|
|||||||
{
|
{ stdenv, ... }:
|
||||||
pkgs ? import <nixpkgs> { },
|
|
||||||
lib ? pkgs.lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
pkgs.stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "fish-config";
|
pname = "fish-config";
|
||||||
version = "1.0";
|
version = "1.0";
|
||||||
|
|
||||||
@@ -14,9 +10,9 @@ pkgs.stdenv.mkDerivation rec {
|
|||||||
};
|
};
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out
|
mkdir -p $out
|
||||||
cp -r ${src}/* $out/
|
cp -r ${src}/* $out/
|
||||||
'';
|
'';
|
||||||
|
|
||||||
dontUnpack = true;
|
dontUnpack = true;
|
||||||
dontBuild = true;
|
dontBuild = true;
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
description = "Pkgs overlay";
|
||||||
|
|
||||||
|
inputs = { };
|
||||||
|
outputs =
|
||||||
|
{ self, ... }:
|
||||||
|
{
|
||||||
|
overlays.default = final: prev: (import ./default.nix final prev);
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,12 +1,10 @@
|
|||||||
{
|
{ buildGoModule, fetchFromGitHub, ... }:
|
||||||
pkgs ? import <nixpkgs> { },
|
|
||||||
}:
|
|
||||||
|
|
||||||
pkgs.buildGoModule {
|
buildGoModule {
|
||||||
name = "leveldb-cli";
|
name = "leveldb-cli";
|
||||||
version = "1.0.0";
|
version = "1.0.0";
|
||||||
|
|
||||||
src = pkgs.fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "theblueplum";
|
owner = "theblueplum";
|
||||||
repo = "leveldb-cli";
|
repo = "leveldb-cli";
|
||||||
rev = "main";
|
rev = "main";
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
{
|
{ stdenv, lib, ... }:
|
||||||
pkgs ? import <nixpkgs> { system = builtins.currentSystem; },
|
|
||||||
lib ? pkgs.lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
pkgs.stdenv.mkDerivation rec {
|
stdenv.mkDerivation {
|
||||||
pname = "monaco-font";
|
pname = "monaco-font";
|
||||||
version = "1.0";
|
version = "1.0";
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user